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
s
de 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
s
este200
- Șirul
s
este 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++; }