[C++] Pętla do ... while - zadanie
Ostatnio zmodyfikowano 2014-06-26 16:02
Zrebol_33 Temat założony przez niniejszego użytkownika |
[C++] Pętla do ... while - zadanie » 2014-06-24 23:49:22 Witam, właśnie zabrałem się za temat poświęcony pętlą i wyłożyłem się na zadaniu domowym: 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. Czy udzieliłem poprawnej odpowiedzi na to zadanie? Kod działa...ale czy tak to ma wyglądać? ...( dodam tylko, że dopiero zaczynam przygodę z programowaniem) Kod: #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(); } while( liczba <= 0 ); std::cout << "Podales liczbe " << liczba << std::endl; std::cout << "Koniec" << std::endl; return 0; }
|
|
MrPoxipol |
» 2014-06-24 23:51:59 |
|
kamilpl1994 |
» 2014-06-25 09:55:10 Piszesz że "Zabezpiecz przed wczytaniem nieprawidłowej liczby" wydaje mi się że możesz wczytywać również liczby ujemne, bo w sumie to też jest liczba prawda? Sądzę że chodziło o zabezpieczenie przed wpisaniem np literki albo jakiegoś innego znaku specjalnego
Pozdrawiam |
|
Jacob99 |
» 2014-06-25 10:20:06 bool bliczba;
bliczba = std::cin.good(); |
A to po co? To nic nie robi. Co do sprawdzania czy wczytałeś liczbę, czy literę najlepiej użyć isalpha( char ch ) standard C isalpha |
|
Mateus. |
» 2014-06-25 10:37:44 Jacob99, w tym zadaniu ma sprawdzić czy udało się wczytać, czy nie, a nie co wczytano. Zrebol_33, popraw warunek kończący pętle, bo jest głupi (na taki, który kończy pętle, gdy uda się wczytać). |
|
pekfos |
» 2014-06-25 10:38:04 A to po co? To nic nie robi. |
A ma robić, nie zostać wywalone. Co do sprawdzania czy wczytałeś liczbę, czy literę najlepiej użyć isalpha( char ch ) |
W tym przypadku to nie jest żadne rozwiązanie. A tym bardziej najlepsze.. |
|
Zrebol_33 Temat założony przez niniejszego użytkownika |
» 2014-06-25 11:59:45 Dzięki za odpowiedzi :) Jacob99 - o takim rozwiązaniu nie było mowy w części kursy, a chciałbym rozwiązać to zadania właśnie korzystając z informacji zawartych w nim, ale dzięki :) *Daje poprawiony kod: #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 << "Udało sie? : " << bliczba << std::endl; } while( liczba == 0 ); std::cout << "Podales liczbe " << liczba << std::endl; std::cout << "Koniec" << std::endl; return 0; }
Czy są jeszcze jakieś błędy? |
|
pekfos |
» 2014-06-25 12:08:51 Nie reagujesz na faktyczny błąd, lecz na wpisanie zera, co może być skutkiem błędu, ale nie musi. |
|
« 1 » 2 3 |