Răspuns :
Răspuns:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[103], t[501] = "";
cin.getline(s, 103);
char *p = strtok(s, " "), c = '\0';
while (p != NULL)
{
if (p[strlen(p) - 1] == c)
strcat(t, "succes ");
strcat(t, p);
strcat(t, " ");
c = p[strlen(p) - 1];
p = strtok(NULL, " ");
}
cout << t;
return 0;
}
Explicație:
In algoritmul de mai sus am parcurs fiecare cuvant din textul dat folosindu-ma de funtia "strtok" din cstring. Daca cuvantul parcurs are ultima litera egala cu ultima litera a cuvantului de dinainte (retinuta in 'c'), atunci inserez cuvantul succes, iar indiferent daca se respecta acea conditie inserez cuvantul pe care l-am parcurs. La inceput c este egal cu '\0' (sau 0), asta ca sa ma asigur ca nu va fi egal cu litera primului cuvand, deci ca sa nu inserez "succes" la inceput. O observatie e ca l-am construit pe 't' (care e rezultatul) in memorie, si nu am facut din afisare, pentru ca asa specifica cerinta. Alta observatie este ca marimea lui t este 501, asta pentru ca daca s ar avea 51 de cuvinte de forma "x", t ar ajunge sa fie "x succes x succes ...", deci ar avea 51 * 2 - 1 + 50 * 7 = 451 caractere (am rotunjit la 500).
Daca nu stii cum functioneaza functiile din cstring (strtok, strlen) anunta-ma!