

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.
a preco tu podmienku jednoducho nedas do cyklu?
prikazy v cykle sa budu vykonavat dokym premenna o bude rovna hodnote 1. Inak sa cyklus ukonci.
Díky. A ještě kdybych chtěl, aby to reagovalo pouze na čísla a jak jsem psal, pokud bych vložil znak, napsalo by to hlášku?
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.
Je mnoho možností. Pokud o je unsigned, tak lze použít např.:
Díky. Udělal jsem to teda následovně a funguje.
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.
zkoušel jsem
a podle hodnoty p pak buď spustit podmínku pro "o", nebo napsat, že se nejedná o číslo. Ale nějak jsem se v tom zacykloval, takže to nechám zatím ladem. Jinak předchozí podmínka (výše) byla splněna. Dávám vyřešeno.