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

[15] Pętla do ... while

Ostatnio zmodyfikowano 2012-03-27 14:25
Autor Wiadomość
Unlimited
Temat założony przez niniejszego użytkownika
[15] Pętla do ... while
» 2012-03-15 23:40:42
Witam. Mam problem z zadaniem nr 1. Mój kod wygląda następująco:
C/C++
#include <iostream>
using namespace std;

int main()
{
    int a = 0;
    bool b;
   
    do
    {
        cin.clear();
        cin.sync();
        cout << "Podaj liczbe: " << endl;
        cin >> a;
        b = cin.good();
    } while( b = 1 );
   
    cout << "Liczba to: " << a << endl;
    return 0;
}
Jednak podaję w kółko liczby i litery i nic się nie dzieje. Jeśli w while zamienię w nawiasie na 0 to program wykona się raz i zwróci jeśli litera to 0 a jeśli cyfra to cyfrę. Widziałem inne tutaj rozwiązania ale chciałbym wiedzieć jak to wykonać w moim wypadku.

Przepraszam za zawracanie głowy ale kombinowałem już 3h z tym a po napisaniu posta nagle znalazłem rozwiązanie. Miało być b==1 a nie b=1 :)
P-52676
Thud
» 2012-03-15 23:59:13
Czy = jest = ==?

Tak btw. Ja preferuję zapis
true
P-52679
Unlimited
Temat założony przez niniejszego użytkownika
» 2012-03-16 00:07:37
No tak:
= równa się
== równe

Dlaczego true? Patrzyłem teraz na inne programy z tego rozdziału i widzę że tam jest znacznie więcej kodu aniżeli u mnie. A chyba o to chodzi że im mniej tym lepiej (szybszy?, czytelniejszy?, mniej zasobów potrzebuje?). No chyba, że ja jestem w błędzie to proszę popraw mnie.
P-52680
Thud
» 2012-03-16 00:09:22
Mi chodzi o zastosowanie true jako wartości logicznej.

Pozwala to odróżnić system liczbowy od systemu binarnego w tym wypadku.

bool a = true;
P-52681
DejaVu
» 2012-03-16 02:12:13
= przypisz
== porównaj
P-52683
RazzorFlame
» 2012-03-16 08:21:04
Jezeli chcesz zeby ci działało to zrób:
C/C++
do
{
    //...
} while( b != true ); //wykonywać się bedzie dopóki b jest równe false

P-52685
Unlimited
Temat założony przez niniejszego użytkownika
» 2012-03-16 12:17:24
Dziękuję bardzo wszystkim teraz już rozumiem.
Razor, to jest też to samo co:
while( b != 1 ); lub while( b == 0 );

Mam także pytanie czy mój kalkulator może zakwalifikować się do zadania 2 z tego rozdziału?
C/C++
#include <iostream>
using namespace std;

int main()
{
    int wybor = 0;
    float a = 0;
    float b = 0;
   
    do
    {
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Koniec" << endl;
        cin >> wybor;
       
        switch( wybor )
        {
        case 1:
            {
                cin.clear();
                cin.sync();
                cout << "Podaj a: ";
                cin >> a;
                cout << "Podaj b: ";
                cin >> b;
                cout << "Wynik dodawania: " << a + b << endl;
                break;
            }
        case 2:
            {
                cin.clear();
                cin.sync();
                cout << "Podaj a: ";
                cin >> a;
                cout << "Podaj b: ";
                cin >> b;
                cout << "Wynik odejmowania: " << a - b << endl;
                break;
            }
        case 3:
            {
                cin.clear();
                cin.sync();
                cout << "Podaj a: ";
                cin >> a;
                cout << "Podaj b: ";
                cin >> b;
                cout << "Wynik mnozenia: " << a * b << endl;
                break;
            }
        case 4:
            {
                cin.clear();
                cin.sync();
                cout << "Podaj a: ";
                cin >> a;
                cout << "Podaj b: ";
                cin >> b;
                cout << "Wynik dzielenia: " << a / b << endl;
                break;
            }
        case 5:
            {
                cout << "Koniec!";
                break;
            }
            default:
            {
                cout << "Mialo byc od 1 do 5!" << endl;
                break;
            }
        }
    } while( wybor != 5 );
   
    return 0;
}
Działa w ten sposób co chyba autor chciał ale jednak trochę się różni...
P-52686
MeehoweCK
» 2012-03-27 12:50:28
Również mam problem z zadaniem pierwszym, nie wiem co zrobiłem źle. Próbowałem na wiele sposobów przez ponad godzinę i cały czas efekt jest taki sam. Oto mój kod:
C/C++
#include <iostream>
using namespace std;

int main()

{
    bool blad;
    float liczba;
   
    do
    {
        cin.sync();
        blad = 0;
        liczba = 0;
        cout << "Prosze wpisz liczbe: ";
        cin >> liczba;
        blad = cin.fail();
    } while( blad == 1 );
   
    cout << "Podales liczbe " << liczba << endl << "Koniec" << endl;
   
    return 0;
}
Gdy wpisuję liczbę, wszystko jest ok, ale gdy wpisuję słowo, pętla nie ma końca. Dlaczego?
P-53282
« 1 » 2
  Strona 1 z 2 Następna strona