Informatică, întrebare adresată de lexued, 8 ani în urmă

2441 de pe pbinfo

Cerința

O pereche de cuvinte, unul cu număr par de litere, iar celălalt cu număr impar de litere, se numește descentrată dacă se poate obține cuvântul cu număr par de litere din celălalt, prin duplicarea caracterului din mijlocul acestuia.


Exemplu:

perechile crezi și creezi, respectiv a și aa sunt descentrate.


Date de intrare

Programul citește de la tastatură un text.


Date de ieșire

Programul va afișa pe ecran mesajul DA, dacă acesta conține cel puțin o pereche descentrată, sau mesajul NU în caz contrar.


Restricții și precizări

textul are cel mult 100 de caractere

cuvintele sunt formate din litere mici ale alfabetului englez

cuvintele sunt separate prin câte un spațiu




Exemplu

Intrare


crezi ca poti sa creezi ceva original

Ieșire


DA

Explicație

Perechea descentrată de cuvinte este crezi – creezi.

Răspunsuri la întrebare

Răspuns de pmarian98
7

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:


lexued: mersiiiiiiiii
Răspuns de boiustef
2

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";

}

Alte întrebări interesante