318
Cerința
Să se scrie funcția cu următorul antet:
void SplitText(const char s[], char cuv[100][30], int &n)
Funcția primește ca parametri:
- un șir de caractere
sde lungime maximă200. - o matrice de caractere
cuv - un număr natural
n
Șirul s memorează un text format din cuvinte și separatori. Cuvintele sunt formate din litere, iar restul caracterelor din text sunt separatori. Funcția trebuie să memoreze cuvintele din s în matricea cuv astfel: Primul cuvânt în cuv[0], al doilea cuvânt în cuv[1], etc. Numărul de cuvinte va fi memorat în n.
Restricții și precizări
- Lungimea maximă a șirului
seste200 - Șirul
seste indexat de la0 - Șirul va conține cel puțin un cuvânt
- Numărul maxim de cuvinte din text este
100 - Cuvintele textului au lungimea maximă
29 - Utilizarea funcțiilor predefinite pentru șiruri de caractere poate conduce la erori de compilare
Exemplu
SplitText("O suta de ani ... de Romania!", cuv, n);
Va furniza rezultatul: n=6, cuv[0]="O", cuv[1]="suta", cuv[2]="de", cuv[3]="ani", cuv[4]="de", cuv[5]="Romania".
bool nr(int i ,const char s[])
{
return ((int)s[i] >= 65 && (int)s[i] <= 90) || ((int)s[i] >= 97 && (int)s[i] <= 122);
}
void SplitText(const char s[], char cuv[100][30], int &n)
{
n = 0;
int i = 0 , j=0;
bool ok=false;
bool fct= false;
while(s[i]!='\0')
{
if(nr(i , s))
{
if(ok)
{
if(fct==false)
n++ , ok = false;
else
ok=false , fct = false;
}
cuv[n][j]=s[i];
j++;
if(!nr(i+1 , s))
cuv[n][j]='\0';
}
else
{
if(i == 0)
fct=true;
j=0;
ok = true;
}
i++;
}
n++;
}
Comentarii