Buna seara, poate cineva sa mă ajute cu exercițiul acesta ?
Răspunsuri la întrebare
Răspuns:
#include<bits/stdc++.h>
using namespace std;
int ct; /* numarul de cuvinte*/
char s[101], *p, aux[101];
char textfinal[10000], ins[]="succes"; //declar textul modificat si cuvantul succes
int main()
{
cin.getline(s, 101);
strcpy(aux, s);
p = strtok(aux, " "); // extrag toate cuvintele din text rand pe rand si le numar
while(p != NULL)
{
ct ++;
p = strtok(NULL, " ");
}
char a[ct][101]; // declar o matrice de caractere
p = strtok(s, " ");//introc fiecare cuvant in matrice
ct = 0;
while(p != NULL)
{
ct ++;
strcpy(a[ct], p);
p = strtok(NULL, " ");
}
for(int i = 1; i <= ct - 1; i ++)
{
char l1, l2;
l1 = a[i][strlen(a[i]) -1];//ultima litera a unui cuvant
l2 = a[i + 1][strlen(a[i + 1]) - 1];//ultima litera a urmatorului cuvant
strcat(textfinal, a[i]);//copiez cuvantul oricum in textul prelucarat
strcat(textfinal, " ");//adaug un spatiu
if(l1 == l2)//daca literele sunt egale atunci adaug cuv succes
{
strcat(textfinal, ins);//adaug succes la text
strcat(textfinal, " ");//adaug un spatiu
}
}
strcat(textfinal, a[ct]);//copiex ultimul cuvant din textul initial
cout << textfinal;
return 0;
}
Explicație:
Este putin probabil ca spatiul alocat pt. textfinal sa nu fie de ajuns, asa ca puteti sa mai modificati dimensiunea desinata. Am testat programul pe cateva exemple si a functionat, insa daca mai descoperiti unele exemple pe care nu executa corect il puteti adapta dupa bunul plac \^o^/