Sprawdzanie poprawności wczytywanych danych
Ostatnio zmodyfikowano 2010-12-29 12:01
Marys Temat założony przez niniejszego użytkownika |
Sprawdzanie poprawności wczytywanych danych » 2010-12-24 06:28:07 Jak zrobić kasować w konsoli (cin) nie poprawne dane. Chodzi o to, że np. jak ktoś wprowadzi literę lub ciąg liter to kasuje wpisany wynik i kursor powraca na pierwotne miejsce. Jeszcze przydałoby się sprawdzać czy została wpisana cyfra nieparzysta i z przedziału (a, b). |
|
DejaVu |
» 2010-12-24 08:18:15 Kursy |
---|
Obsługa strumienia wejściowego | Rozdział 9. Omówienie obsługi standardowego wejścia za pomocą strumienia std::cin oraz przedstawienie sposobu walidacji wczytywanych danych. (lekcja) |
---|
Wykorzystujesz synca omówionego w tutorialu. Do powtarzania tworzysz pętlę. Do sprawdzania czy parzyste wykorzystujesz warunek pętli lub if'a w zależności od tego co chcesz osiągnąć. |
|
Mazzir |
» 2010-12-25 17:26:51 #include <iostream> #include <conio.h>
using namespace std;
main() { poczatek: int a, twoje_dane = 0; cout << "Podaj dane: "; cin >> a; if( a != twoje_dane ) goto poczatek; else { return 0; } }
To jest tylko przykład (wiem, że goto jest złe) ;p |
|
DejaVu |
» 2010-12-25 17:32:49 Tak się nie sprawdza poprawności danych. |
|
malan |
» 2010-12-25 17:48:04 Można też tak: #include <iostream>
const int RANGE_BEGIN = 0; const int RANGE_END = 69;
int main() { int num; while( true ) { std::cin >> num; if( std::cin.fail() ) { std::cout << "input error!" << std::endl; std::cin.clear(); std::cin.sync(); } else { if( num >= RANGE_BEGIN && num <= RANGE_END ) break; else std::cout << "input error: bad range!" << std::endl; } } std::cout << num; return 0; } |
|
Mazzir |
» 2010-12-25 18:22:48 Aaa o to chodzi ;p To sory - nie patrz na mój post nawet xD |
|
Marys Temat założony przez niniejszego użytkownika |
» 2010-12-27 05:10:38 Dobra zrobiłem to trochę inaczej, z wykorzystaniem funkcji wherex i wherey oraz gotoxy() i działa :) Później wrzucę kod bo mam na drugim kompie. |
|
ison |
» 2010-12-27 11:29:53 @malan nie byłoby łatwiej zwyczajnie użyć try, catch i throw? |
|
« 1 » 2 |