rechenprogramm



  • Schreib doch

    case 'j' :
    case 'J' : rechnen();
               break;
    case 'n' :
    case 'N' : nichtrechnen();
               break;
    

    Ein char ist auch eine Ganzzahltyp.



  • hey danke für die antwort, hat mir sehr viel gebracht.

    Mein programm sieht derzeit so aus:

    //Wird benötigt für die Standardfunktionen
    #include <stdio.h>
    
    //Wird benötigt für system(pause)
    #include <stdlib.h>
    
    float zahl1, zahl2, ergebnis;
    int richtiggerechnet;
    char auswahl1, auswahl2, j, n;
    
    int main(void)
    {
    //Eingabe
    printf("Wollen sie rechnen? \(j/n\) ");
    scanf("%c", &auswahl1);
    
    switch(auswahl1)
    
    {case 'j':
    
    printf("\nRechenprogramm\n==============\n\nGeben sie zwei Zahlen durch Komma getrennt ein:");
    scanf("%f, %f", &zahl1, &zahl2);
    
    //Verarbeitung
    
    printf("\nWieviel ist %.2f + %.2f?", zahl1, zahl2);
    scanf("%f", &ergebnis);
    
        if(zahl1 + zahl2 == ergebnis){
            printf("           richtig !\n\n");
            richtiggerechnet++;
        }
        else{
            printf("           falsch ! \(richtig waere %.2f + %.2f = %.2f\)\n\n",zahl1,zahl2,zahl1 + zahl2);
        }
    
    printf("Wieviel ist %.2f - %.2f?", zahl1, zahl2);
    scanf("%f", &ergebnis);
    
        if(zahl1 - zahl2 == ergebnis){
            printf("           richtig !\n\n");
            richtiggerechnet++;
        }
        else{
            printf("           falsch ! \(richtig waere %.2f - %.2f = %.2f\)\n\n",zahl1,zahl2,zahl1 - zahl2);
        }
    
    printf("Wieviel ist %.2f * %.2f?", zahl1, zahl2);
    scanf("%f", &ergebnis);
    
        if(zahl1 * zahl2 == ergebnis){
            printf("           Richtig !\n\n");
            richtiggerechnet++;
        }
        else{
            printf("           falsch ! \(richtig waere %.2f * %.2f = %.2f\)\n\n",zahl1,zahl2,zahl1 * zahl2);
        }
    
    printf("Wieviel ist %.2f / %.2f?", zahl1, zahl2);
    
        if(zahl1==0 || zahl2==0){
            printf("\n\nDivision mit 0 ist nicht definiert!\n\n\n");
            printf("Sie haben %i Aufgaben richtig geloest!\n\n", richtiggerechnet);
    
            system("PAUSE");
            return 0;
            }
    
        if(zahl1 !=0 || zahl2!=0){
            scanf("%f", &ergebnis);
            if((zahl1 / zahl2) == ergebnis){
                printf("           Richtig !\n\n\n");
                richtiggerechnet++;
                }
                else{
                    printf("           falsch ! \(richtig waere %.2f / %.2f = %.2f\)\n\n",zahl1,zahl2,zahl1 / zahl2);
                }}
    
    printf("Sie haben %i Aufgaben richtig geloest!\n\n", richtiggerechnet);
    
    case 'n':
    
    printf("Wollen Sie die Wirkungsweise der Bit-Operatoren ueben? \(j/n\)\n");
    }
    
    scanf("%c", &auswahl2);
    
    switch(auswahl2)
    {
    
    case 'j':
    printf("wir üben JETZT Bitoperatoren");
    
    case 'n':
    printf("wir üben jetzt KEINE Bitoperatoren");
    
    }
    
    system("PAUSE");
    return 0;
    }
    

    ich habe nun folgendes problem, nachdem er mich gefragt hat ob ich rechnen möchte, soll nun auch eine abfrage kommen ob ich bit operationen üben möchte. Dies funktioniert nur irgendwie nicht. Mein Programm wird nach dem printf in zeile 87 beendet, wieso ?



  • Mein Programm wird nach dem printf in zeile 87 beendet, wieso ?

    Das wird das leidige scanf Problem sein. scanf liest nur die Zahlen ein aber nicht das Enter. Das wird mit dem scanf("%c", &auswahl2); wird dann das Enter eingelesen.
    Das wird hier im Forum in fast jedem 4. Post behandelt. Bemühe bitte die Suche (scanf fgets)

    ⚠ Im switch gehört, wenn der case behandelt wurde, ein break; sonst werden die case nacheinander abgearbeitet.

    case 'j' :
    case 'J' : rechnen();
               break;
    case 'n' :
    case 'N' : nichtrechnen();
               break;
    

    Hier soll das Programm bei 'j'und bei 'J' rechnen. Durch das break; springt er aus dem switch. Bei 'j' ist kein break; damit bei 'J' weitergemacht wird.



  • dankeschön, konnte das problem lösen 🙂 hab ihm einfach gesagt das er scanf("%c%C"); machen soll, dadurch wird das "eingabe" problem gelöst.


Anmelden zum Antworten