[ marko_81 @ 11.05.2009. 10:46 ] @
Hocu da ispitam da li je uneti karakter cifra ili ne. Koristim funkciju isdigit. Funkcija lepo radi ako se unose pozitivni brojevi. Problem mi prave negativni brojevi jer karakter '-' nije cifra. Napravio sam neku funkciju ali mi se cini da postoji i elegantnije resenje. Evo koda:
Code:

int isNumber(char *s) {
    if (s[0] == '-') {
        s++;
        return checkNumber(s);
    }
    return checkNumber(s);
}

int checkNumber(char *s) {
    while (*s != '\0') {
        if (!isdigit(*s))
            return 0;
        s++;
    }
    return 1;
}

int main(void)
{
    char str[255];
    int flag;
    printf("Unesi karakter: ");
    gets(str);
    flag = isNumber(str);
    printf("Uneti karakter %s.\n", (flag) ? "je broj" : "nije broj");
    return 0;
}


Zna li neko da li postoji i krace i elegantnije resenje za ovaj problem?
[ X Files @ 11.05.2009. 11:08 ] @
Kada je u pitanju konverzija teksta u broj (uz ispitivanje ispravnosti), postoji nekoliko problema.

To oko negativnih brojeva si i sam uvideo. Treba imati u vidu i sasvim validan eksponencijalni zapis broja (slovo E), kao i eventualno tumačenje decimalne tačke (koja može biti i zarez, spram regionalnih podešavanja). O mogućim prekoračenjima da ne pričam, tj. o situaciji kada je broj po funkciji 'validan' ali se ne može kao takav smestiti u primenljivu.

Dakle, ako je tvoj slučaj specifičan (recimo, celi brojevi uz eventualni predznak) onda nije loše napraviti svoje rešenje, kao što si i uradio.

Opštija rešenja pogledaj ovde:
http://www.novetehnologije.com...nvertovanje-teksta-u-broj.aspx

... a ja sam se sa sobom odavno 'dogovorio', pa to uvek radim ovako /pseudo/:
Code:

try
{
   // ovde pokušam dodelu, funkcijom koju nudi biblioteka/framework: atoi() ili StrToInt() ili nešto treće ...
}
catch (...)
{
   // ... ovde znam da postoji problem
}

[ mucky @ 11.05.2009. 11:11 ] @
Mešaš pojam cifre i broja - cifre su karakteri '0', '1',..., '9' a celi brojevi su bilo koja kombinacija tih cifara, uz mogućnost da ispred cifara stoji znak + ili -.

Znači, kad dobiješ niz karaktera, proveriš da li je prvi karakter '-' ili '+' ili neka cifra, a za sve sledeće karaktere važi uslov da moraju biti cifre.