Am Ende
-
Ich sitze schon seit zwei Tagen an diesem sch**** Programm und ich verzweifle wortwörtlich.
Alles funktioniert immer prima, plötzlich funktioniert gar nichts mehr und das obwohl es so simpel ist.
Es sind verschiedene If-Anweisung die doch als Agrenzung genügen müssten aba sobald ich eine neue if anweisung mach pfuscht diese mir in das was ich vorher geschafft habe. Ich habe wirklich sehr viel Geduld aba ich kann nimmer und bitte um Hilfe weil ich sonst durchdrehe vor Zorn.# include <math.h> int main () { float a, b, a_gross,u,d, extra, extra_2,extra_3,i, xalt, xneu; char zeichen, zeichen_2; Anfang: printf ("Bitte geben sie ein was sie gegeben haben\n"); scanf("%c", &zeichen); getchar (); printf ("Bitte geben sie ihre zweite Angabe ein\n"); scanf ("%c", &zeichen_2); printf ("Bitte geben sie den Wert für die erste Angabe ein\n"); scanf("%f", &extra); getchar(); printf ("Bitte geben sie nun den Wert für die zweite Angabe ein\n"); scanf("%f", &extra_2); getchar (); if ((zeichen=='a')&&(zeichen_2=='b')) {{ a=extra; b=extra_2, a_gross=(a*b), u=(2*(a+b)); extra_3= ((a*a)+(b*b)), d= sqrt (extra_3);} } if ((zeichen=='A')&&(zeichen_2=='b')); { a_gross=extra, b=extra_2, a=a_gross/b, u=2*(a+b), d= sqrt ((a*a)+(b*b));} if ((zeichen=='b')&&(zeichen_2=='A')); { b=extra, a_gross=extra_2, a=a_gross/b, u=2*(a+b), d= sqrt ((a*a)+(b*b));} if ((zeichen=='a')&&(zeichen_2=='A')); { a=extra, a_gross=extra_2, b=a_gross/a, u=2*(a+b), d= sqrt ((a*a)+(b*b));} if ((zeichen=='b')&&(zeichen_2=='A')); { b=extra, a_gross=extra_2, a=a_gross/b, u=2*(a+b), d= sqrt ((a*a)+(b*b));} if ((zeichen=='a')&&(zeichen_2=='U')); { a=extra, u=extra_2, extra_3=(u-(2*a)), b=(extra_3/2), a_gross=a*b, d= sqrt ((a*a)+(b*b));} if ((zeichen=='U')&&(zeichen_2=='a')); {u=extra, a=extra_2, extra_3=(u-(2*a)), b=(extra_3/2),a_gross=a*b, d= sqrt ((a*a)+(b*b));} if ((zeichen=='U')&&(zeichen_2=='b')); {u=extra, b=extra_2, extra_3=(u-(2*b)), a=(extra_3/2),a_gross=a*b, d= sqrt ((a*a)+(b*b));} if ((zeichen=='b')&&(zeichen_2=='U')); {b=extra, u=extra_2, extra_3=(u-(2*b)), a=(extra_3/2),a_gross=a*b, d= sqrt ((a*a)+(b*b));} printf ("a=%f\n",a); printf ("b=%f\n",b); printf ("A=%f\n",a_gross); printf ("U=%f\n", u); printf ("d=%f\n", d); goto Anfang; Bitte helft mir ich zuck schon aus, ich hab auch schon andere um Hilfe gebeten die erfahrenerer Programmierer sind und mir ned helfen haben können. Das kanns doch ned sein, dass eine if anweisung in die andere reinpfuscht :mad: return 0;
}
-
hmmm, was machen denn die Strichpunkte hinter den IF-CLAUSES??
-
/me wartet
-
#include <math.h> int main() { float a, b, a_gross,u,d, extra, extra_2,extra_3,i, xalt, xneu; char zeichen, zeichen_2; Anfang: printf( "Bitte geben sie ein was sie gegeben haben\n" ); scanf( "%c", &zeichen ); getchar( ); printf( "Bitte geben sie ihre zweite Angabe ein\n" ); scanf( "%c", &zeichen_2 ); printf( "Bitte geben sie den Wert für die erste Angabe ein\n" ); scanf( "%f", &extra ); getchar( ); printf( "Bitte geben sie nun den Wert für die zweite Angabe ein\n" ); scanf( "%f", &extra_2 ); getchar( ); if( ( zeichen == 'a' ) && ( zeichen_2 == 'b' ) ) { { a = extra; b = extra_2, // *) a_gross = ( a * b ), // *) u = ( 2 * ( a + b ) ); extra_3 = ( ( a * a ) + ( b * b ) ), // *) d = sqrt( extra_3 ); } } if( ( zeichen == 'A' ) && ( zeichen_2 == 'b' ) ); { // *) a_gross = extra, // *) b = extra_2, // *) a = a_gross / b, // *) u = 2 * ( a + b ), // *) d = sqrt( ( a * a ) + ( b * b ) ); } if( ( zeichen == 'b' ) && ( zeichen_2 == 'A' ) ); { // *) b = extra, // *) a_gross = extra_2, // *) a = a_gross/b, // *) u = 2 * ( a + b ), // *) d = sqrt( ( a * a ) + ( b * b ) ); } if( ( zeichen == 'a' ) && ( zeichen_2 == 'A' ) ); { // *) a = extra, // *) a_gross = extra_2, // *) b = a_gross / a, // *) u = 2 * ( a + b ), // *) d = sqrt( ( a * a ) + ( b * b ) ); } if( ( zeichen == 'b' ) && ( zeichen_2 == 'A' ) ); { // *) b = extra, // *) a_gross = extra_2, // *) a = a_gross / b, // *) u = 2 * ( a + b ), // *) d = sqrt( ( a * a ) + ( b * b ) ); } if( ( zeichen == 'a' ) && ( zeichen_2 == 'U' ) ); { // *) a = extra, // *) u = extra_2, // *) extra_3 = ( u - ( 2 * a ) ), // *) b = ( extra_3 / 2 ), // *) a_gross = a * b, // *) d = sqrt( ( a * a ) + ( b * b ) ); } if ( ( zeichen == 'U' ) && ( zeichen_2 == 'a' ) ); { // *) u = extra, // *) a = extra_2, // *) extra_3 = ( u - ( 2 * a ) ), // *) b = ( extra_3 / 2 ), // *) a_gross = a * b, // *) d = sqrt( ( a * a ) + ( b * b ) ); } if( ( zeichen == 'U' ) && ( zeichen_2 == 'b' ) ); { // *) u = extra, // *) b = extra_2, // *) extra_3 = ( u - ( 2 * b ) ), // *) a = ( extra_3 / 2 ), // *) a_gross = a * b, // *) d = sqrt( ( a * a ) + ( b * b ) ); } if( ( zeichen == 'b' ) && ( zeichen_2 == 'U' ) ); { // *) b = extra, // *) u = extra_2, // *) extra_3 = ( u - ( 2 * b ) ), // *) a = ( extra_3 / 2 ), // *) a_gross = a * b, // *) d = sqrt( ( a * a ) + ( b * b ) ); } printf( "a=%f\n", a ); printf( "b=%f\n", b ); printf( "A=%f\n", a_gross ); printf( "U=%f\n", u ); printf( "d=%f\n", d ); goto Anfang; // es gibt auch schleifen... return 0; }
Ich hab' dir deine Spaghetti mal auf Gabel gewickelt.
Na, merkst was?
Greetz, Swordfish
-
Vielen Dank für eure schnellen Antworten!
@gast:Wieso darf ich da keine Strichpunkte machen?
@swordfish, danke, habs mir angesehen merke aba bis auf ne doppelete {-Klammer oben
ned wirklich an Unterschied, sry kannst du es mir viell erläutern?lg, mo
-
muhi schrieb:
if ((zeichen=='a')&&(zeichen_2=='b')) {{ a=extra; b=extra_2, a_gross=(a*b), u=(2*(a+b)); extra_3= ((a*a)+(b*b)), d= sqrt (extra_3);} }
versus
Swordfish schrieb:
if( ( zeichen == 'a' ) && ( zeichen_2 == 'b' ) ) { { a = extra; b = extra_2, // *) a_gross = ( a * b ), // *) u = ( 2 * ( a + b ) ); extra_3 = ( ( a * a ) + ( b * b ) ), // *) d = sqrt( extra_3 ); } }
die "doppelte" geschweifte Klammer machst du auch. Ich hab' deinen Code nicht verändert, sondern lediglich kommentiert.
Also, die if-Anweisung:
if( Expression ) Statement;
wobei Expression ein Ausdruck ist, welcher zu true oder false evaluiert. Ergibt Expression true, so wird Statement ausgeführt, andernfalls nicht. In deinem Falle wird immer
if( Expression ) ;
eine leere Anweisung ausgeführt. Sprich es findet keine Fallunterscheidung statt.
Weiters wird in C jede Anweisung mit einem Semikolon (';') abgeschlossen. Somit verstehe ich nicht was zB in
muhi schrieb:
{ a=extra; b=extra_2, a_gross=(a*b), u=(2*(a+b)); extra_3= ((a*a)+(b*b)), d= sqrt (extra_3);}
die ganzen Kommas (',') zu tun haben.
Also alle ';' nach deinen ifs weg und aus allen ',' mache ';'.
Greetz, Swordfish
-
Vielen Dank ihr habt mir echt geholfen, lg mo