[ odwalla @ 27.04.2005. 21:22 ] @
Mene zanima,ako neko moze da mi kaze, kako napraviti funkciju pomocu koje mogu proveriti da li su znakovi uneseni sa tipkovnice brojevi ili neki drugi znak,da se na primer ne bi desilo da program "racuna" sa slovima?
[ zokiiii @ 27.04.2005. 21:32 ] @
Provjeravaj preko ASCII -a
Znamo da su brojevi od 48 do 57 -ukljucujuci .. a slova od 65 do 122-ukljucujuci
Pa provjeravaj
evo nekakav pseudokod

if ( broj >= 48 && broj <=57) {racunaj nesto
pozovi funckiju;
}
else {
unjeli ste slovo ;
}

valjda sam pogodio ovo vece-jednako i manje-jednako ..
[ george_w @ 27.04.2005. 21:47 ] @
standardne funkcije c-a:

#include <ctype.h>

int isdigit(int znak);
int isalpha(int znak);
int isalnum(int znak);


ako bas hoces napravit svoju funkciju, npr:

int jelislovo(int znak)
{
return isalpha(znak);
}
[ odwalla @ 28.04.2005. 10:46 ] @
Taj isalnum je dobar,ali mi treba nesto sto ce mi provjeriti da li je to broj i ukoliko je da sa njim racunam,a ukoliko nije da mi ne izlazi iz programa nego da me vrati na pocetak programa.U programu imam nesto ovako:

printf("Unesite polumjer kugle\n");
scanf("%f", &veliki_polumjer);
kugla(veliki_polumjer);

I onda bi mi trebalo da proverim koji je znak pre nego ga posaljem u funkciju kugla,i ako je broj sve super,a ako nije da program ponovo trazi da se unese polumjer.Ako je to moguce izvesti?Probavao sam nesto sa petljama i ascii-em ali onda ako unesim broj koji je izmedju ascii vrijednosti slova njega isto tretira kao slovo!
[ george_w @ 28.04.2005. 17:05 ] @
onda ovako:

Code:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

float kugla(float);

void main()
{
    char broj[5];
    char znak;
    float r;
    int i, pravibroj;

    printf("Unesi poluprecnik --> ");

    do
    {
        gets(broj);

        pravibroj = 1;

        for(i=0; i<strlen(broj); i++)
        {
            if(isalpha(broj[i]))
              pravibroj = 0;
        }

        if(pravibroj == 0)
            printf("\nPogresan broj! Haj ponovo --> ");
    }
    while(pravibroj == 0);

    r = atof(broj);

    printf("Zapremina kugle, poluprecnika %.2f je %.2f", r, kugla(r));
}

float kugla(float r)
{
    return r*r*r;
}

[ george_w @ 28.04.2005. 17:06 ] @
Ako ti nesto nije jasno u gornjem kodu, pitaj...


Pozdrav!
[ yooyo @ 28.04.2005. 19:22 ] @
Citat:
odwalla: Taj isalnum je dobar,ali mi treba nesto sto ce mi provjeriti da li je to broj i ukoliko je da sa njim racunam,a ukoliko nije da mi ne izlazi iz programa nego da me vrati na pocetak programa.U programu imam nesto ovako:

printf("Unesite polumjer kugle\n");
scanf("%f", &veliki_polumjer);
kugla(veliki_polumjer);


A da malo procitas kako se koristi scanf! Da te malo postedim muke... scanf vraca
broj uspesno konvertovanih i dodeljenih polja. U tvom slucaju ovako:

Code:

if ((scanf("%f", &veliki_polumjer) != 1)
{
 // greska...
}
// ovde veliki_polumjer ima korektnu unetu vrednost


scanf je vrlo mocna funkcija jer pametnim opisom input stringa mozes da parsujes
i komlikovanije ulaze. Primer:

Code:
char funkcija[30];
float broj;
scanf("%[^(]( %f )", funkcija, &broj);


cita ulazu obliku sin(3.1415), gde ce funkcija sadzati 'sin', a broj ce biti 3.1415

yooyo

[ odwalla @ 29.04.2005. 16:25 ] @
Ja to bio resio ovako:

R1:
printf("Unesite polumjer kugle\n");
scanf("%f", &veliki_polumjer);
if((veliki_polumjer>=0.00000)&&(veliki_polumjer>=999999999.99991)
kugla(veliki_polumjer);
else{
printf("Greska!\n");
goto R1;
}

Al mislim da cu se koristiti i vasim odgovorima.Ipak puno vam hvala.Pozdrav svima!

By the way yooyo,a je li znas gde imaju objasnja za sve te funkcije, koliko god znao hteo bi jos!
[ xxxrugby @ 29.04.2005. 19:39 ] @
Bas najstandardnije
http://cplusplus.com

http://www.acm.uiuc.edu/webmonkeys/book/c_guide/

Google it. Nema boljeg!
A ostalo. Evo i prvi hintovi najbolji!
http://www.google.com/search?h...ce&btnG=Tra%C5%BEi&lr=