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 oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!