ďťż

Ładny brzuch

int size = 0; for(;;){ cout<<"Podaj rozmiar tablicy:"<<endl; cin>>size; if (size < 3) cout<<"Podana liczba nie ma sensu !! Spróbuj jeszcze raz."<<endl; else break;

Dlaczego jak user poda zamiast cyfry literę program się zapętla ?
Jak user poda liczbę zmiennoprzecinkową, to całości są pobierane, a części dziesiętne wpisywane są do drugiego cin parę linijek niżej - automatycznie.
Jak temu zapobiec ?



Część dziesiętną należy wpisywać po kropce, nie po przecinku.
Jeśli chcesz po przecinku, to już jest to wyższa szkoła jazdy z funkcją itd.

Co ma oznaczać warunek ( ; ; ) ??
Chyba chodzi Ci o:

int size = 0; while (size < 3){ cout<<"Podaj rozmiar tablicy:"<<endl; cin>>size; if(size<3){ cout<<"Podana liczba nie ma sensu !! Spróbuj jeszcze raz."<<endl; } }
Użytkownik Lupinek edytował ten post 09 październik 2007, 22:36
A bo na szybko pisałem :)
Nie ma przecież znaczenia, czy warunek będzie w while czy będzie pętla nieskończona for z breakem.
Po Twojemu ładnie wygląda.

A spróbuj zamiast cyfry wpisać litere. O i się ciągle zapętla!

Pomocny może się okazać poniższy kod.

#include <iostream> using namespace std; int main() { int size = 0; while (size < 3){ cout << "Podaj rozmiar tablicy: "; cin >> size; if (size < 3){ cout<<"Podana liczba nie ma sensu !! Spróbuj jeszcze raz."<<endl; cout << size << endl; } } }

Dodane zostało do niego wyświetlanie się wartości zmiennej size. I co się okazuje? Gdy wpiszemy literę to zmienna ta ma wartość równą 0. A ponieważ wpisaliśmy nieprawidłową wartość (literę zamiast liczby), program nie prosi nas już o kolejne wpisanie liczby w kolejnej iteracji, tylko zapętla się w nieskończoność, jako że warunek pętli po wpisaniu litery, jest nadal prawdziwy.



Jako, że sam się właśnie uczę c++ pozwoliłem sobie wkleić to co udało mi się z tego zrobić ;).
using namespace std; #include <iostream> int main() { int size = 0; while (size < 3) { cout << "Podaj rozmiar tablicy: "; cin >> size; if (cin.fail() == true) { cout << "Podaj liczbe!\n"; cin.clear(); cin.ignore(); } else { if (size < 3) { cout<<"Podana liczba nie ma sensu !! Spróbuj jeszcze raz."<<endl; }; }; }; };
Użytkownik Ali240 edytował ten post 11 październik 2007, 16:01
Ali240:
Twój sposób jest bardzo dobry.

Teraz pozostał problem, jak nie pozwolić userowi wpisywać liczby typu float, np 4.13
Bo wtedy tablica będzie 4 elementowa, a 0.13 powędruje od razu do kolejnego cina :/


Ali240:
Twój sposób jest bardzo dobry.

Teraz pozostał problem, jak nie pozwolić userowi wpisywać liczby typu float, np 4.13
Bo wtedy tablica będzie 4 elementowa, a 0.13 powędruje od razu do kolejnego cina :/

Ja bym pokombinował z pobraniem następnego znagu get'em (cin.get( c )) i odłożeniem jak to nie "." cin.unget( c ); ;)

Polecam: http://www.cplusplus...rence/iostream/
Użytkownik Ali240 edytował ten post 11 październik 2007, 21:17
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •