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

Va rog frumos sa ma ajutati cu aceasta problema

Scrieţi un program C/C++ care citeşte de la tastatură două şiruri, fiecare fiind format din cel
mult 30 de caractere. După primul şir se tastează Enter. Primul şir este format numai din
litere mici ale alfabetului englez, iar cel de-al doilea şir este format numai din litere mici ale
alfabetului englez şi caractere *. Programul verifică dacă, înlocuind în cel de-al doilea şir
toate caracterele * cu litere mici, şirul obţinut este un subşir al primului şir. În caz afirmativ,
programul afişează pe ecran şirul obţinut, altfel afişează mesajul imposibil. Dacă se pot
obţine mai multe astfel de şiruri, se afişează doar unul dintre ele.
Exemplu: dacă se citesc, în ordine, şirurile:
albastrui
a**r*
atunci pe ecran se afişează astru

Răspunsuri la întrebare

Răspuns de ArMyFoRHeLL
1

#include <iostream>

#include <cstring>

using namespace std;


int main()

{

   char sir1[31],sir2[31];

   cin.getline(sir1,31);

   cin.getline(sir2,31);

   if (strlen(sir1) < strlen(sir2))

       cout << "imposibil";

   else

   {


       for (unsigned i = 0;i < strlen(sir1);i ++)

       {

           unsigned j;

           for (j = 0;j < strlen(sir2);j ++)

               if (sir1[i + j] != sir2[j] && sir2[j] != '*')

                   break;

           if (j == strlen(sir2))

           {

               for (j = 0;j < strlen(sir2);j ++)

                   cout << sir1[i + j];

               return 0;

           }

       }

   }

   cout << "imposibil";

   return 0;

}

Alte întrebări interesante