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


Członek DUG



Witam
Jaka jest funkacja w cpp do kontroli wprowadzanych danych z klawiatury
Offline



Administrator




Do napisania jest.
Offline



Wredotka




Użyj funkcji warunkowych.
if(zmienna==EOF) i dalej cout z komunikatem o błędzie czy coś.
Offline


Członek DUG



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



Administrator




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


Członek DUG



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



Wredotka




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


Członek DUG



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



Nadworny matematyk




Dokładnie :)
A właściwie powinien pojść cctype czy jakoś tak... W końcu to cpp a nie c...
Offline







Podobno człowiek...;)








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


Członek DUG



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