Zrebol_33 Temat założony przez niniejszego użytkownika |
» 2014-06-25 12:33:13 Nie mam już pomysłu jak to zrobić :/ Ostatnie co przyszło mi do głowy to: #include <iostream> int main() { float liczba; bool bliczba; do { std::cout << "Podaj liczbe: " << std::endl; std::cin >> liczba; bliczba = std::cin.good(); std::cin.clear(); std::cin.sync(); std::cout << "Udalo sie? : " << bliczba << std::endl; } while( !bliczba ); std::cout << "Podales liczbe " << liczba << std::endl; std::cout << "Koniec" << std::endl; return 0; }
...dzięki :) |
|
Jacob99 |
» 2014-06-25 15:14:24 Wciąż nie używasz bliczba . Przypisujesz do niej wartość std::cin.good() , a nie sprawdzasz prawdziwego stanu strumienia. Ten kod powinien wyglądać mniej więcej tak: #include <iostream> int main() { float liczba = 0; do { std::cout << "Podaj liczbe: " << std::endl; if( !std::cin.good() ) { std::cout << "Nie udalo sie wczytac liczby " << std::endl; std::cin.clear(); std::cin.sync(); continue; } else std::cout << "Wpisales liczbe : " << liczba << std::endl; } while( true ); return 0; }
Aby wyjść z programu musisz odkomentować linijki z kodem. Oczywiście znak wyjścia z aplikacji można zmienić. Według treści zadania którą napisałeś w pierwszym poście pętla ma wczytywać i wypisywać liczbę, którą się wpisało. Nie wiedziałem czy to ma być jedna liczba, czy dowolna ich ilość, więc zrobiłem pętlę nieskończoną(przerywaną poleceniem break ) |
|
Mateus. |
» 2014-06-25 16:10:58 Jacob99 Używasz wyrażeń, których on na 99% nie zna, bo to jedna z pierwszych lekcji tego kursu. Wszystkie linijki z bliczba możesz usunąć. Strumień wejściowy powinieneś czyścić na początku pętli, a w warunek kończący może być np. taki: while( !cin.good() ); |
|
pekfos |
» 2014-06-25 17:32:55 Jacob99: Piszesz nie na temat (znowu). |
|
Jacob99 |
» 2014-06-25 17:57:09 @Pekfos A co napisałem (znowu) nie na temat? @Mateus. Może nie znać cin.putback() , cin.get() i continue , resztę powinien znać, bo pętle są dopiero w 2 dziale kursu. |
|
Zrebol_33 Temat założony przez niniejszego użytkownika |
» 2014-06-25 20:49:46 Dzięki wszystkim za pomoc :) Mateus - zrobiłem jak kazałeś, lecz twój warunek while( !cin.good() ); niezależnie od tego, czy wprowadzi się liczbę, czy literę...zawsze kończy działanie pętli. W zadaniu mam podane: 1. Podaj liczbę 2. Jeżeli błąd, wróć do kroku 1. - chodzi mi o to :) 3. Wypisz liczbę, która została podana |
|
libed |
» 2014-06-25 21:19:36 Ale po co tak kombinować? :) #include <iostream>
int main( int argc, char ** argv ) { int liczba; do { std::cin.sync(); std::cin.clear(); std::cout << "Podaj liczbe: "; std::cin >> liczba; } while( !std::cin.good() ); std::cout << "Wczytana liczba to " << liczba << "\n"; return 0; } |
|
pekfos |
» 2014-06-25 22:16:27 A co napisałem (znowu) nie na temat? |
Podałeś własne rozwiązanie niezgodne z zadaniem, którego dotyczy ten temat i niezgodne z poziomem wiedzy pytającego. Jeśli to taki problem się do tego dostosować, nie udzielaj się w tematach w dziale "Kurs C++ - pierwsza pomoc". Podawane rozwiązania mają być takie, do jakich mógłby dojść sam pytający, opierając się na wiedzy zdobytej w przerobionych lekcjach kursu. Rozwiązania wykraczające poza ten poziom, choćby były lepsze pod każdym względem, nie są odpowiedzią na zadanie z kursu, ani na tematy takie jak ten. |
|
1 « 2 » 3 |