If Bedingung
-
Für Ja/Nein benötigst du einen C-String. diesen musst du dann mit "Ja"/"Nein" vergleichen. Das kannst du mit strcmp machen. Die Variablen ja und nein musst du entfernen.
-
In der ersten hatte wir HTML gemacht, in der zweiten kommt bei uns erst C/C++ dran...Im ersten Semester hatten wir das gemacht...
Hmm..aber cout und cin haben wir noch gar nicht gemacht...müsste das nicht auch einfach gehen, indem man If und eventuell if else verwendet und einfach scanf printf und das wars...sollte das nicht so auch gehen?
-
int alter, ja, nein; // ... printf("Geben Sie Ja oder Nein ein"); scanf("%d", ja, nein);
Nein, so geht das absolut nicht. Ein Computer kann nicht deine Gedanken lesen. Da ich mal annehme, dass du noch keine Zeichenkettenverarbeitung in C hattest, will ich das Thema jetzt auch noch nicht einführen, weil es doch sehr schwierig ist. Eine etwas verständlichere Möglichkeit wäre:
char ja_oder_nein; printf("Geben Sie j oder n ein: "); scanf("%c", &ja_oder_nein); if (ja_oder_nein == 'j') printf("Ja eingegeben.\n"); else if (ja_oder_nein == 'n') printf("Nein eingegeben.\n"); else printf("Etwas anderes eingegeben.\n");
-
Gugelmoser schrieb:
Blurp_ schrieb:
... 2. Klasse ...
Hast du da eine 1 vergessen? oO
Wichtig:
- Du solltest uns immer die Fehlermeldung, die dir dein Compiler an den Kopf wirft, und dein Vorhaben mitteilen...
- Dein Quellcode ist kein C++, sondern C.[/cpp]
Er wirft mir keine Fehlermeldungen am Kopf, es kommt immer nur ein "Wiederholen, Ignorieren oder Abbrechen" Fenster, und zwar dann wenn ich eingebe wie alt ich bin.
Mein Ziel ist es, einfach einzugeben können wie alt ich bin, bei 18 soll er mich fragen ob ich ihn bestanden habe oder nicht, indem ich mit ja oder nein
antworte, ja = printf("Herzlichen Glückwunsch");
nein = ("Dann beeilen Sie sich") sowas in der Art
Falls ich älter bin soll er sagen Sie sind schon volljährig, falls ich jünger als 18 bin, soll er sagen ich bin noch nicht volljährig
-
Blurp_ schrieb:
In der ersten hatte wir HTML gemacht, in der zweiten kommt bei uns erst C/C++ dran...Im ersten Semester hatten wir das gemacht...
Hier liegt der Irrtum, ihr macht C, kein C++, deshalb hast du von den Sachen die Gugelmoser beschreibt noch nichts gehört.
Und einem Kurs der C/C++ lehren will, kann man ohnehin vergessen, da lernt man erfahrungsgemäß beides nicht richtig. Man wird sogar in beiden Sprachen schlechter, wenn man versucht, diese zu mischen.
-
SeppJ schrieb:
char ja_oder_nein; printf("Geben Sie j oder n ein: "); scanf("%c", &ja_oder_nein); if (ja_oder_nein == 'j') printf("Ja eingegeben.\n"); else if (ja_oder_nein == 'n') printf("Nein eingegeben.\n"); else printf("Etwas anderes eingegeben.\n");
Bist du dir sicher dass man bei dem char ja_oder_nein; den strichpunkt braucht, denn er zeigt mir in der Zeile einen SYntaxfehler von ; an, und was anderes ist in der Zeile nicht.
Aber danke schon mal für die Hilfe !
-
Daweil habe ich das:
/* if2.c */ #include <stdio.h> int main(void) { int alter, ja_oder_nein; printf("Wie alt sind Sie: "); scanf("%u", &alter); if(alter < 18) { printf("Sie sind noch nicht volljährig"); } if(alter > 18); { printf("Sind sind schon volljaehrig?\n"); } if(alter == 18); { printf("Haben Sie schon den Fuehrerschein bestanden?\n"); } char ja_oder_nein; printf("Geben Sie j oder n ein: "); scanf("%c", &ja_oder_nein); if (ja_oder_nein == 'j') printf("Ja eingegeben.\n"); else if (ja_oder_nein == 'n') printf("Nein eingegeben.\n"); else printf("Etwas anderes eingegeben.\n"); printf("Bye\n"); return 0; }
Fehlermeldungen:
c(9) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c(21) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ'
-
#include <stdio.h> int main(void) { int alter; char ja_oder_nein; printf("Wie alt sind Sie: "); scanf("%d", &alter); if(alter < 18) printf("Sie sind noch nicht volljährig"); else if(alter > 18) printf("Sind sind schon volljaehrig?\n"); else printf("Haben Sie schon den Fuehrerschein bestanden?\n"); printf("Geben Sie j oder n ein: "); scanf("%c", &ja_oder_nein); if (ja_oder_nein == 'j') printf("Ja eingegeben.\n"); else if (ja_oder_nein == 'n') printf("Nein eingegeben.\n"); else printf("Etwas anderes eingegeben.\n"); printf("Bye\n"); return 0; }
-
Blurp_ schrieb:
Bist du dir sicher dass man bei dem char ja_oder_nein; den strichpunkt braucht, denn er zeigt mir in der Zeile einen SYntaxfehler von ; an, und was anderes ist in der Zeile nicht.
Aber danke schon mal für die Hilfe !
Der gezeigte Programmabschnitt ist absolut korrekt. Du hast vermutlich einen Fehler beim Abschreiben oder einen Fehler weiter vorher gemacht.
edit: Jetzt da ich die Fehlermeldung lese: Du benutzt einen Compiler, der nach dem C-Standard von 1989 arbeitet. Damals war es nicht erlaubt, Variablen mitten im Programm zu deklarieren.
Dein komplettes Programm sähe so aus:
/* if2.c */ #include <stdio.h> int main(void) { int alter; char ja_oder_nein; printf("Wie alt sind Sie: "); scanf("%d", &alter); if(alter < 18) { printf("Sie sind noch nicht volljährig"); } if(alter > 18) { printf("Sind sind schon volljaehrig?\n"); } if(alter == 18) { printf("Haben Sie schon den Fuehrerschein bestanden?\n"); } printf("Geben Sie j oder n ein: "); scanf("%*[ \n\t]%c", &ja_oder_nein); if (ja_oder_nein == 'j') printf("Ja eingegeben.\n"); else if (ja_oder_nein == 'n') printf("Nein eingegeben.\n"); else printf("Etwas anderes eingegeben.\n"); printf("Bye\n"); return 0; }
Dabei habe ich noch folgende Änderungen vorgenommen:
Zeile 10: Der Formatspezifizierer für int ist d oder i, nicht u, welches für unsigned int steht.
Zeile 23: Das%*[ \n\t]
ist ein Trick, um eventuellen Whitespace in der Eingabe zu übergehen (z.B. das abschließende Enter-Zeichen nach der Alterseingabe) und nur das eingegebene Zeichen einzulesen.Du wirst sehen, dass der Programmfluss vermutlich nicht ganz der ist, den du beabsichtigst. Das zu korrigieren überlasse ich dir, denn es ist ja schließlich deine Hausaufgabe und das soll hier gelernt werden.
-
/* if2.c */ #include <stdio.h> #include <string.h> #include <ctype.h> int main(void) { int alter; printf("Wie alt sind Sie: "); scanf("%u", &alter); if(alter < 18) { printf("Sie sind noch nicht volljährig"); } else if(alter > 18) { printf("Sie sind bereits volljährig?\n"); } else if(alter == 18) { int i; char buf[32]; printf("Haben Sie schon den Fuehrerschein bestanden?\n"); printf("Geben Sie Ja oder Nein ein: "); while ((i = getchar()) != EOF && i != '\n'); fgets(buf, 32, stdin); for (i = 0; i < 32; ++i) { if (buf[i] == '\n') { buf[i] = '\0'; break; } buf[i] = tolower(buf[i]); } if(strcmp(buf, "ja") == 0) { printf("Herzlichen Glueckwunsch\n"); } else { printf("Dann beeilen Sie sich\n"); } } printf("Bye\n"); return 0; }
-
scanf("%u"
liest einen vorzeichenlosen integer ein, du verwendest aber int (vorzeichenbehaftet)
scanf("%d"
liest einen integer ein, du erwartest einen String (was auch Unsinn ist)
Du wertest die scanf-Rückgabewerte nicht aus, benutze sie einfach, dazu sind sie da und machen deine Arbeit einfacher und fehlerfreier.
Du löscht den Eingabepuffer nicht.
...
-
Ok, danke an alle, korrigieren werde ich es selbst.
z.B: kommt wenn ich volljährig bin Herzlichenglückwunsch bei j
das mache ich noch selbst.
noch was: es ist keine Hausaufgabe, wir haben einfach am mittwoch test, und das habe ich nur zum üben bisschen programmiert, ich bin eh gspannt was ich da drauf schreib -.-^^
hjkhjk - Danke für das Programm, aber wenn ich das verwende bringt mir das nichts, weil ich sowas noch nicht gelernt hab und das glaub ich auch c++ is.
Und sorry fürs längere nicht antowrten, ich hab öfter die seite aktualisiert, und jetzt erst, nach längerer Pause bemerkt, dass man links unten auf Seite 2 kann.
Danke an alle die mir geholfen haben!
-
Das Programm von hjkhjk ist reines C.