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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!