Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam
Jaka jest funkacja w cpp do kontroli wprowadzanych danych z klawiatury
Offline
Do napisania jest.
Offline
Użyj funkcji warunkowych.
if(zmienna==EOF) i dalej cout z komunikatem o błędzie czy coś.
Offline
Chyba jestem zmuszony do instrukcji warunkowych, myślałem, że może jest jakaś gotowa funkcja.
A może da się załatwić pętlą w tym stylu?
while (zmienna != true) { cout << "Wpisujesz zły format danych\n"; cin >> zmienna; }
Tylko coś nie wychodzi gdzieś robię błąd.
Offline
Co oznacza wg ciebie warunek "zmienna != true" ? Jaki masz ten prawidłowy format danych? A co do tego, że gotowa funkcja nie istnieje to pomyśl, że formatów danych można wymyśleć pewnie nieskończenie wiele. Chciałbyś tyle samo funkcji do wyboru? Inna sprawa gdy np. w PHP masz funkcje do escapowania stringów z formularza, tam format jest znany - kod HTML i JS jest do zabezpieczenia. Tutaj nic o tym nie wiadomo, nikt nie zakłada żadnych ograniczeń.
Offline
Jeżeli oczekuję zmiennej typu int a nie chcę aby użytkownik wpisał format typu char lub inny to wykonuj sprawdzanie dopóty użytkownik wpiszę poprawny format. Mniej więcej coś takiego bym chciał osiągnąć.
Wydaje mi się że w nowoczesnym języku programowania powinno się dać odczytać jakiego formatu są da wprowadzane dane.Jeżeli coś jest cyfrą to jest cyfrą , jeżeli wpisuję dane "ala ma kota" to język powinien wykryć że są to dane typu string(char).
W koncu ile język c++ ma zdefiniowanych typów zmiennych że nie dałoby się tego ogarnąć.
Ostatnio edytowany przez hello_world (2011-10-10 08:57:46)
Offline
Chłopie, TRUE to typ logiczny (bool) . Weź no tam walnij coś normalnego, w stylu
zmienna!=a czy coś.
Ogólnie to masz funkcje sprawdzające, czy znak jest literą/cyfrą.
isdigit, isalnum etc. (ctype.h) -> Poczytaj o nich, fajne są.
I jak masz takie problemy to może zerknij w : http://www.egrafik.pl/kurs-c-plus-plus/
Posiedzisz parę dni i ci się rozjaśni.
//Do powyższego:
isdigit.
Ostatnio edytowany przez Trin (2011-10-10 08:59:39)
Offline
Chłopie, TRUE to typ logiczny (bool) . Weź no tam walnij coś normalnego, w stylu
zmienna!=a czy coś
Skąd mam wiedzieć że ktoś wprowadzi dane któe ja oczekuję.
Wydawało mi się że jeżeli deklaruję zmienną np typu int, a ktoś wprowadzi błędny format danych to zmienna będzie miała wartość logiczną błędną a nie prawdziwą.
Ogólnie to masz funkcje sprawdzające, czy znak jest literą/cyfrą.
isdigit, isalnum etc. (ctype.h) -> Poczytaj o nich, fajne są.
Właśnie o takie funkcje mi chodziło, potestuję dzięki
PS rozumię że trzeba dodać nagłówek ctype.h ?
Ostatnio edytowany przez hello_world (2011-10-10 09:03:57)
Offline
Dokładnie :)
A właściwie powinien pojść cctype czy jakoś tak... W końcu to cpp a nie c...
Offline
Skąd mam wiedzieć że ktoś wprowadzi dane któe ja oczekuję.
Wydawało mi się że jeżeli deklaruję zmienną np typu int, a ktoś wprowadzi błędny format danych to zmienna będzie miała wartość logiczną błędną a nie prawdziwą.
A ja zaryzykuję stwierdzenie, ze jeśli ktoś chce wiedzieć, czy dane wejściowe mają prawidłowy format, objętość, i nie zawierają treści niepożądanych, to przede wszystkim regex - czyli wyrażenia regularne.
W C++ też są.
W Debianie o ile się nie mylę, to będzie :
apt-cache show libpcrecpp0 ......... Description: Perl 5 Compatible Regular Expression Library - C++ runtime files This is a C++ library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. .........
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2011-10-10 10:03:25)
Offline
Okazuje się że wydedukowalem taki kod, który w sumie chyba zachowuje się tak jak chcę.
#include <iostream> #include <limits> using namespace std; int main() { int a = 0 ; cout << "Napisz liczbę: \n"; while (!(cin >> a)) { cout << "Wpisana przez Ciebie liczba to nie jest liczba, wpisz jeszcze raz: "<< endl; cin.clear(); cin.ignore(numeric_limits<int>::max(),'\n'); } cout << "Wpisana liczba to: \n" <<a; return 0; }
Jakoś ciężko mi idzie z zastosowaniem funkcji isdigit, jak ktoś jest oblatany w c++ to fajnie by było jakby skreslił troche kodu do powyższego przykładu.
Zależy mi na pętli ponieważ programik nie może wyjść dopóki ktoś nie wpisze poprawnie liczby.
Offline
Strony: 1