Zapętlanie się komunikatu o błędnej wartości wprowadzonej przez użytkownika.
Ostatnio zmodyfikowano 2013-11-05 21:54
BorntobeWild Temat założony przez niniejszego użytkownika |
Zapętlanie się komunikatu o błędnej wartości wprowadzonej przez użytkownika. » 2013-11-05 20:33:44 Witam wszystkich :) Podjąłem próbę napisania programu, który jest moją pracą domową. Oto polecenie mojego programu: Napisz program wczytujący z klawiatury n liczb całkowitych. Program ma znaleźć najmniejszą spośród podanych liczb oraz wydrukować na ekranie informację mówiącą o tym, ile razy najmniejsza liczba wystąpiła w podanym ciągu liczb. Naskrobałem coś takiego: #include<iostream>
using namespace std;
int main() { int ileliczb, licznikmin = 1, liczba, min; cout <<( "\n\nPodaj ile liczb wprowadzasz: " ); cin >> ileliczb; min = 65535; cout <<( "\n\nPodaj liczby, kazda oddzielajac klawiszem enter:\n\n" ); while( ileliczb <= 0 ) cout << "Bledna ilosc liczb" << endl; while( ileliczb > 0 ) { cin >> liczba; { if( liczba < min ) { min = liczba; licznikmin = 1; } else if( liczba == min ) ++licznikmin; } --ileliczb; } cout << "Najmniejsza liczba to " << min << ", a wystepuje ona " << licznikmin << " razy" << endl; system( "pause" ); getchar(); return 0; }
Działać działa ale jak wpisujemy ilość wprowadzanych liczb np. 0 albo -1 to cały czas się zapętla i wyświetla komunikat, który to chciałem żeby wyświetlał tylko raz. Próbuje i nie mogę dojść do tego, żeby się nie zapętlał. |
|
pekfos |
» 2013-11-05 21:16:20 while( ileliczb <= 0 ) cout << "Bledna ilosc liczb" << endl;
Jak rozumiesz ten kod? |
|
BorntobeWild Temat założony przez niniejszego użytkownika |
» 2013-11-05 21:20:14 Rozumiem go w ten sposób, że gdy zmienna "ileliczb" jest mniejsza lub równa zeru to program ma wyświetlić komunikat "błędna ilość liczb". Po głębszym namyśle zrobiłem coś takiego - działa ale nie wygląda mi to na poprawnie napisane: #include<iostream>
using namespace std;
int main() { int ileliczb, licznikmin = 1, liczba, min; cout <<( "\n\nPodaj ile liczb wprowadzasz: " ); cin >> ileliczb; while( ileliczb <= 0 ) { cout << "Bledna ilosc liczb" << endl; return 0; } min = 65535; cout <<( "\n\nPodaj liczby, kazda oddzielajac klawiszem enter:\n\n" ); while( ileliczb > 0 ) { cin >> liczba; { if( liczba < min ) { min = liczba; licznikmin = 1; } else if( liczba == min ) ++licznikmin; } --ileliczb; } cout << "Najmniejsza liczba to " << min << ", a wystepuje ona " << licznikmin << " razy" << endl; system( "pause" ); getchar(); return 0; }
EDIT: Po zagłębieniu się w znaczenie słówka while doszedłem do wniosku, iż oznacza ono dopóki, czyli chyba muszę zastosować if-a. Poczytam trochę o jego składnii i spróbuję.... |
|
docentpp |
» 2013-11-05 21:40:58 Zastąp pierwszą pętlę następującym kodem : do { cout <<( "\n\nPodaj ile liczb wprowadzasz: " ); cin >> ileliczb; if( ileliczb <= 0 ) cout << "Bledna ilosc liczb" << endl; } while( ileliczb <= 0 );
i przeanalizuj warunki logiczne. |
|
megatron |
» 2013-11-05 21:41:50 Może użyj pętli do-while. Edit. @up Zlagowałem ;D |
|
BorntobeWild Temat założony przez niniejszego użytkownika |
» 2013-11-05 21:54:52 Dziękuję bardzo za pomoc. Po tych wszystkich poprawkach wszystko jest już jak należy.
Pozdrawiam. |
|
« 1 » |