# PBinfo #4268 – FBaza – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Scrieți funcția cu următorul antet:

int FBaza(const char s[])
Parametrul s memorează un șir de caractere. Funcția trebuie să returneze:


valoarea 2 dacă s este format numai din cifre binare
valoarea 4 dacă s este format numai din cifre mai mici decât 4
valoarea 8 dacă s este format numai din cifre mai mici decât 8
valoarea 10 dacă s este format numai din cifre zecimale
valoarea 16 dacă s este format numai din cifre zecimale și litere din mulțimea {A, B, C, D, E, F} sau {a, b, c, d, e, f}
valoarea -1 dacă s mai conține și alte caractere

Restricții și precizări

Lungimea șirului s nu va depăși 100
șirul s este indexat de la 0

Exemplu:
FBaza("100011") = 2, FBaza("2012") = 4, FBaza("64420") = 8, FBaza("88601") = 10, FBaza("7FFffa2") = 16, FBaza("44g0xff") = -1.

## Cod sursă C++

```cpp
int FBaza(char s[])
{
    int i, x, baza = -1;
    for (i = 0; s[i] != 0; i++)
    {
        if ('0' <= s[i] && s[i] <= '9')
        {
            x = s[i] - '0';
            if (baza < x) baza = x;
        }
        else if (('A' <= s[i] && s[i] <= 'F') ||
                 ('a' <= s[i] && s[i] <= 'f'))
                    baza = 16;
        else return -1;
    }
    if (baza < 2) return 2;
    if (baza < 4) return 4;
    if (baza < 8) return 8;
    if (baza < 10) return 10;
    return 16;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4268)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4268/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4268/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
