Hirdetés

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

  • kispx
    addikt

    sziasztok,

    még csak ismerkedek a C programozási nyelvvel (bár nem ez az első nekifutásom) - egyszer már elolvastam a Kernighan-Ritchie féle könyvet, most elölről kezdtem és a példákon is végig megyek.

    van (még egészen az elején) egy példakód, aminek egy "aprócska" része nem igazán világos számomra: 1.5.4. Szavak számlálása fejezet példakódjáról van szó.

    az egészből egész pontosan ezt a kódrészletet nem értem:
    if (c == ' ' || c == '\n' || c == '\t')
    allapot = KINT;
    else if (allapot == KINT) {
    allapot = BENN;
    ++nw;
    }

    egész konkrétan az else if ágat nem értem belőle. az megvan, hogy a két állapot (KINT/BENN) között kell váltogatni, de miért így van megírva az else if feltétele? ha jól értem, csak azért, hogy beugorjon abba az ágba, átváltson BENN értékre és növelje az nw változó értékét...jól értem? csak mert ülök már felette jónéhány perce :DDD

    egyébként mire leírtam mégis csak koppanni látszik...na de akkor annyit ha segítenétek, hogy miért nem lehet a helyén egy sima else ág? vagy az allapot == KINT feltétel helyén egy akármilyen igaz feltétel?

    köszi előre is a segítő szavakat :R (remélem, nem kérdezek nagy baromságot)

    üdv,
    bepken

    Ha csak else ág lenne, akkor azokat a karaktereket számolná össze, ami nem szóköz, új sor vagy tabulátor.
    Így a szavak kezdőkarakterét számolja össze, ami megegyezik a szavak számával (mivel minden szónak csak egy kezdőkaraktere van).

    Ezért kellett az állapotgép (KINT, BENT), hogy meglehessen különböztetni a kezdőbetűt, a szó belsejében lévő betűtől.

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