Problem mit switch-Anweisung (war: BRAUCHE DRINGEND HILFE)



  • Habe folgende aufgabe bekommen:

    Im Programm zur nebenstehenden Bildschirmausgabe soll für eingegebene Dezimalzahlen bestimmt werden können, wie diese Zahlen dargestellt werden sollen. Der Anwender soll die Wahl haben zwischen den Zahlensystemen Oktal und Hexadezimal, oder er lässt ASCII-Zeichen zu den dezimalen Codenummern 0 bis 255 darstellen.

    Ich habe das Programm gemacht, jedoch ohne erfolg... es überspringt den "switch"...

    hier ist das Programm:

    //---------------------------------------------------------------------------
    //Programm: Ausgaben
    //---------------------------------------------------------------------------
    
    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
        int zahl=0;
        char ausg='?';
        printf("Bitte Dezimalzahl eingeben: ");
        scanf("%i", &zahl);
        printf("\nWaehlen Sie (O)ktal, (H)ex oder (A)SCII > ");
        scanf("%c", &ausg);
        fflush(stdin);
        switch(ausg)
           {
            case 'o':
            case 'O':
               printf("\n --> Die Zahl %i entspricht %o im Zahlensystem Oktal", zahl, zahl);
               break;
    
            case 'h':
            case 'H':
               printf("\n --> Die Zahl %i entspricht %X im Zahlensystem Hexadezimal", zahl, zahl);
               break;
    
            case 'a':
            case 'A':
               if(zahl<256)
                {
                 printf("\n --> Die Zahl %i entspricht %c im Zahlensystem Hexadezimal", zahl, zahl);
                 break;
                }
               else
                 printf("Zahlen groesser als 255 koennen nicht wahrgenommen werden.");
    
            default:
               printf("Ungueltiger Zahlensystem");
               break;
    
           }
    
        getch();
    }
    //---------------------------------------------------------------------------
    

    könnt ihr bitte helfen?

    Edit:
    Bitte aussagekräftige Überschriften wählen, die Code-Tags verwenden, und gewöhn dir das SCHREIEN ab. Danke!



  • Lies nochmal nach, was fflush macht, und wo man es sinnvollerweise plazieren sollte.

    Dein Programm hat im Übrigen nicht spezifisch mit den Borland Builder zu tun, es ist reines C. Und dafür gibt es hier ein eigenes Forum.



  • ich benutze ja das Programm Borland C++ Builder... hättest du vielleicht Vorschläge oder kannst du mir genau sagen was da falsch ist? ich brauch es für morgen und bin verzweifelt...

    Danke



  • tausch mal das:

    ...
        scanf("%i", &zahl);
        printf("\nWaehlen Sie (O)ktal, (H)ex oder (A)SCII > ");
        scanf("%c", &ausg);
        fflush(stdin);
        switch(ausg)
    ...
    

    gegen das:

    ...
        scanf("%i", &zahl);
        printf("\nWaehlen Sie (O)ktal, (H)ex oder (A)SCII > ");
    
        while (getchar() != '\n')
           ;
    
        scanf("%c", &ausg);
        // fflush(stdin);     <--- unnötig
        switch(ausg)
    ...
    


  • Gast11 schrieb:

    ich benutze ja das Programm Borland C++ Builder

    Mit der Art von Begründung hättest du deine Frage auch in einem Windows-Forum stellen können, denn der BCB läuft ja unter Windows. Oder in einem Computer-Forum, denn du benutzt zum Programmieren ja einen Computer. Oder in einem Stühle-Forum, weil du beim Programmieren ja auf einem Stuhl sitzt ...


Log in to reply