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

Un şir de caractere s se numeşte “şablon” pentru un alt şir de caractere x, dacă este format din caractere din mulţimea {*,?,#}, are aceeaşi lungime cu x şi pe fiecare poziţie din s în care apare * în x se găseşte o vocală, pe fiecare poziţie din s în care apare # în x se găseşte o consoană şi pe fiecare poziţie din s în care apare ? putem avea orice caracter în x. Se consideră vocală orice literă din mulţimea {a,e,i,o,u}. Scrieţi programul C/C++ care citeşte de la tastatură două şiruri de caractere, de aceeaşi lungime, formate din cel mult 200 de litere mici ale alfabetului englez, şi afişează pe ecran un şablon comun celor două şiruri citite, care conţine un număr minim de caractere ?.
Exemplu: pentru şirurile diamant şi pierdut se afişează #**#??#

Răspunsuri la întrebare

Răspuns de Sergetec
1

Salut!

Ai rezolvarea in C++ mai jos

#include <iostream>

#include <cstring>

using namespace std;

bool voc(char ch) {

   return (strchr("AEIOUaeiou", ch) != NULL);

}

bool cons(char ch) {

   return ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) && !voc(ch);

}

char c[31];

int main() {

   char a[31], b[31];

   cin >> a >> b;

   for (int i = 0; a[i] != '\0'; ++i) {

       if (voc(a[i]) && voc(b[i])) {

           c[i] = '*';

       }

       else if (voc(a[i]) && cons(b[i])) {

           c[i] = '?';

       }

       else if (cons(a[i]) && voc(b[i])) {

           c[i] = '?';

       }

       else {

           c[i] = '#';

       }

   }

   cout << c;

   return 0;

}

Alte întrebări interesante