Hirdetés

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

  • stepboy
    csendes tag

    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;?

    Így már jobban látom a kódod.
    Miért van két "getchar()" ?

    Igen, úgy értettem, hogy csak akkor adhatsz a "state" változónak új értéket, ha a beolvasott karakter megfelelő, valahogy így:

    while ( 1 )
    {
    switch ( state )
    {
    case ALAP:
    {
    printf( "szöveg\n" );
    char c = getchar();
    if ( ( c != 'k' ) || ( c != 't' ) || ( c != 'c' ) )
    {
    printf( "rossz betű\n" );
    }
    else if ( c == 'k' )
    {
    printf( "jó betű 1.\n" );
    state = FIZETETT;
    }
    else if ( c == 't' )
    {
    printf( "jó betű 2.\n" );
    state = FIZETETT;
    }
    else
    {
    printf( "jó betű 3.\n" );
    state = FIZETETT;
    }
    break;
    }
    case FIZETETT:
    {
    printf( "valami szöveg\n" );
    state = KESZ;
    break;
    }
    case KESZ:
    {
    printf( "megint szöveg\n" );
    state = ALAP;
    break;
    }
    }
    }

    Ez nem egy szép kód, de kezdetnek megteszi.

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