ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
382
382
EMPFEHLEN
-
Hallo Tutorials.de,
ich habe wieder ein Problem mit einer If-Anweisung.
Wahrscheinlich beginnt mein Problem schon mit der Definition der Var. .
Aufgabe ist es, zu Fragen, ob der User weiter machen will oder nicht.
Ich habe das Ganze in eine While schleife gelegt und Frage den User nach einer belibigen Zahleingabe, ob er noch einmal möchte.
Wenn er verneint soll er in den Zweig mit break; gehen.
Ich schaffe es nicht die If-Anweisung richtig zu schreiben.
Wo liegt mein Fehler?
Danke euch.
Hier mein Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
#include <stdio.h> int main() { //vars //double Zahl; double i=0; int Antwort; cstring endcheck; //int janein; while(1) { printf("Bitte geben Sie eine ganze Zahl ein: "); scanf("%d",&Antwort); printf("Sie haben %.0f eingegeben.",(double)Antwort); //erster check auf Zahl if (scanf("%d",&Antwort) !=1) { printf("Sie haben keine ganze Zahl eingegben. "); } fflush(stdin); printf("Möchten Sie noch einmal?"); scanf("%i",&endcheck); if(endcheck !="n" && "N") { printf("Das Programm wird beendet."); break; } } return 0; }
-
10.11.11 15:10 #2
Ähm ich bin mir nicht sicher aber:
scanf("%i",&endcheck);
if(endcheck !="n" && "N")
List doch nur eine Integer aus, oder?
also vll %s ?Fehlermeldung bitte!
Google - Dein Freund und Helfer
-
Hi
Warum ist endcheck ein cstring? Ein char reicht doch auch.
Warum mischt du %i und %d?
Warum behandelst du ein int als double, nur um die Kommastellen wieder abzuschneiden?
Warum liest du ein int auf den Speicherplatz eines cstring?
fflush(stdin) ist schlecht.
In der letzten if-Bedingung überprüfst du entweder, ob endcheck falsch ist, oder ob
endcheck nicht "n" ist und "N" richtig ist. Du musst schon ein zweites == einbauen.
Code kommt verbessert, gleich...
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#include <stdio.h> int main() { int antwort; char endcheck; do { printf("Bitte geben Sie eine ganze Zahl ein:\n"); scanf("%d", &antwort); printf("Sie haben %d eingegeben.\n\n", antwort); fflush(stdin); //Eigentlich schlecht, aber sonst wirds wahrscheinlich unverständlich printf("Moechten Sie noch einmal?\n"); scanf("%c", &endcheck); }while(endcheck == 'j' || endcheck == 'J'); printf("Das Programm wird beendet.\n"); return 0; }
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Super danke.
Ich bin reichlich verwirrt.
Nun muss ich noch die Eingaben kontrollieren.
Also bei der Zahleneingabe muss ich prüfen ob wirklich eine Zahl eigegeben wurde.
Wenn ein Text eigegeben wurde, soll die Meldung "Sie haben keine ganze Zahl eigegeben" kommen und der User soll noch einmal gefragt werden, ob er eine neue Zahl eigeben möchte möchte.
Dies muss ich auch wieder auf Ja oder Nein prüfen.
Habt ihr Ideen oder Vorschläge?
Ich bin ziemlich neu auf dem Gebiet.
Danke euch.
Hier nochmal mein Versuch.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#include <stdio.h> int main() { //vars int antwort; char endcheck; do { fflush(stdin); printf("Bitte geben Sie eine ganze Zahl ein:"); scanf("%d", &antwort); printf("Sie haben %d eingegeben.", antwort); if (scanf("%d", &antwort) !=1) { printf("Sie haben keine ganze Zahl eingegben.\n"); } else { fflush(stdin); printf("Möchten Sie noch einmal?"); scanf("%c", &endcheck); } }while(endcheck == 'j' || endcheck == 'J'); printf("Das Programm wird beendet."); return 0; }
-
Wieso machst du eigentlich so Riesenabstände zwischen den Codezeilen?

Und...du liest antwort ein, gibst aus "Sie haben ... eingegeben"
und liest antwort darunter wieder ein.
Und soll die Nocheinmal-Abfrage wirklich nur kommen, wenn eine gültige Zahl eingegeben wurde?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Ja richtig.
Da soll er prüfen, ob die Var. "Antwort" aus einer Zahl oder Text besteht.
Wenn Text dann " printf("Sie haben keine ganze Zahl eingegben.\n"); " etc.
Die nocheinmal-Abfrage soll immer kommen bis der User mit Nein Programm beendet.
-
Dir scheint aber nicht bewusst zu sein, dass du zweimal eine Tastatureingabe verlangst
und nur die zweite prüfst.
Und zur nochmal-Abfrage: Wenn sie unabhängig von der Zahl kommen soll,
warum schreibst du sie in das else?
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#include <stdio.h> int main() { int antwort; char endcheck; do { printf("Bitte geben Sie eine ganze Zahl ein:\n"); if(1 == scanf("%d", &antwort)) printf("Sie haben %d eingegeben.\n\n", antwort); else printf("Das war keine ganze Zahl.\n\n", antwort); fflush(stdin); //Eigentlich schlecht, aber sonst wirds wahrscheinlich unverständlich printf("Moechten Sie noch einmal?\n"); endcheck = getchar(); }while(endcheck == 'j' || endcheck == 'J'); printf("Das Programm wird beendet.\n"); return 0; }
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
10.11.11 18:05 #8
@sheel
Ich weiß nicht ob er schon verschachtlungen hatte
Mach doch {}
Fehlermeldung bitte!
Google - Dein Freund und Helfer
-
Verschachtelungen?
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
10.11.11 20:35 #10
if(1 == scanf("%d", &antwort))
printf("Sie haben %d eingegeben.\n\n", antwort);
if(1 == scanf("%d", &antwort)) {
printf("Sie haben %d eingegeben.\n\n", antwort);
}
Vll heißt es auch anderst ich kenne es als Verschachtlung
Fehlermeldung bitte!
Google - Dein Freund und Helfer
-
Ach so, versteh was du meinst.
Wenn das noch nicht bekannt ist, wird es eben jetzt gelernt
Man sieht ja doch recht deutlich, wo der "Block" anfangt und aufhört.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
Ähnliche Themen
-
Vorname auf Buchstaben und Umlaute prüfen...
Von Velow im Forum PHPAntworten: 2Letzter Beitrag: 17.02.10, 14:13 -
Dateien auslesen, prüfen und MySQL Anweisung
Von Do_0mi im Forum PHPAntworten: 8Letzter Beitrag: 21.05.09, 16:45 -
Eingabevarianten prüfen auf bestimmten Buchstaben
Von dwex im Forum PHPAntworten: 2Letzter Beitrag: 08.05.09, 08:37 -
Aus einem String aus Zahlen und Buchstaben, nur die Buchstaben rausfiltern?
Von kurwajebana im Forum JavaAntworten: 2Letzter Beitrag: 14.04.07, 14:15 -
Variable auf Buchstaben und zahlen Prüfen
Von joky_joky im Forum PHPAntworten: 2Letzter Beitrag: 25.10.04, 18:27





Zitieren

Login






