[ sale t. @ 10.12.2005. 13:52 ] @
| Problem je sledeci:
Deo koda koji treba da prihvata vrednost sve dok ne bude unet broj izmedju 0 i 31
do{
clrscr();
printf("\nUnesite redni broj dana u mesecu:");
scanf("%d",&dan);
}while(dan<1||dan>31);
E sad sve to lepo radi ako se unesu brojevi,ali ako npr. ukucam neko slovo program vrti petlju. Stalno ispisuje "Unesite redni broj dana u mesecu" a nikako mi ne daje mogucnost da unesem broj meseca. Da li postoji nekakav drugi nacin za zastitu ako se unese slovo.
[Ovu poruku je menjao sale t. dana 10.12.2005. u 15:13 GMT+1] |
[ D3adly @ 10.12.2005. 16:00 ] @
Učitaj dan kao znak (char) , zatim sa jednom od naredbi iz biblioteke ctype.h provjeri jeli broj ili slovo....
Malo prouči naredbe isalpha, isalnum, isdigit, i druge naredbe iz ctype.h biblioteke...
[ 3MAJ86 @ 10.12.2005. 23:49 ] @
imao sam ja svoje zaglavlje u kome je (između ostalih) bila funkcija koja proverava da li je uneti broj int.
kako sam to odradio (otprilike, teorijski):
učitaš string (niz karaktera) i onda napraviš petlju koja ti proverava znak po znak da li je u pitanju slovo, broj ili neki drugi znak... naravno, poželjno je da ubaciš mogućnost da ti prvi znak bude ''-'' za negativne brojeve naravno.
ako baš želiš možeš da ubaciš i varijantu za decimalni zarez... doduše to ti za ovaj primer ne treba, ali možda ćeš u budućnosti raditi nešto gde će ti trebati i to...
prouči kako radi strlen funkcija takođe, trebaće ti...
k'o što reče čo'ek prouči ove naredbe (funkcije), najbolje je sam da odradiš... a ako baš ne uspeš, napisaću ti ovde odgovarajuću funkciju koja će rešiti tvoje muke.
[ idb @ 12.12.2005. 12:07 ] @
Mozda ti ovo bude dovoljno dobro resenje:
Code:
#include <stdio.h>
int main(){
int dan;
char *c[3];
do{
system("cls");
printf("\nUnesite redni broj dana u mesecu:");
scanf("%2s",c); // odbacuje sve preko dva znaka
// ispravan unos ce biti ako su:
// oba znaka cifre, ili je prvi cifra ostalo==0
dan = atoi(c);
printf("dan = %d\n",dan);
}while(dan<1||dan>31);
system("pause");
return 0;
}
... verovatno ima i boljih resenja...
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.