Instrukcja break
Ostatnio zmodyfikowano 2017-06-30 08:47
tomaszek321 Temat założony przez niniejszego użytkownika |
Instrukcja break » 2017-06-29 12:16:16 Witam, to moj pierwszy post na forum, dlatego z gory prosze o wyrozumialosc:) Czy moze mi ktos wyjasnic dlaczego w moim kodzie instrukcja break nie przerywa iteracji petli (licznik zawsze osiaga wartos iteracji). #include <iostream> #include <cctype>
double datki[ 10 ]; double suma = 0; double srednia = 0; double licznik = 0;
int main() { std::cout << "Prosze podaj sume darowizny: "; std::cout << std::endl; for( int i = 0; i < 10; i++ ) { if( isalpha(( int ) datki ) ) break; else { std::cin >> datki[ i ]; suma += datki[ i ]; licznik++; } } std::cout << "suma" << suma << std::endl; std::cout << "licznik" << licznik; srednia = suma / licznik; std::cout << std::endl; std::cout << srednia << std::endl; return 0; } |
|
pekfos |
» 2017-06-29 12:32:04 if( isalpha(( int ) datki ) )
|
A to co ma robić? |
|
mateczek |
» 2017-06-29 12:56:05 |
|
mateczek |
» 2017-06-29 12:59:53 for( int i = 0; i < 10; i++ ) { if( warunek ) break; else { std::cin >> datki[ i ]; suma += datki[ i ]; licznik++; } }
for( int i = 0; i < 10; i++ ) { if( warunek ) break; std::cin >> datki[ i ]; suma += datki[ i ]; licznik++; }
for( int i = 0;( i < 10 ) &&( !warunek ); i++ ) { std::cin >> datki[ i ]; suma += datki[ i ]; licznik++; } |
|
tomaszek321 Temat założony przez niniejszego użytkownika |
» 2017-06-29 13:10:42 Dzieki za pomoc. if( isalpha(( int ) datki ) ) a to mialo konczyc program gdy zostanie podana wartosc nieliczbowa:)
|
|
tomaszek321 Temat założony przez niniejszego użytkownika |
» 2017-06-29 13:15:18 I tak naprawde wywala z petli gdy wpisze wartosc nieliczbowa, ale wartos licznika osiaga zawsze wartosc iteracji. Postaram sie znalesc inny warunek. |
|
maly7 |
» 2017-06-29 14:30:49 if( isalpha(( int ) datki ) ) Nie możesz tak sprawdzać czy tablica jest wartością nieliczbową. datki to wskaźnik na tablicę, powinieneś sprawdzać konkretny element tablicy: if( isalpha(( int ) datki[ element ] ) ) Poza tym nawet nie wiem jak ci się to skompilowało (rzutowanie double* na int) |
|
jankowalski25 |
» 2017-06-29 15:06:35 Poza tym nawet nie wiem jak ci się to skompilowało (rzutowanie double* na int) |
Rzutowania w stylu C działają jak reinterpret_cast w C++, czyli w zasadzie można rzutować wszystko na wszystko (dlatego się kompiluje). Poza tym, isalpha() zwraca int , czyli dobrze byłoby dorzucić do warunku != 0 . |
|
« 1 » 2 |