#3252 Alphanum
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).
Indicații de rezolvare
Scopul acestei probleme este să se aprofundeze modul în care se extrag cuvinte și numere dintr-un șir de caractere fără a folosi funcții specifice.
Solutia mea este gresita si nu mi dau seama unde gresesc :
void Alphanum(char s[], char cuv[][21], int &n, int num[], int &m)
{ char *p=strtok(s," ");
m=-1,n=-1;
while(p)
{ if(p[0]>='0' && p[0]<='9')
{ m++;
for(int i=0;i
num[m]=num[m]*10+(p[i]-'0');
}
if(isalpha(p[0]))
{ n++;
strcpy(cuv[n],p);
}
p=strtok(NULL,s);
}
}
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <cctype>
inline void Alphanum (char s[], char cuv[][21], int& n, int num [], int& m)
{
n = m = 0;
for (int i = 0; s[i]; )
{
if (std::isalpha (s[i]))
{
int k = 0;
while (std::isalpha (s[i]) && s[i])
cuv[n][k ++] = s[i], ++ i;
++ n;
}
else if (std::isdigit (s[i]))
{
while (std::isdigit (s[i]) && s[i])
num[m] = num[m] * 10 + (s[i] - '0'), ++ i;
++ m;
}
else ++ i;
}
}
Explicație:
igugleep8the3:
mersi. dar am o intrebare. acolo unde ai pus std:: cu ce ajuta?
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă