Răspuns :
Răspuns:
#include <iostream>
#include <string.h>
using namespace std;
int main() {
char text[101], *p; // textul citit si un pointer pentru strtok
char cuvinte[100][100]; // vector de cuvinte in care pun cuvintele din text
cin.get(text, 100); // citesc sirul de la intrare
int nr_cuvinte = 0; //variabila cu care numar cuvintele
p = strtok(text," ");
int i;
while (p) { // separ in cuvinte
strcpy(cuvinte[nr_cuvinte++], p);
p = strtok(NULL, " ");
}
for (i = 0; i < nr_cuvinte; i++) {
/** iau fiecare cuvant si daca e impar il
* fac par, duplicand caracterul din mijloc,
* dupa care, caut in vectorul de cuvinte sa
* vad daca mai apare
*/
p = cuvinte[i];
if (strlen(p) % 2 == 1) {
char temp[100];
strcpy(temp, p);
temp[strlen(p) / 2 + 1] = temp[strlen(p) / 2];
strcpy(temp + strlen(p) / 2 + 2, p + strlen(p) / 2 + 1);
p = temp;
int j;
for (j = 0; j < nr_cuvinte; j++) {
if (strcmp(cuvinte[j],p) == 0) {
cout << "DA"; // daca mai apare afisez DA si ies din program
return 0;
}
}
}
}
cout << "NU";
return 0;
}
Explicație:
Răspuns:
Explicație:
#include <iostream>
#include <cstring>
using namespace std;
char s[101], cuv[50][10], ss[10]="", t[10], ch, *p;
short n, i, k, j;
int main()
{
cin.getline(s,101);
p=strtok(s," ");
while (p)
{
++k; strcpy(cuv[k],p);
p=strtok(NULL, " ");
}
short gasit=0;
for (i=1; i<=k; ++i)
{
n=strlen(cuv[i]);
if (n%2)
{
for (j=1; j<=k; ++j)
{
if (strlen(cuv[j])==n+1)
{
ch=cuv[i][n/2];
strcpy(ss,cuv[i]);
strcpy(t,ss+n/2);
strcpy(ss+n/2+1,t);
ss[n/2]=ch;
if (strcmp(cuv[i],ss)) gasit=1;
}
if (gasit) break;
}
}
if (gasit) break;
}
if (gasit) cout << "DA";
else cout << "NU";
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.