Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Petla do..while problemik

Ostatnio zmodyfikowano 2012-06-25 16:37
Autor Wiadomość
Benu1
Temat założony przez niniejszego użytkownika
Petla do..while problemik
» 2012-06-25 16:04:29
Witam mam problem:

C/C++
#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
P-59079
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:
C/C++
cin.clear();
cin.sync();

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?)
P-59080
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
P-59081
czosnek17
» 2012-06-25 16:22:22
Pętla się kończy jak w warunku jest fałsz, a nie prawda.
P-59082
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.
P-59083
Vallher
» 2012-06-25 16:26:09
Nie bardzo wiem co ten program ma robić, ale patrz :

Zakładając poprawność danych :

C/C++
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.
P-59084
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.
P-59085
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
P-59086
« 1 » 2
  Strona 1 z 2 Następna strona