Problema siruri de caractere

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
5Boro
Junior
Junior
Posts: 1
Joined: 22 Jun 2013, 00:31
Judet: Sibiu

Problema siruri de caractere

Post by 5Boro » 22 Jun 2013, 00:49

Salut,
tocmai ce incercam sa rezolv niste probleme de pe variante (pt. bac) si am dat peste urmatoarea problema:

5. 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.

ma gandesc ca ar trebui declarat inca un sir pe langa cele 2 in care sa se lucreze cu un strcpy. dar cum sa fac strcpy-ul sa memoreze in acest sir fiecare posibil derivat al cuvantului citit nu stiu inca(banuiesc ca printr-un for sau mai multe) . voi ce spuneti?



User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Problema siruri de caractere

Post by Marius Bancila » 25 Jun 2013, 12:54

Probabil se poate rezolva in mai multe feluri. Eu as folosi doar o parcurgere a celor doua cuvinte. Cauti prima aparitie a primei litere din primul cuvant in al doilea si verifici daca urmatoarea litera apare si ea dupa (chiar daca sunt si alte litere intre ele) si tot asa. Hai sa dau un exemplu:

calut
bacalaureat

c apare in bacalaureat in pozitia 3
a apare in bacalaureat in pozitia 4
l apare in bacalaureat in pozitia 5
u apare in bacalaureat in pozitia 7
t apare in bacalaureat in pozitia 11

calut
lacatus

c apare in lacatus in pozitia 3
a apare in lacatus in pozitia 4
l nu mai apare in lacatus dupa pozitia 4. STOP

Tot ce trebuie sa faci e sa parcurgi intr-o singura trecere cele doua siruri, simultan, pana ajungi la sfarsitul unuia din cele doua siruri. Daca ai ajuns la sfarsitul primului cuvant si ai identificat toate literele (pe pozitii succesive, chiar daca nu consecutive) ai potrivire. Daca nu, nu ai potrivire.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

Post Reply