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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-10-09 20:46:30

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

cpp - kontrola wprowadzanych zmiennych

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

Offline

 

#2  2011-10-09 21:26:45

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: cpp - kontrola wprowadzanych zmiennych

Do napisania jest.

Offline

 

#3  2011-10-09 21:55:04

  Trin - Wredotka

Trin
Wredotka
Zarejestrowany: 2008-05-16

Re: cpp - kontrola wprowadzanych zmiennych

Użyj funkcji warunkowych.

if(zmienna==EOF) i dalej cout z komunikatem o błędzie czy coś.

Offline

 

#4  2011-10-10 07:17:12

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: cpp - kontrola wprowadzanych zmiennych

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?

Kod:

while (zmienna != true)
{
 cout << "Wpisujesz zły format danych\n";
cin >> zmienna;
}

Tylko coś nie wychodzi gdzieś robię błąd.

Offline

 

#5  2011-10-10 08:39:39

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: cpp - kontrola wprowadzanych zmiennych

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

 

#6  2011-10-10 08:51:35

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: cpp - kontrola wprowadzanych zmiennych

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

 

#7  2011-10-10 08:57:57

  Trin - Wredotka

Trin
Wredotka
Zarejestrowany: 2008-05-16

Re: cpp - kontrola wprowadzanych zmiennych

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

 

#8  2011-10-10 09:03:06

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: cpp - kontrola wprowadzanych zmiennych

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

 

#9  2011-10-10 09:52:53

  P@blo - Nadworny matematyk

P@blo
Nadworny matematyk
Skąd: Wrocław v Jasło
Zarejestrowany: 2010-11-11

Re: cpp - kontrola wprowadzanych zmiennych

Dokładnie :)

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


ThinkPadX220i
| Procesor: Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz |
|  Debian: sid   |   Arch: amd64   |   Sound: alsa   |
| No DE | WM: DWM  |  DM: .bash_profile  |  BIOS+MBR |

Offline

 

#10  2011-10-10 10:01:35

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: cpp - kontrola wprowadzanych zmiennych

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 :

Kod:

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#11  2011-10-10 11:42:14

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: cpp - kontrola wprowadzanych zmiennych

Okazuje się że wydedukowalem taki kod, który w sumie chyba zachowuje się tak jak chcę.

Kod:

#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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)