Hirdetés

Új hozzászólás Aktív témák

  • kpisti1990
    csendes tag

    hahó;

    a switch-el a "state" változó értékét vizsgálod, ezért ha az állapotgépet léptetni akarod, akkor annak kell egy új értéket adni.
    valahogy így:
    {
    switch(state)
    case ALAP:
    ...
    state = FIZETETT;
    break;
    case FIZETETT:
    ...
    state = KESZ;
    break;
    case KESZ:
    ...
    state = ALAP;
    break;
    }

    Persze ez csak egy váz. A "state" értéke mindig attól függ, hogy a következő állapotba lépés engedélyezett-e; például az "ALAP" értéknél, csak a megfelelő karakter beolvasása után lehet "FIZETETT" érték, de remélem, hogy a lényeg megvan!

    Ha még nem olvastad, akkor hasznos: [Állapotgépek]

    Legközelebb használd a "Programkód" formázást, hogy olvasható legyen a kód amit beírsz.

    Szia!

    Köszönöm a választ:) Hasonlóval próbálkoztam, de valamiért nem akar működni :/

    int main()
    {
    typedef enum STATE_t {ALAP,FIZETETT,KESZ}STATE_t;
    STATE_t state;

    state=ALAP;
    while (1)
    {
    switch(state){
    case ALAP:
    printf("Udvozlom!Kerem valasszon italt\n");
    {
    char c;
    c=getchar();
    getchar();
    if (c=='k')
    printf("Kave 100Ft\n");
    if (c=='t')
    printf("Tea 150Ft\n");
    if (c=='c')
    printf("Forrocsoki 200Ft\n");
    }
    state=FIZETETT;
    break;

    case FIZETETT:

    Talán rosszul értelmezem neki a state-t? Vagy "csak a megfelelő karakter beolvasása után lehet "FIZETETT" érték" ezt úgy értetted, hogy erre is kéne írni egy if-es szerkezetet? if (valami==true) state=FIZETETT;?

Új hozzászólás Aktív témák