tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
382
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Go-Autoit Go-Autoit ist offline Rookie
    Registriert seit
    Nov 2010
    Beiträge
    8
    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;
     
    }
     
    Go-Autoit

    Mehr Tutorials!

  2. #2
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Ä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

  3. #3
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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, ...?

  4. #4
    Go-Autoit Go-Autoit ist offline Rookie
    Registriert seit
    Nov 2010
    Beiträge
    8
    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;
     
    }
     
    Go-Autoit

    Mehr Tutorials!

  5. #5
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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, ...?

  6. #6
    Go-Autoit Go-Autoit ist offline Rookie
    Registriert seit
    Nov 2010
    Beiträge
    8
    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.
     
    Go-Autoit

    Mehr Tutorials!

  7. #7
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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, ...?

  8. #8
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    @sheel
    Ich weiß nicht ob er schon verschachtlungen hatte Mach doch {}
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  9. #9
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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. #10
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    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

  11. #11
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    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

  1. Antworten: 2
    Letzter Beitrag: 17.02.10, 14:13
  2. Antworten: 8
    Letzter Beitrag: 21.05.09, 16:45
  3. Antworten: 2
    Letzter Beitrag: 08.05.09, 08:37
  4. Antworten: 2
    Letzter Beitrag: 14.04.07, 14:15
  5. Variable auf Buchstaben und zahlen Prüfen
    Von joky_joky im Forum PHP
    Antworten: 2
    Letzter Beitrag: 25.10.04, 18:27