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 |