Nie działająca walidyzacja danych - brak pomysłu dlaczego

Nie działająca walidyzacja danych - brak pomysłu dlaczego
A9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Sprawdzam poprawność wprowadzanych danych tak samo 2 razy.
Pierwsze sprawdzanie działa OK zarówno dla liczb z poza przedzialu jak i dla znakow ktore nie sa liczbami

Drugie dziala tylko dla znakow ktore nie sa liczbami, a liczby np ujemne przechodzą - a ja nie mam pojęcia dlaczego. Przecież sprawdzam poprawność dnaych w ten sam sposób.

Dlaczego bledne liczby przechodza przez 2 petle?

Proszę o wskazówki i z góry dziękuje, oto kod:

Kopiuj
 #include <stdio.h>

main (void)
{


    unsigned int temp,status,liczba1,liczba2  ;



    printf("Podaj liczbe z przedzialu od 1 do 9\n");
    status =  scanf("%d",&liczba1 );

    while( liczba1  > 9  ||  liczba1 < 1 || status != 1  )
    {
        while((temp=getchar()) != EOF && temp != '\n');
        printf("Zle!\n");
        status = scanf("%d", &liczba1 );
    }




    printf("Ok,podales liczbe od 1 do 9. Teraz podaj liczbe wieksza od 0\n");
    status = scanf("%d",&liczba2);

    while(  (liczba2<= 0) ||  (status != 1)   )
    {
        while((temp=getchar()) != EOF && temp != '\n');
        printf("Zle!\n");
        status = scanf("%d",&liczba2);
    }
}
szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
1

Liczby ujemne przechodzą bo masz zmienną typu unsigned int czyli bez znaku.

A9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Cholera, racja :P Dzięki !

Po zmianie na int wszystko działa ale zastanawia mnie dlaczego w takim razie przez pierwszą pętle liczby ujemne nie przechodziły? Tam był ten sam typ danych.

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
0

Ale warunki inne: liczba1 > 9.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
    printf("Podaj liczbe z przedzialu od 1 do 9\n");
    while((scanf(" %d",&liczba1)!=1)||(liczba1>9)||(liczba1<1)) printf("Zle! podaj jeszcze raz\n");

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.