programm zur berechung eines rechtecks
-
ich habe folgendes programm:
/*Flaeche und Umfang des Rechtecks*/
#include<stdio.h>
#include<stdlib.h>
int flaeche (float x , float y);
int umfang (float x , float y);
int main ()
{float x, y;
printf("Bitte Kantenlaenge x eingeben:");
scanf("%f",&x);
if (x < 0)
{
printf("negativer Wert geht nicht!\n");
}
printf("Bitte Kantenlaenge y eingeben:");
scanf("%f",&y);
if (y < 0)
{
printf("negativer Wert geht nicht!\n");
}int flaeche (float x , float y);
{
float flaeche, x, y;
flaeche = xy;
printf("Flaeche des Rechtecks = %f\n",xy);}
int umfang (float x , float y);
{
float umfang, x, y;
umfang = x+x+y+y;
printf("Umfang des Rechtecks = %f\n",x+x+y+y);}
system ("PAUSE");
return 0;
}das problem ist dass es mir am ende nur 0 für jeweils umfang und fläche ausgibt
kann mir jemand helfen den fehler zu finden?
vielen lieben dank !!!
-
studente schrieb:
kann mir jemand helfen den fehler zu finden?
Bei Fehlern die erste Anlaufstelle: Dein Compiler. Schalte immer alle Warnungen an. Dann bekommst du eine Ausgabe in dieser Art:
test.c: In function ‘main’: test.c:27: warning: ‘x’ is used uninitialized in this function test.c:27: warning: ‘y’ is used uninitialized in this function test.c:36: warning: ‘x’ is used uninitialized in this function test.c:36: warning: ‘y’ is used uninitialized in this function
Dies sollte dir helfen.
Außerdem sind deine Klammern bestimmt nicht so wie du sie meinst.
-
Meckert der Linker nicht rum, dass er flaeche und umfang nicht kennt?
In C werden die Funktionen außerhalb jeder anderen Funktion definiert.
Die Definitionszeile wird auch nicht von einem ; abgeschlossen sondern durch den anschließenden {}-Block.Und dann musst du die Funktionen auch noch aufrufen.
/*Flaeche und Umfang des Rechtecks*/ #include<stdio.h> #include<stdlib.h> int flaeche (float x , float y); int umfang (float x , float y); int main () { float x, y; printf("Bitte Kantenlaenge x eingeben:"); scanf("%f",&x); if (x < 0) { printf("negativer Wert geht nicht!\n"); } printf("Bitte Kantenlaenge y eingeben:"); scanf("%f",&y); if (y < 0) { printf("negativer Wert geht nicht!\n"); } flaeche(x,y); umfang(x,y); system ("PAUSE"); return 0; } int flaeche (float x , float y); { float x, y; printf("Flaeche des Rechtecks = %f\n",x*y); } int umfang (float x , float y); { float x, y; printf("Umfang des Rechtecks = %f\n",x+x+y+y); }
-
DirkB schrieb:
Meckert der Linker nicht rum, dass er flaeche und umfang nicht kennt?
Nein, er hat das so geschickt falsch gemacht, dass es wieder funktioniert. Die Funktionen werden nirgends aufgerufen, die vermeintlichen lokalen Funktionsdefinitionen sind nur Vorwärtsdeklarationen mit einem anschließenden neuen Scope.
Da ich mir denken kann, wie solch ein Programm zustande gekommen ist (er hat so lange wild Zeichen eingefügt die er so oder ähnlich schon einmal gesehen hat), erwähne ich noch dies:
c.rackwitz schrieb:
Wenn du selber Code schreibst, musst du ihn auch verstehen. Code ist kein Haufen von wahllos zusammengeschmissenen Buchstaben und Zeichen, Code ist Logik pur. Du musst genau wissen, warum du wo und welches Zeichen setzt.
@Threadersteller: Befolge dies stets!