[C] Sparwadzanie błędów usera
Ostatnio zmodyfikowano 2014-04-08 10:50
kranki Temat założony przez niniejszego użytkownika |
[C] Sparwadzanie błędów usera » 2014-04-07 14:44:32 Program ma pobierać od użytkownika wzrost i klasyfikować go niski średni wysoki i drukować komunikat. Z tym nie miałem problemu ale jeszcze muszę dodać sprawdzanie błędów. Próbuję funkcją isdigit jak wpiszę raz 1 literę to wyświetla właściwy komunikat przy drugim podaniu robi pętlę w nieskończoność. Jak dam 4 litery i więcej to też nie działa. Proszę o podpowiedzi wskazówki wytłumaczenie. Dziękuję z góry. void howmuch()
{ char str[ 5 ]; int hei, i, con; printf( "No ile masz cm wzrostu ? \n " ); scanf( "%d", & str ); fgets( str, 5, stdin ); for( i = 0; i < 6; i++ ) { if( !isdigit( str[ 0 ] ) ) { con = atoi( str ); printf( "Wzrost podaj liczbami w cm ! : \n " ); scanf( "%d", & str ); } } while( hei > 245 ) { if( hei > 245 ) printf( "Nie przesadzaj, liczba jest za duża. \n " ); printf( "No ile masz cm wzrostu ? \n " ); scanf( "%d", & hei ); } while( hei < 90 ) { if( hei < 90 ) printf( "Jesteś większy...serio. \n " ); printf( "No ile masz cm wzrostu ? \n " ); scanf( "%d", & hei ); } if( hei > 180 ) { printf( "Jesteś wysoki \n " ); } else { if( 180 > hei && hei > 160 ) { printf( "Jesteś średni. \n " ); } else { printf( "Jesteś niski. \n " ); } } }
|
|
leon_w |
» 2014-04-08 09:52:13 Na C się słabo znam, ale na pewno nie czyścisz bufora i/lub flagi błędów. Poszukaj na forum tego. |
|
alixir |
» 2014-04-08 10:50:14 Najbliższy twojemu programowi działający przykład, mógłby wyglądać np. tak: int hei, i, wczytane_znaki;
bool blad = true; printf( "No ile masz cm wzrostu ?\n " );
while( blad ) { wczytane_znaki = scanf( "%d", & hei ); if( wczytane_znaki == 0 ) { printf( "Wzrost podaj liczbami w cm !\n " ); scanf( "%*[^\n]" ); continue; } if( hei > 245 ) { printf( "Nie przesadzaj, liczba jest za duża.\n " ); printf( "No ile masz cm wzrostu ?\n " ); continue; } else if( hei < 90 ) { printf( "Jesteś większy...serio.\n " ); printf( "No ile masz cm wzrostu ?\n " ); continue; } else { blad = false; if( hei > 180 ) printf( "Jesteś wysoki.\n " ); else if( 180 > hei && hei > 160 ) printf( "Jesteś średni.\n " ); else printf( "Jesteś niski.\n " ); } } |
|
« 1 » |