# PBinfo #3252 – Alphanum – Rezolvare C++

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

## Enunț

Cerința
Scrieți funcția cu antetul:

void Alphanum(char s[], char cuv[][21], int &n, int num[], int &m)
Șirul s conține cuvinte formate din litere mici, numere formate cu cifre, iar cuvintele și numerele sunt separate prin unul sau mai multe spații. Să se memoreze cuvintele în vectorul cuv și numerele în num. Numărul de cuvinte va fi reținut în n, iar numărul de numere în m.

Restricții și precizări

numerele sunt naturale mai mici sau egale cu 2.000.000.000
cuvintele au lungimea cel mult 20
în șirul s va exista cel puțin un cuvânt și cel puțin un număr
Cuvintele și numerele se memorează în ordinea în care apar în s.
indexarea va fi de la 0 în cuv și în num

Exemplu:
Dacă s = "sunt 30 de pomi si 100 flori", atunci după apelul Alphanum(s, cuv, n, num, m) vom avea n = 5, m = 2, cuv[0]="sunt", cuv[1]="de", cuv[2]="pomi", cuv[3]="si", cuv[4]="flori", iar vectorul num = (30, 100).

## Cod sursă C++

```cpp
void Alphanum(char s[], char cuv[][21], int &n, int num[], int &m)
{
    int i, x;
    n = m = 0;
    for (i = 0; s[i]; )
        if (s[i] == ' ') i++;
        else if ('0' <= s[i] && s[i] <= '9')
        {
            x = 0;
            while ('0' <= s[i] && s[i] <= '9')
            {
                x = x * 10 + (s[i] - '0');
                i++;
            }
            num[m++] = x;
        }
        else
        {
            x = 0;
            while ('a' <= s[i] && s[i] <= 'z')
            {
                cuv[n][x++] = s[i];
                i++;
            }
            cuv[n][x] = 0;
            n++;
        }
}
```

## Resurse

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