Bräuchte Hilfe bei der Lösung einer Aufgabe (Stoppuhr)

  • Hallo, hab da ein Problem eine Aufgabe zu lösen.
    Hoffe ihr könnt mir bei diesem Prob helfen. Hier die Aufgabenstellung:


    Eine Möglichkeit, das Verhalten einer Stoppuhr zu beschreiben, ist der sogenannte Zustandsautomat. Hierzu werden zuerst die Zustände definiert. Eine Stoppuhr hat 3 Zustände:
    - RUNNING Stoppuhr läuft
    - STOPPED Stoppuhr steht und wird nicht zurückgesetzt
    - RESET Stoppuhr steht und wird zurückgesetzt
    Es gibt nun Ereignisse (in unserem Beispiel Tastendrücke), die den Zustandswechsel auslösen.
    In C Könnte es so aussehen:
    // Einlesen der Tasten
    input = getkey();
    // in Abh. des Status state Funktionen aufrufen
    if (state == RESET) {
    if (input == KEY_ENTER)
    state = RUNNING;
    }
    KEY_ENTER entspricht der Eingabetaste, KEY_PREV der Minustaste (siehe #DEFINE).
    Versuchen Sie nun, diesen Zustandsautomaten zu implementieren. Führen Sie dies schrittweise durch. Zuerst implementieren Sie die Übergänge von RUNNING zu STOPPED und zurück und testen Sie zuerst Ihr Programm bevor Sie den weiteren Zustand RESET und dessen Übergänge realisieren. Es macht Sinn, die Zustandsübergänge von der Applikationslogik soweit es geht zu trennen. Der Kern der main Funktion, die unter Verwendung der beiden anderen vorgegebenen Funktionen zu implementieren ist, besteht aus einer WHILE Schleife, die solange durchlaufen wird, bis die Taste q (für quit) gedrückt wird. Der jeweilige Tastendruck wird über die Funktion int getkey() ermittelt. Benutzen Sie die Funktion clock() um den aktuellen Zeitpunkt zu messen


    Vorgegebener CODE:
    #include <conio.h> // fuer kbhit()
    #include <time.h> // fuer time()und difftime()
    #include <stdio.h>// fuer printf()


    #define KEY_ENTER 13 // Eingabe Taste
    #define KEY_PREV 45 // Minus Taste
    #define KEY_NEXT 43 // Plus Taste


    enum zustand {RUNNING, STOPPED, RESET};


    char *state_name[] = {"RUN", "STOP", "RESET"};
    /**************************************************/
    void ShowClock(double time, zustand state){
    printf("%s %5.2lf\n", state_name[state], time);
    }


    /**************************************************/
    int getkey() {
    if (kbhit()) // falls Taste gedrückt
    return(getch()); //Rueckgabe der gedrueckten Taste
    else
    return(0);
    }
    //*************************************
    int main(void) {
    // Ihr Code ....



    Danke schon mal für die Mühe des lesens

  • Hallo jamo,
    ich habe gerade Schwabenpfeil gebeten das Thema [url=http://www.paules-pc-forum.de/phpBB2/topic,35224.html]HAUSAUFGABEN[/url] zu "Toppen".


    Peter

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!