fbpx

Problema #3252 – Alphanum – Rezolvari PBInfo

de Mihai-Alexandru

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).

void Alphanum(char s[], char cuv[][21], int &n, int num[], int &m){
    int i = 0;
    char a[101][101];
    int j = 0, cnt = 1;
    while(s[i]){
        if(s[i] != ' ')
            a[cnt][j++] = s[i];
        else if(s[i-1] != ' ')
            cnt++, j = 0;
        i++;
    }
    n = 0, m = 0;
    for(int i = 1; i <= cnt; ++i){
        if(a[i][0] >= '0' && a[i][0] <= '9')
        {
            int nu = 0;
            int j = 0;
            while(a[i][j]){
                nu = nu * 10 + a[i][j] - '0';
                j++;
            }
            num[m++] = nu;
        }
        else{
            int j = 0;
            while(a[i][j]){
                cuv[n][j] = a[i][j];
                j++;
            }
            n++;
        }
    }
}
Comentarii

S-ar putea sa iti placa