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
încuv
și înnum
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++; } } }