Zabezpieczenie przed wprowadzaniem liczb zmiennoprzecinkowych

Zabezpieczenie przed wprowadzaniem liczb zmiennoprzecinkowych
KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Witam, chciałbym się dowiedzieć jak zabezpieczyć wprowadzaną liczbę tak, aby użytkownik mógł wprowadzić tylko liczbę całkowitą. Litery udało mi się wyeliminować, lecz nie mogę wykombinować, jak to zrobić dla liczb zmiennoprzecinkowych.

Kopiuj
#include <stdio.h>

int main()
{
    int size, index = 0, min, max;
    float sum = 0, avg;

    printf("Podaj wymiar tablicy:\n");
    while(scanf("%d", &size) != 1)
    {
        printf("Wprowadz liczbe!\n");
        while ((size = getchar()) != '\n' && size != EOF);
    }
    int tab[size];

// dalsza część programu

return 0;
}
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5027
0
Kopiuj
    float f_val;
	scanf("%f", &value);
	int int_val = (int) f_val;
    if (int_val !=f_val)
		// Nie, nie
    // Dalej..
enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1028
0
lion137 napisał(a):
Kopiuj
    float f_val;
	scanf("%f", &value);
	int int_val = (int) f_val;
    if (int_val !=f_val)
		// Nie, nie
    // Dalej..

To rozwiązanie nie pomoże, jeśli wczytana będzie liczba zmiennoprzecinkowa większa niż 2^24.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5027
0

Ano, to co, zwiększyć typy...

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

Wczytaj string, sprawdź czy zawiera same cyfry (ew. leading ± i 0x, jeśli chcesz się w to bawić) i dopiero potem konwertuj.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.