C - Funktion
-
Hey all,
Ich habe vor kurzem aus nInteresse mit C angefangen und meine ersten Programme geschrieben( mit scanf und printf ). Diese Programme haben auch nach kurzer Fehlersuche funktioniert.
Nun möchte ich jedoch eine 2. Funktion in das Programm einbinden aber ich bekomme
bei meinem Script 2 Fehlermeldungen ausgespuckt.Der \1:
#include <stdio.h>
int main ()
{
int var1, var2, ergebnis, ergebnis2;printf("Bitte geben sie 2 Zahlen zwischen 0 und 100 ein");
scanf("%d %d", &var1, &var2);ergebnis = var1 + var2;
ergebnis2 = var1 * var2;printf("Die Summe der Zahlen lautet :%d \n", ergebnis);
printf("Das Produkt der Zahlen lautet :%d \n", ergebnis2);int Rechnung;
return 0;
}
int Rechnung (int ergebnis, int ergebnis2)
{
int z1, z2;printf("Hier werden Summe und Produkt multipliziert und Summiert \n");
z1 = ergebnis + ergebnis2;
z2 = ergebnis * ergebnis2;printf("Die Summe der Ergebnisse ist %d \n", z1);
printf("Das Produkt der beiden Ergebnisse ist %d \n ", z2);return main;
}
Die Fehlermeldungen:
C:\Users\Ströter\Desktop\Train1\Der kleine Rechner.c(16): warning #2114: Local 'Rechnung' is not referenced.
C:\Users\Ströter\Desktop\Train1\Der kleine Rechner.c(34): error #2060: Illegal return type; expected 'int' but found 'int __cdecl (*)(void)'.Was kann ich machen, damit das Programm die gewünschte Rechenoperation durchführt und was ist an meinem Script falsch Strukturiert?
-
Du solltest deine Quellcodedatei nicht Script nennen, das mögen einige nicht.
Dein Compiler hat dir doch schon ganz gut gesagt was los ist.
Rechnung wird nicht verwendet, deshalb braucht es da nicht stehen. Ist kein Fehler, aber irgendwie komisch.
Dann findet er return main nicht gut. return bedeutet er gibt das was dahintersteht zurück, nicht er kehrt zur main zurück. Also könntest du return z2; machen. Aber eigentlich willst du garnichts zurückgeben, das schreibt man mit void Rechnung (int ergebnis, int ergebnis2), das heißt er gibt nichts=void zurück, damit heißt es nur return; ohne irgendwas. Kannst du aber auch weglassen.
Funktion aufrufen geht mit Rechnung(5,7); zum Beispiel, oder Rechnung(ergebnis, ergebnis2);.
Du kannst auch schreiben ergebnis3 = Rechnung(ergebnis, ergebnis2);, dann muss Rechnung aber auch ein int zurückgeben.
-
du rufst in der Funktion main deine Funktion Rechnung auf. Zu diesem Zeitpunkt ist
sie allerdings noch nicht bekannt.
Moeglichkeit 1: Funktion ueber main schreiben.
Moeglichkeit 2: Vorwaertsdeklaration alaint Rechnung (int ergebnis, int ergebnis2);
vor die main schreiben.
Desweiteren vermute ich, dass
int Rechnung;
in der Funktion main der Funktionsaufruf ist ??? Falls ja, dann doch lieber so:
Rechnung(ergebnis, ergebnis2);
Wie schon von nwp2 erwaehnt, ist der Rueckgabewert in Rechnung seltsam
also weg damit.
-
Vielen dank für die Hilfe!
Ich habe den Quellcode den Tipps nach nocheinmal überarbeitet und so schnell eine funktionierende Version gefunden.
Hier:
#include <stdio.h>
int Rechnung (int ergebnis, int ergebnis2)
{
int z1, z2;printf("Hier werden Summe und Produkt multipliziert und Summiert \n");
z1 = ergebnis + ergebnis2;
z2 = ergebnis * ergebnis2;printf("Die Summe der Ergebnisse ist %d \n", z1);
printf("Das Produkt der beiden Ergebnisse ist %d \n ", z2);return z2;
}
int main ()
{
int var1, var2, ergebnis, ergebnis2;printf("Bitte geben sie 2 Zahlen zwischen 0 und 100 ein");
scanf("%d %d", &var1, &var2);ergebnis = var1 + var2;
ergebnis2 = var1 * var2;printf("Die Summe der Zahlen lautet :%d \n", ergebnis);
printf("Das Produkt der Zahlen lautet :%d \n", ergebnis2);Rechnung ( ergebnis, ergebnis2);
return 0;
}
Ich wollte so einfach mal lernen zwei Funktionen zu kombinieren.
mfg Cummie
-
Als kleiner Hinweis:
schreib deinen Code mal so:
Hier könnte Ihr C-Code stehen...
mit [.cpp] und [./cpp] (ohne die Punkte!^^)
-
chmbw schrieb:
mit [.cpp] und [./cpp] (ohne die Punkte!^^)
Mach ein besser [i][/i] irgendwo in dem cpp.