Jak sprawdzić czy wprowadzono liczbę?


(klonmarcin) #1

witam, w jaki sposób sprawdzić czy użytkownik wprowadzić liczbę czy inny znak ?

wczytuję za pomocą scanf("%f", &a);

i teraz jak sprawdzić czy user wpisał liczbę ??

:slight_smile:


(matiit) #2

A np. coś takiego:

Wczytujesz jako tablicę znaków. Sprawdzasz czy ta tablica zawiera tylko liczby, jeśli tak to konwertujesz do int'a (atoi()).


([alex]) #3

if(scanf("%f",&a)==1) ...

if(scanf("%d%d",&x,&y)==2) ...

... tyle ile zmiennych


(Somekindsoftware) #4

Liczba nie jest znakiem. O cyfrę pytasz?

Można to zrobić przy użyciu funkcji isdigit, która zwraca 0, jeśli podany w jej argumencie char nie jest cyfrą.


(klonmarcin) #5

poradziłem już sobie czymś takim:

printf("\nPodaj pierwszą liczbę: ");	// wczytanie danych


	retVal = scanf("%f", &DANE.a);

	while (retVal != 1)

	{

		while((ch = getchar()) != '\n' && ch != EOF);

		printf("Podaj liczbę ponownie:");

		retVal = scanf("%f", &DANE.a);

	}

no i to chyba działa.

:slight_smile: :slight_smile:

jednak nie działa :frowning: :frowning: jeśli wprowadzę taką liczbę np. 658+ to wywala błąd


(Harry127) #6

A może tak?

char c;

cin>>c;

if((int)c>=48 && (int)c<=57) cout<<"Wprowadziles liczbe!";

else cout<<"Wprowadziles cos innego.";

Działa dla liczb jednocyfrowych... Myślę, że poradzisz sobie z przerobieniem.