Frage von schneepups, 38

C Programmieren HILFE! Finde den Fehler oder das Fehlende Element nicht?

Hey Leute,

ich habe seit gestern angefangen mich mit dem Programmieren zu beschäftigen. Läuft so weit ganz ok... aber ich habe ein Programm geschrieben bei dem, wenn man "10" eingibt steht: !!!Du hast gewonnen!!! aber es kommt auch die Zeile im "else" (ich weiß man müsste das "if(Eingabe<10 || Eingabe>10 || Eingabe<20 || Eingabe>20)" nicht schreiben aber ich wollte es auch mal so probieren, weil es mit NUR "else" auch nicht funktoniert hat.

Mein Code wäre so (Benutze Dev-C)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int Eingabe;

   printf("Gebe bitte 1 oder 2 ein.:");
 scanf("%d",&Eingabe);
   fflush(stdin);
   printf("\n");
   
   switch(Eingabe)
    {
                case 1 : printf("Du hast 1 Gew\x84hlt. Nun W\x84hle 10 oder 20.:");
                scanf("%d",&Eingabe);
                fflush(stdin);
            
            if(Eingabe==10)
            { printf("\n!!!Du hast Gewonnen!!!\n");
            }
            
            if(Eingabe==20)
            { printf("\nDu hast Verloren.\n");
            }
            else
            {
                if(Eingabe<10 || Eingabe>10 || Eingabe<20 || Eingabe>20)
                printf("\nBitte gebe nur eine der zur Verfügung stehenden Zahlen ein.\n");
            }
            

            break;
            case 2 : printf("Passt");
            break;
            default: printf("Zu Alt/Jung)");
}

system("PAUSE"); return 0; }

In "case 2" habe ich absichtlich noch nicht viel gemacht.

Antwort
von spaghetticode, 11

Safur hat dein Problem schon erläutert. Das else gehört lediglich zum zweiten if. Und wenn eingabe==10 ist, ist die Ausführung korrekt, denn 10 ist nicht 20.

Ein paar zusäzliche Dinge: fflush(stdin) uns system("pause") sind nicht standardkonform, das erste ist sogar falsch, weil fflush nur für den Ausgabepuffer gedacht ist. Eine Benutzung auf dem Eingabestream erzeugt undefiniertes Verhalten.

Variablennamen schreibt man in C per Konvention klein.

Benutze in Zukunft bitte die Codeformatierung (die beiden Dreiecksklammern über dem Editor).

Antwort
von safur, 10

Zu deiner ersten Frage
Du fragst if=10
dann fragst du if=20 (NEIN!)
natürlich geht er dann noch in den ELSE rein.
Du müsstest eher
if()
elseif()
else()
fragen

Antwort
von Ruffy5286, 38

"if(Eingabe<10 || Eingabe>10 || Eingabe<20 || Eingabe>20)"  Ist doch nicht ganz eindeutig oder? 10 ist auch kleiner als 20. Also keine OR Verknüpfung, sondern AND. Wie wäre es lieber mit einem Eingabe != 10 && Eingabe != 20.

Kommentar von Ruffy5286 ,

Problem gefunden?

Kommentar von schneepups ,

Könnte ich noch etwas fragen?Ich habe es nicht gefunden aber wie kann man Texte schreiben z.B wenn die frage kommt wie alt bist du und ich möchte das die Antwort "fünf" ist. wenn ich es mit "char" versuche kommt nur der 1 Buchstabe also f.

Kommentar von Ruffy5286 ,

Entweder du machst ein Array von Chars, weil  es keine Strings so wirklich gibt in C oder noch eine lib einfügen, aber ich hab keine Ahnung in welcher das sein könnte^^ Also ich hab bis jetzt nur mit Arrays von Chars gearbeitet...

Kommentar von schneepups ,

Ok.. da hast du recht :D mit ungleich wäre es wirklich simpler... aber vielen dank für die Hilfe :)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten