C :: Aufgabe #195

1 Lösung Lösung öffentlich

Schleife, Randem, und switch und DataTime , TimeSpan.

Anfänger - C von NMeassar - 06.07.2018 um 10:05 Uhr
Erstellen Sie ein Programm, welches dem Benutzer 10 Rechenaufgaben stellt.
Die Aufgaben bestehen jeweils aus zwei zufällig bestimmten Zahlen zwischen 1 und 10 und dem zufällig gewählten Operator (Möglichkeiten: + , - , *)
Ist das Ergebnis inkorrekt, wird folgender Text ausgegeben
"Das Ergebnis ist falsch!"
Dies geschieht solange, bis der Benutzer die Aufgabe richtig gelöst hat.
Nachdem die 10 Aufgaben gelöst sind, soll auf der Konsole die benötigte Zeit ausgegeben werden.

Lösungen:

vote_ok
von kathleenw (3600 Punkte) - 17.07.2020 um 11:07 Uhr
Quellcode ausblenden C-Code
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MIN 1
#define MAX 10
#define ANZAHL 10

int zufallszahl(int min, int max)
{
    int zahl;
    zahl= (rand()%((max+1)-min))+min;
    return zahl;
}

int main(void) {
    
    int zufallszahl_1, zufallszahl_2, zufall_operator, ergebnis, ergebnis_rechner, anzahl_aufgaben;
    char operator[3]={'+','-','*'};
    time_t start_t, end_t;
    double differenz_zeit;
    
    srand(time(NULL));
    
    start_t = time(NULL);
    
    //Initialisierung
    zufallszahl_1 = zufallszahl(MIN, MAX);
    zufallszahl_2 = zufallszahl(MIN, MAX);
    zufall_operator = zufallszahl(0,2);
    anzahl_aufgaben = 1;
    
    while (anzahl_aufgaben <=ANZAHL){
        switch(zufall_operator)
        {
            case 0: ergebnis_rechner = zufallszahl_1 + zufallszahl_2; break;
            case 1: ergebnis_rechner = zufallszahl_1 - zufallszahl_2; break;
            case 2: ergebnis_rechner = zufallszahl_1 * zufallszahl_2; break;
            default: printf("Fehler beim Operator.");
        }
        
        printf("Bitte geben sie das Ergebnis von folgender Rechenaufgabe ein: %d %c %d = ", zufallszahl_1, operator[zufall_operator], zufallszahl_2);
        if(scanf("%d",&ergebnis)!=1) {
            printf("Bitte geben sie eine Zahl ein.");
            return EXIT_FAILURE;
        }
        
        if(ergebnis == ergebnis_rechner){
            anzahl_aufgaben++;
            zufallszahl_1 = zufallszahl(MIN, MAX);
            zufallszahl_2 = zufallszahl(MIN, MAX);
            zufall_operator = zufallszahl(0,2);
        }
        else {
            printf("Das Ergebnis ist falsch\n");
        }
    }
    
    end_t=time(NULL);
    
    differenz_zeit = difftime(end_t, start_t);
    
    printf("Sie haben %.1f Sekunden gebraucht.", differenz_zeit);
    
}
2656016

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.