Programm: prüfen ob Dreieck möglich, Umfang und Fläche ausgeben
-
wenn das noch einer liest hab ich mal noch ne frage bei mir funktioniert an sich auch alles außer das, das programm auch bei der eingabe von n wiederholt wird...
wie kann ich das lösen?hier mein code:
int main() { double u, a, s; double x, y, z; int d,c; char wahl; do { printf("\nBitte drei Seitenl\x84ngen f\x81r des Dreieck eingeben \n"); printf("\n 1. Seitenl\x84nge: "); scanf("%lf", &x); while ((c = getchar()) != EOF && c != '\n'); printf("\n 2. Seitenl\x84nge: "); scanf("%lf", &y); while ((c = getchar()) != EOF && c != '\n'); printf("\n 3. Seitenl\x84nge: "); scanf("%lf", &z); while ((c = getchar()) != EOF && c != '\n'); printf("\nIhre Eingabe : x=%.2lf; y=%.2lf; z=%.2lf\n", x, y, z); d=pruefe(x,y,z); if(d==0) { printf("\nMit diesen Seitenl\x84ngen kann kein Dreieck konstruiert werden\n"); printf("\nNochmal? Dr\x81 \bcken Sie j f\x81r Ja und n f\x81r Nein "); scanf("&c", &wahl); while ((c = getchar()) != EOF && c != '\n'); } else { printf("\n\nBerechne Umfang & Fl\x84 \bche!\n"); d = Dreieck(x, y, z, &u, &a); printf("\nUmfang: %.2f \nFl\x84 \bche: %.2f\n", u, a); printf("\nNochmal? Dr\x81 \bcken Sie [Y] f\x81r Ja und [N] f\x81r Nein "); scanf("&c", &wahl); while ((c = getchar()) != EOF && c != '\n'); } } while (wahl = 'Y'); return 0; }
-
Das
(wahl = 'Y')
ist eine Zuweisung, kein Vergleich.
Beachte die Compiler-Warnungen
-
DirkB schrieb:
Das
(wahl = 'Y')
ist eine Zuweisung, kein Vergleich.
Beachte die Compiler-Warnungen
bei meinem compiler kommt keine warnung (codeblocks)...
meinst du das ich (wahl = 'Y') in (wahl == 'Y') ändern soll damit es ein vergleich ist?
wenn ich das mache wird das programm gar nicht mehr wiederholt...
-
test89 schrieb:
meinst du das ich (wahl = 'Y') in (wahl == 'Y') ändern soll damit es ein vergleich ist?
C Grundlagen.
Gibst du denn ein 'Y' ein oder ein 'y'?
Versuchs mal mit der Shift-Tast und y.
-
ich gebe ein 'Y' ein...aber das programm wird beendet...
-
ich komm auf keine lösung bin grad echt am verzweifeln...
bitte kann mir jemand helfen...
-
test89 schrieb:
scanf("&c", &wahl); ... scanf("&c", &wahl);
Das möchte wohl "%c" heißen.
Und ersetze mal
while (wahl = 'Y');
durch
while ('Y' = wahl);
und du wirst schon sehen.
-
Wutz schrieb:
test89 schrieb:
scanf("&c", &wahl); ... scanf("&c", &wahl);
Das möchte wohl "%c" heißen.
Und ersetze mal
while (wahl = 'Y');
durch
while ('Y' = wahl);
und du wirst schon sehen.
ah danke der schreibfehler ist mir die ganze zeit nicht aufegefallen...
jetzt funktionierts mit der wiederholung...ist es jetzt auch noch möglich das die auswahl nur bei 'Y' und 'N' funktioniert?
also das programm nur beendet wird wenn man 'N' eingibt, da es im moment auch bei jedem anderen buchstaben beendet wird...
-
mach aus 'Y' == wahl ein 'N' != wahl
-
pyhax schrieb:
mach aus 'Y' == wahl ein 'N' != wahl
das löst zwar mein problem das ich nur mit 'N' beenden kann...
aber dann kann ich mit jedem buchstaben wiederholen, das soll ja dann nur mit 'Y' funktionieren...
-
if('Y' != wahl && 'N' != wahl) { //Fehlerbehebung }
Eventuell könnte man auch aus dem if eine while schleife machen, dann wird solange wiederholt bis die Eingabe entweder Y oder N ist.
EDIT: Oh stimmt, das war ja C++
Ich bin schon müde
-
test89 schrieb:
ah danke der schreibfehler ist mir die ganze zeit nicht aufegefallen...
Komisch, das habe ich dir schon vor 2 Stunden mitgeteilt.
test89 schrieb:
ist es jetzt auch noch möglich das die auswahl nur bei 'Y' und 'N' funktioniert?
also das programm nur beendet wird wenn man 'N' eingibt, da es im moment auch bei jedem anderen buchstaben beendet wird...
Du hast zwei mal
printf("\nNochmal? Dr\x81 \bcken Sie j f\x81r Ja und n f\x81r Nein "); scanf("&c", &wahl); while ((c = getchar()) != EOF && c != '\n');
Du solltest das hinter die } vom else stellen. Dann kannst du eine Schleife darum packen (Nur um die 3 Zeilen) die nur beendet wird, wenn du 'Y' oder 'N' eingibst.
Achso. schao dir mal toupper] aus der ctype.h an.
Und pyhax: Hier geht es um C. Da werden mit << die Bits geschoben.
-
ok funktioniert jetzt alles soweit...
danke für eure hilfe ich melde mich bestimmt nächste woche wieder wenn die nächsten hausaufgaben dran sind