Exercitiu bac 2012 sesiune speciala.Siruri de caractere .
Vreau rezolvare in c++ cu explicatii !
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <cstring>
using namespace std;
int v[50];
int main(){
bool verificare=0;
int poz=0,lg1,lg2;
char cuv1[31],cuv2[31];
cin.getline(cuv1,31);
cin.getline(cuv2,31);
lg1=strlen(cuv1);
lg2=strlen(cuv2);
for(int i=0;i<lg1;++i){
for(int j=poz;j<=lg2;++j){
if(cuv1[i]==cuv2[j]){
verificare=1;
poz=j+1;
break;
}else{
verificare=0;
}
}
if(verificare==0){
break;
}
}
if(verificare==1){
cout<<"DA";
}else{
cout<<"NU";
}
return 0;
}
Explicație:
Salut! Am citit cele 2 cuvinte si apoi am creat cate un for pentru fiecare.
Primul for ia fiecare litera in parte din primul cuvant, iar al doilea for cauta litera respectiva in cel de-al doilea cuvat. La gasirea literei variabila poz primeste o valoare noua, iar urmatoare litera va fi cautata de la acea pozitie(probabil ai vazut in exemplu ca la aceasta problema este importanta ordinea in care literele din primul cuvant se afla in al doilea).
if(verificare==0){
break;
}
Aceasta comanda opreste for-ul principal daca o litera din primul cuvant nu se afla in al doilea la iar variabila valoare iese din for cu valoarea 0.
Sper ca ti-am fost de ajutor!