Scrieţi un program C/C++ care citeşte de la tastatură două cuvinte distincte, fiecare fiind
format din cel mult 30 de caractere, numai litere mici ale alfabetului englez. După primul
cuvânt se tastează Enter. Programul verifică dacă prin eliminarea unor litere din cel de al
doilea cuvânt se poate obţine primul cuvânt. În caz afirmativ programul afişează pe ecran
mesajul DA, altfel mesajul NU.
Exemple: dacă se citesc, în această ordine, cuvintele:
calut
bacalaureat
pe ecran se afişează mesajul
DA
iar dacă se citesc, în această ordine, cuvintele:
calut
lacatus
pe ecran se afişează mesajul
NU.
Voi parcurge al doilea cuvând (
word2
), şi voi compara fiecare literă a acestuia cu prima literă din primul cuvânt (
word1
). Dacă se potrivesc, incrementez indicele
k
cu 1 (ca să trec la următoarea literă din primul cuvânt). Repet aceşti paşi până când ajung la sfârşitul lui (
word2
).
Dacă primul cuvânt se poate obţine prin eliminarea unor litere din al doilea cuvânt, înseamnă că atunci când voi ajunge la ultima literă din (
word1
), se va potrivi cu o literă din (
word2
), şi
k
va fi incrementat, iar
word1[k]
va fi
'\0'
.
#include <iostream>
using namespace std;
int main()
{
// Declarare variabile
char word1[31], word2[31];
// Citire de la tastatura
cin.getline(word1, 31);
cin.getline(word2, 31);
// Algoritm de rezolvare
int k = 0; // Pozitia in word1
for(int i = 0; word2[i] != '\0' && word1[k] != '\0'; i++)
if(word2[i] == word1[k]) ++k;
if(word1[k] == '\0') cout << "DA";
else cout << "NU";
return 0;
}
Puteţi descărca soluţia de
aici.