Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C - výběr ze dvou možností

Zdravíčko.. Na začátek chci upozornit, že s C jsem začal od píky před pár dny :-)

Mám program, který něco počítá a na konci, jak vyplivne výsledek, je na výběr pokračovat (1) nebo ukončit program (0). Po stisku 1 se celý program opakuje. Je to cyklus while. Na konci cyklu mám tedy:

printf("\nPro pokracovani napis 1, pro ukonceni 0\n");

scanf("%lf",&o);

if ( o == 1)
   continue;

if ( o == 0)
   break;

A potřebuji nějak ošetřit, pokud se stiskne jiné číslo nebo místo čísla znak, aby to napsalo varovnou hlášku a opět by nabídlo výběr stiskni 1 nebo 0. Prosím o lehké nakopnutí, jak na to. Děkuji.

Předmět Autor Datum
a preco tu podmienku jednoducho nedas do cyklu? do { prikazy; scanf("%lf", &o); }while (o == 1); p…
wam_Spider007 27.09.2011 17:08
wam_Spider007
Díky. A ještě kdybych chtěl, aby to reagovalo pouze na čísla a jak jsem psal, pokud bych vložil znak…
Niko Bellic 27.09.2011 17:17
Niko Bellic
to neviem, az taky zbehly v Ccku nie som, ale myslim, ze by stacilo aby premenna "o" bola typu int.…
wam_Spider007 27.09.2011 19:29
wam_Spider007
Je mnoho možností. Pokud o je unsigned, tak lze použít např.: do { printf("\nPro pokracovani napis…
oval 28.09.2011 00:34
oval
Díky. Udělal jsem to teda následovně a funguje. do { printf("\nPro pokracovani napis 1, pro ukoncen…
Niko Bellic 28.09.2011 11:05
Niko Bellic
Samotne scanf ma aj navratovu hodnotu. Viz google (tusim ze vracia pocet prevedenych veci, t.j. u te…
MM.. 28.09.2011 09:00
MM..
zkoušel jsem p=scanf("%lf",&o) == EOF; a podle hodnoty p pak buď spustit podmínku pro "o", nebo na… poslední
Niko Bellic 28.09.2011 11:10
Niko Bellic

to neviem, az taky zbehly v Ccku nie som, ale myslim, ze by stacilo aby premenna "o" bola typu int. Ak by si chcel riesit onu kontrolu musel byt si mat premennu typu char a nejakou funkcoiu "isnumeric" riesit ci zadane bolo cislo. Ale problem moze nastat, pokial dotycny zada string (viac znakov). Preto mozno namiesto scanf je vhodne pouzit getc() - ale neviem, ci si to uz nevyzaduje kniznicu conio.h ci ako.

Samotne scanf ma aj navratovu hodnotu. Viz google (tusim ze vracia pocet prevedenych veci, t.j. u teba to bude 1 ak zadal user cislo, alebo 0 ak zadal hovadinu co sa neda previest na cislo). Tak tu navratovu hodnotu testuj, aby si vedel reagovat na ne-cislo. Samozrejme ze musis aj testovatostatne cisla (ak je premenna o unsigned, tak ti okrem navr.hodnoty scanf staci testovat if o>1)

Inac stlacenie nejakej klavesy sa lepsie robi pomocou getch() ptz tam reagujes okamzite na zmacknutie jednej klavesy, a necaka to na potvrdenie nejakeho celoriadkoveho maglajzu od usera.

Zpět do poradny Odpovědět na původní otázku Nahoru