C :: Aufgabe #195 :: Lösung #1

1 Lösung Lösung öffentlich
#195

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.
#1
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);
    
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben