[15] Pętla do ... while
Ostatnio zmodyfikowano 2012-03-27 14:25
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: #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 :) |
|
Thud |
» 2012-03-15 23:59:13 Czy = jest = ==? Tak btw. Ja preferuję zapis true |
|
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. |
|
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; |
|
DejaVu |
» 2012-03-16 02:12:13 = przypisz
== porównaj |
|
RazzorFlame |
» 2012-03-16 08:21:04 Jezeli chcesz zeby ci działało to zrób: do { } while( b != true );
|
|
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? #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... |
|
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: #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? |
|
« 1 » 2 |