A C "Bibliában" az 1.5.4 fejezetben szereplő szó, karakter és sorszámláló pédaprogramban nem értem az else if (allapot == KINT) { allapot = BENN; ++nw;} kódrészt. Ha az ALLAPOT egyenlő KINT-tel akkor az ALLAPOT miért kapja meg BENN értékét?!
Figyelt kérdés
#include <stdio.h>
#define BENN 1 /* a szó belseje */
#define KINT 0 /* a szón kivül */
/* a bemenetre adott szövegben lévő sorok,
szavak és karakterek számolása */
main( )
{
int c, nc, nl, nw, allapot;
allapot = KINT;
nl = nw = nc = 0;
while ((c = getchar( )) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
allapot = KINT;
else if (allapot == KINT) {
allapot = BENN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
2016. szept. 14. 14:02
1/3 anonim válasza:
Lépked végig a karakterekem, mondjuk:
[ ][\t][\t][\n][A][B][C]
Amikor az első négyet olvasod, kint vagy (beolvasás _után_ a karakter mögött vagyunk).
Ha nem szóköz, tab vagy newline, akkor (else if) bent vagyunk, nem ([A] utánról beszélünk)?
2/3 SimkoL válasza:
Azért mert a szavakat egymástól szóköz, újsor vagy tab választja el és ezekből elég egy is, hogy újabb szónak minősüljön. Tehát ha a fent emlitettekből már volt egy legalább egy, akkor feltételezi, hogy új szó következik még ha egy újabb szóköz is előzi meg.
3/3 anonim válasza:
Csak akkor tudunk bejönni ha kint vagyunk.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!