Děkuji za rychlou odpověď:)
Příspěvky odeslané z IP adresy 89.102.181.–
q
q
Čtu knihu Mistrovství C++. V 6. kapitole, v části 'Cykly, které čtou čísla' je program, který vyzývá uživatele, aby zadával numerické údaje a v případě, že chce ukončit zadávání, zadal "q". Tyto vstupy čte pomocí cin >> fish[i] (fish je pole typu double). Kniha tvrdí, že pokud uživatel zadá slovo místo čísla, vstup se nechá ve vstupní frontě, nastaví se chybový příznak objetu cin a objekt při volání navrací false po konvertování na bool.
Zadávání probíhá tímto cyklem:
while (i < Max && cin >> fish[i]){
if (++i < Max)
cout << "ryba #" << (i+1) << ": ";
}
Takže, jestli jsem to správně pochopila, zadáním nenumerického vstupu by se měl ukončit cyklus a zbytek programu by se měl provést. Mně se ale program vždycky hned ukončí. Je to nastavením kompilátoru?
Nevím, jestli se mi to povedlo správně vysvětlit, proto kód celého programu:
//cinfish.cpp - nenumericky vstup ukoncuje cyklus
#include <iostream>
using namespace std;
const int Max = 5;
int main()
{
double fish[Max];
cout << "Prosim, zadejte cahy vasich ryb.\n";
cout << "Muzete zadat az " << Max
<< " ryb <q pro ukonceni>.\n";
cout << "ryba #1: ";
int i = 0;
while (i < Max && cin >> fish[i]){
if (++i < Max)
cout << "ryba #" << (i+1) << ": ";
}
double total = 0.0;
for (int j=0; j<i; j++)
total += fish[j];
if (i==0)
cout << "Zadna ryba\n";
else
cout << total/i << " = prumerna vaha "
<< i << " ryb\n";
cin.get();cin.get();
return 0;
}
...a ještě ukázka běhu programu uvedená v knize:
Prosim, zadejte vahy vasich ryb.
Muzete zadat az 5 ryb <q pro ukonceni>.
ryba #1: 30
ryba #2: 35
ryba #3: 25
ryba #4: 40
ryba #5: q
32,5 = prumerna vaha 4 ryb