Anonymní profil q – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil q – Programujte.comAnonymní profil q – Programujte.com

 

Příspěvky odeslané z IP adresy 89.102.181.–

q
C / C++ › Objekt cin
4. 8. 2010   #132203

Děkuji za rychlou odpověď:)

q
C / C++ › Objekt cin
4. 8. 2010   #132201

Č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

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032022 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý