Diskuze: Test na vstupné znaky
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Spíš bude problém ve vstupu. Tenhle kus kódu nám není moc platný.
viem, mam tam while(1). Ide mi len o to, ci existuje sposob ako vyradit zadavanie znakov z klavesnice. Chcem, aby bralo len cisla
Můžeš na vstupu testovat, jestli jsi opravdu zadal číslo, a pokud ne, tak programu nastavíš nějaké adekvátní chování.
#include <stdio.h>
int main()
{
int v;
if (scanf("%d", &v)) {
switch (v)
{
case 1: v = 0;
break;
case 2: v = 1;
break;
case 3: v = 2;
break;
case 4: v = 3;
break;
case 5: v = 4;
break;
}
}
else {
printf("Spustam nekonecny cyklus!\n");
for(;;)
;
}
return 0;
}
Proces ukončíš dvojklikom ctrl+c.
Takto to bude lepšie:
#include <stdio.h>
int main(void)
{
int v;
do {
switch (v)
{
case 1: v = 0;
break;
case 2: v = 1;
break;
case 3: v = 2;
break;
case 4: v = 3;
break;
case 5: v = 4;
break;
default:
continue;
}
} while (scanf("%d", &v));
printf("Spustam nekonecny cyklus!\n");
while (1)
;
return 0;
}
Tohle bych nedělal. Ten cyklus se provede minimálně jednou úplně zbytečně. Tuším, že tu nekonečnou smyčku tam mít nechtěl.
int main()
{
int v;
short int running = 1;
while(running) //dokud je running 1, cyklus probiha
{
if(scanf("%d",&v)) //otestuje zda je spravny vstup
{
//program neco udela s daty
}
else
{
printf("chyba\n");
getchar(); //nutne, jinak znak zustane na vstupu a program se zacykli
}
} //pro ukonceni cyklu musi byt hodnota promenne running nastavena na 0
}
Zobrazeno 8 zpráv z 8.