Hirdetés

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

  • kpisti1990
    csendes tag

    Í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.

    Szia! Köszönöm a választ! SIkerült! :D
    int main()
    {
    typedef enum {ALAP,FIZETETT,KESZ}STATE_t;
    STATE_t state;

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

    }
    }
    return 0;
    }

    Egyet nem értek, ha lefuttatom, magától lefut még1x vagy 2x. return-t kéne átírni? 0-val kezdi előlről az egészet? Mintha tárolná valahol azt, hogy előző körben mit adtanm meg neki.

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