Informatică, întrebare adresată de gfluturas, 9 ani în urmă

Va rog!! Ce se afiseaza?
Variabila s poate memora un șir cu maximum 20 de caractere, iar variabila i este de tip întreg. Scrieți ce se afișează în urma executării secvenței de instrucțiuni de mai jos.

strcpy(s,"BACALAUREAT");
cout< i=0;
while (i { if(strchr("EAIOU",s[i])!=NULL) strcpy(s+i+1,s+i+2);
i++;
}
cout<


andriesboss92: Vezi ca ai uitat sa pui la ultimul cout ce trebuie sa se afiseze.. Rescrie programul
gfluturas: cout<<s;
gfluturas: atat
gfluturas: si la primul cout este cout<<strlen(s);
andriesboss92: ex asta e din varianta de bac ?
gfluturas: da, bac 2014
gfluturas: da, bac 2014. se gaseste si pe pbinfo. E exercitiul 506 de la siruri de caractere

Răspunsuri la întrebare

Răspuns de andriesboss92
40
Se va afisa: 11BAAARET

Trebuie sa iei rand pe rand pasii pentru a putea rezolva problema..
Mic rezumat:

Vectorul s initial este gol dupa care primeste sirul de caractere BACALAUREAT, iar i are valoarea 0.

In acel while parcurgi vectorul de caractere si verifici daca 0 este mai mic decat lungimea sirului - 1 ( adica 11-1 = 10 .. deci 0 < 10 ) ..

In if vezi daca pe fiecare pozitie a sirului BACALAUREAT se afla vocalele EAIOU..

cat timp 0< 10
pe pozitia 1 nu se afla nici o vocala ci se afla litera B .. nu executa acel strcpy si i devine 1

cat timp 1< 10
pe poz 2 se afla vocala cautat in if, adica A, iar sirul devine, dupa executarea secventei: strcpy(s+i+1,s+i+2); ( deci daca gaseste o vocala pe pozitia i atunci stergi urmatoarea pozitie ) , BAALAUREAT ... i=2

cat timp 2<10 
Acuma noul nostru sir nu mai este BACALAUREAT ci BAALAUREAT. Prin urmare toate actiunile pe care le vom face vor fi pe noul sir.
deci.. pe pozitia 3 a noului sir se afla vocala A prin urmare executam secventa iar sirul devine: BAAAUREAT ( care va fi noul sir pe care vom aplica actiunile din cod )  .... i=3

cat timp 3<10 
noi avem poz 4, unde iar se afla o vocala, A - al treilea al din sir( marcat cu paranteze patrate ) BAA [A] UREAT ... deci se executa conditia sa fie vocala... sirul devine: BAAAREAT ... i=4

cat timp 4<10
suntem pe pozitia 5, unde se afla o consoana ( R ) .. nu se executa if-ul... i=5

cat timp 5<10
poz 6.. avem vocala E din sirul: BAAAREAT .... if-ul se executa... sirul devine: BAAARET ... i=6

cat timp 6<10
poz 7.. avem consoana T ... if-ul nu se executa ... i=7

cat timp 7<10
pe pozitia 8 a gasit NULL, iese din program si afiseaza sirul modificat, si anume: BAARET...

Prin urmare se va afisa: 11BAARET

Sper sa fi inteles ce am scris. Bafta.. daca nu intelegi da reply sau pm
Alte întrebări interesante