Petla do..while problemik
Ostatnio zmodyfikowano 2012-06-25 16:37
Benu1 Temat założony przez niniejszego użytkownika |
Petla do..while problemik » 2012-06-25 16:04:29 Witam mam problem: #include <iostream> using namespace std;
int main()
{ float liczba; bool zabezpieczenie; cout << "Podaj liczbe: "; cin >> liczba; zabezpieczenie = cin.good(); cin.clear(); cin.sync(); if( liczba = zabezpieczenie ) { cout << "Czy liczba jest prawidlowa? " << cin.good() << endl; cout << "Podana liczba to: " << liczba << endl; } else do { cout << "Czy liczba jest nie prawidlowa? " << cin.fail() << endl; cout << "Podana liczba jest zla, podaj nowa: "; cin >> liczba; zabezpieczenie = cin.good(); cin.clear(); cin.sync(); } while( liczba = zabezpieczenie ); return 0; }
Prosze skompilowac i zobaczycie na czym blad polega a ja po krotce to sprobuje opisac; Podajac liczbe : sadasd123 pisze ze mam podac od nowa wiec znow podaje jakas ahsdhas123 i koniec programu prosze o pomoc |
|
Vallher |
» 2012-06-25 16:13:25 if( liczba = zabezpieczenie ) nie = tylko == Tak czy siak ta pętla wyżej nic Ci nie pomoże w sprawdzeniu czy dobrze wczytałeś, ponieważ przed nią 'zerujesz' te dane ? Tym oto kodem: Ponad to zastanów się co się będzie kryć pod zmienną: zabezpieczenie = cin.good(); I jak to się ma do warunku : while( liczba = zabezpieczenie ) (który też jest źle napisany - znak podstawienia (=) zamiast porownania(==), zresztą po co to porównanie?) |
|
Benu1 Temat założony przez niniejszego użytkownika |
» 2012-06-25 16:19:50 to porownanie } while( liczba == zabezpieczenie ); do tego by zakonczyl petle gdy liczba bedzie rowna zabezpieczenie czyli liczna bedzie cin.good();
Pod : zabezpieczenie = cin.good(); bedzie sie kryla liczba dobra czyli TRUE |
|
czosnek17 |
» 2012-06-25 16:22:22 Pętla się kończy jak w warunku jest fałsz, a nie prawda. |
|
Benu1 Temat założony przez niniejszego użytkownika |
» 2012-06-25 16:24:25 napisz czosnek to a ja bede wiedzial co i jak. |
|
Vallher |
» 2012-06-25 16:26:09 Nie bardzo wiem co ten program ma robić, ale patrz : Zakładając poprawność danych : cin >> liczba; zabezpieczenie = cin.good();
Jak poprawnie podałeś liczbe i wezmy to będzie 10 to : pod zmienna liczba masz wartosc 10 pod zmienna zabezpieczenie masz true (1) Następnie już w pętli while: znów wczytujesz wartość liczba np. 5 to wtedy liczba ma wartość 5 zabezpieczenie true (1) , a następnie porównujesz te liczby ? Po co ? Co ten program ma robić, to może wtedy Ci pomożemy :P Jeśli chcesz sprawdzać tylko poprawność danych to pętla while powinna sprawdzac czy dobrze się wczytało, czyli ma dostawać wartość true, gdy błędnie podasz dane, a false gdy chcesz z niej wyjść z poprawnymi danymi. |
|
czosnek17 |
» 2012-06-25 16:27:44 Jeżeli chcesz skończyć pętle, gdy liczba będzie równa zabezpieczenie, to robisz: ( liczba != zabezpieczenie ); ( liczba == zabezpieczenie ); to skończy pętlę, jeżeli liczba będzie różna od zabezpieczenia. |
|
Benu1 Temat założony przez niniejszego użytkownika |
» 2012-06-25 16:28:00 Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu: 1. Podaj liczbę 2. Jeżeli błąd, wróć do kroku 1. 3. Wypisz liczbę, która została podana.
Zadanie programu |
|
« 1 » 2 |