SUBIECTE SIRURI DE CARACTERE PROGRAME –BACALAUREAT
0)MODEL 2020
1)model propus pt bac 2019
2)simulare 2019
3) olimpici 2019
4)SIMULARE BAC 2018
1
5)Bac_OLIMPICI 2018
6)BAC IUNIE-IULIE 2018
7) MODEL PROPUS PE [Link] PT. Bac 2017
R. using namespace std;
2
8) SESIUNE PT OLIMPICI BAC 2017
9)MODEL [Link] 2016
10) SIMULARE BAC 2016
11) BAC OLIMPICI 2016
12)OLIMIPICI 2015
3
13)TOAMNA -V2
14) MODEL 2014
15)SIMULARE 2014
16)OLIMPICI 2014
4
17)BAC 2013-OLIMPICI
Se consideră un text cu cel mult 100 de caractere (litere mici ale alfabetului englez si
spa ᄂ ii), în care cuvintele sunt separate prin câte un spa ᄂ iu. Înaintea primului cuvânt si după
ultimul cuvânt nu există spa ᄂ ii.
Scrie ᄂ i un program C/C++ care citeste de la tastatură un text de tipul men ᄂ ionat mai sus si
determină transformarea acestuia în memorie prin înlocuirea fiecărui cuvânt format din trei
litere cu simbolul *. Programul afisează pe ecran textul ob ᄂ inut.
Exemplu: pentru textul
bun este izvorul ce are apa rece
se afisează * este izvorul ce * * rece
18)BAC2013(AUGUST-SEPT)
Se consideră un text cu cel mult 100 de caractere (litere mici ale alfabetului englez şi
spaţii), în care cuvintele sunt separate prin unul sau mai multe spaţii. Înaintea primului
cuvânt şi după ultimul cuvânt nu există spaţiu.
Scrieţi un program C/C++ care citeşte de la tastatură un text de tipul menţionat mai sus şi
determină transformarea acestuia în memorie prin eliminarea unor spaţii, astfel încât între
oricare două cuvinte alăturate să rămână exact un spaţiu. Programul afişează pe ecran
textul obţinut.
Exemplu: pentru textul
in vacanta plec la mare
se obţine şi se afişează
in vacanta plec la mare
19)SIMULARE BAC 2013-APRILIE
Se consideră un text cu cel mult 100 de caractere (litere mici ale alfabetului englez şi spaţii), în care
cuvintele sunt separate printr-un spaţiu.
Scrieţi un program C/C++ care citeşte de la tastatură un text de tipul menţionat mai sus şi afişează
pe ecran textul obţinut după eliminarea din fiecare cuvânt de lungime pară a tuturor consoanelor.
Se consideră consoană orice literă care nu este în mulţimea {a, e, i, o, u}.
Exemplu: pentru textul acesta este un exemplu bun
se afişează aea ee u exemplu bun
20)BAC2012-IUNIE
Se consideră două şiruri de caractere a, de lungime na şi b, de lungime nb. Şirul a este numit prefix
al şirului b dacă na≤nb şi subşirul lui b determinat de primele sale na caractere coincide cu a. Şirul
a este numit sufix al şirului b dacă na≤nb şi subşirul lui b determinat de ultimele sale na caractere
coincide cu a. Scrieţi un program C/C++ care citeşte de la tastatură două cuvinte, fiecare fiind
format din cel mult 30 de caractere, numai litere mici ale alfabetului englez. După primul cuvânt se
tastează Enter. Programul afişează pe ecran, separate prin câte un spaţiu, toate sufixele
primului cuvânt care sunt prefixe ale celui de al doilea cuvânt, ca în exemplu. Dacă nu
5
există astfel de subşiruri, se afişează pe ecran mesajul NU EXISTA.
Exemple: dacă se citesc, în ordine, cuvintele
rebele
elegant
se afişează (nu neapărat în această ordine) subşirurile: e ele
iar dacă se citesc, în ordine, cuvintele
strai
rai
se afişează subşirul rai
21)bac_iunie2011
Scrieti un program C/C++ care citeste de la tastatură un număr natural n (2≤n≤20) si apoi n cuvinte
distincte, fiecare fiind format din cel mult 20 de caractere, numai litere mici ale alfabetului englez. La
introducerea datelor, după fiecare cuvânt se tastează Enter. Programul afisează pe ecran numărul
de cuvinte dintre ultimele n-1 citite, care încep cu primul cuvânt citit.
Exemplu: dacă n=5 si cuvintele citite sunt:
bun
buncar
bunici
abundent
bunavoie pe ecran se afisează 3 (deoarece numai cuvintele buncar, bunici si bunavoie încep cu
bun).
22)bac_septembrie2010
Se consideră un text cu cel mult 100 de caractere, format din cuvinte si numere, separate
prin unul sau mai multe spaŃii. Cuvintele sunt formate numai din litere ale alfabetului
englez. Toate numerele sunt reale, pozitive si sunt formate numai din parte întreagă sau
din parte întreagă si parte fracŃionară, separate prin punctul zecimal (.).
ScrieŃi un program C/C++ care citeste de la tastatură textul, pe care îl transformă,
eliminând din componenŃa sa toate numerele care au parte fracŃionară. Programul afisează
apoi pe ecran textul obŃinut.
Exemplu: dacă textul citit este
Reprezentat cu 4 zecimale PI este 3.1415 si e este 2.7182
se va afisa pe ecran textul:
Reprezentat cu 4 zecimale PI este si e este
ALTE PROBLEME
1. Scrieţi un program care citeşte de la tastatură un şir de caractere format din cel mult
20 de litere mici din alfabetul englez şi care afişează mesajul "DA" dacă şirul este format dintr-un
număr egal de consoane şi vocale, respectiv mesajul "NU" în caz contrar.
2. Scrieţi un program care citeşte de la tastatură două şiruri de caractere, fiecare şir fiind
format din cel mult 100 de litere mici din alfabetul englez, şi care afişează mesajul "DA" dacă toate
literele din primul şir se găsesc în cel de-al doilea şir, nu neapărat în aceiaşi ordine şi de acelaşi
număr de ori, sau mesajul "NU" în caz contrar. De exemplu, dacă primul şir este "baraca", iar cel
de-al doilea şir este "abracadabra", programul trebuie să afişeze mesajul "DA" deoarece literele
primului şir apar în cel de-al doilea şir.
3. Să se realizeze un program Pascal/C/C++ care citeşte de la tastatură un număr
natural n cu cel mult nouă cifre nedivizibil cu 10 şi care afişează pe ecran numărul obţinut din n
prin schimbarea primei cifre a numărului cu ultima cifră a sa, precum şi valoarea radicalului de
6
ordinul 2 din numărul obţinut, cu cel mult două zecimale. Cele două numere se vor afişa pe o linie,
separate printr-un spaţiu. Exemplu: pentru n=6094 se vor afişa: 4096 64.
4. Scrieţi un program care citeşte de la tastatură două numere naturale a şi b
(0≤a,b≤200000000) şi în cazul în care există cel puţin o aceeaşi cifră în ambele numere, afişează
mesajul DA, iar în caz contrar afişează mesajul NU.
De exemplu, pentru a=83 şi b=119 se va afişa pe ecran mesajul NU, iar pentru a=5003 şi b=720 se
va afişa DA. (10p.)
5. Scrieţi programul Pascal/C/C++ care citeşte de la tastatură un text t format din cel
mult 80 de caractere, litere şi spaţii, şi apoi elimină spaţiile multiple din textul t. Dacă între două
cuvinte există două sau mai multe caractere spaţiu, trebuie eliminate unele dintre ele astfel încât să
rămână exact unul. Se ştie că la începutul şi la sfârşitul şirului nu sunt spaţii. Textul obţinut după
eliminare se va afişa pe ecran.
De exemplu, dacă se citeşte textul: Maria a adus cana, atunci textul afişat va fi: Maria a adus
cana.
6. Se citesc de la tastatură două şiruri de caractere formate din cel mult 50 de litere
fiecare. Să se afişeze pe ecran şirul format prin preluarea alternativă, din fiecare şir, a câte unei
litere (prima literă a primului şir, apoi prima literă a celui de-al doilea, apoi a doua literă a primului
şir, apoi a doua literă a celui de-al doilea şir etc). Când se epuizează literele din unul dintre şiruri, se
vor prelua toate literele rămase din celălalt şir.
Dacă se citesc şirurile ABC şi MNPRTXB se va afişa şirul AMBNCPRTXB.
7. Pentru două şiruri de caractere cu maximum 250 de caractere fiecare (litere mici ale
alfabetului englez), cu caracterele în ordine alfabetică, introduse de la tastatură, se cere să se
afişeze pe ecran un al treilea şir, format din toate caracterele primelor două, aşezate în ordine
alfabetică. Alegeţi un algoritm de rezolvare, eficient din punct de vedere al timpului de executare.
De exemplu pentru sir1=”ampstz” şi sir2=”bfgostx” se va afişa abfgmopssttxz.
a) Descrieţi strategia de rezolvare şi justificaţi eficienţa algoritmului ales, folosind limbajul natural (5-
6 rânduri).
b) Scrieţi programul Pascal/C/C++ corespunzător metodei descrise.
8. Scrieţi programul Pascal/C/C++ care citeşte de la tastatură un şir de cel mult 100 de
caractere, format doar din literele mici ale alfabetului englez şi caractere spaţiu. Programul afişează
pe ecran şirul codificat astfel:
• după fiecare vocală se adaugă consoana imediat următoare (după a se inserează b, după i
se inserează j ş.a.m.d.),
• la sfârşitul şirului se adaugă grupul de litere stop.
Exemplu: dacă şirul iniţial este „azi este proba de informatica” , după codificare se afişează: „abzij
efstef propbab def ijnfoprmabtijcabstop”
9. Se citeşte de la tastatură un text format din cuvinte separate între ele prin câte un
spaţiu. Fiecare cuvânt are cel mult 40 de caractere, doar litere mici ale alfabetului englez. Textul are
cel mult 200 de caractere. Scrieţi programul Pascal/C/C++ care afişează pe ecran, pe linii separate,
doar cuvintele din textul citit care conţin cel mult trei vocale. Se consideră vocale: a, e, i, o, u.
Exemplu. Dacă textul este:
pentru examenul de bacalaureat se folosesc tablouri
se afişează pe ecran:
pentru
de
se
folosesc
7
10. Scrieţi programul Pascal/C/C++ care citeşte de la tastatură un cuvânt de cel mult 15
litere mici ale alfabetului englez şi care afişează pe ecran, pe linii distincte, cuvintele obţinute prin
ştergerea succesivă a vocalelor din cuvântul citit, de la stânga la dreapta, ca în exemplu de mai jos:
Exemplu: Dacă se citeşte cuvântul examen se afişează:
xamen
xmen
xmn
11. Scrieţi programul Pascal/C/C++ care citeşte de la tastatură un cuvânt de cel mult 15
litere mici ale alfabetului englez şi care scrie pe ecran, pe linii distincte, cuvintele obţinute prin
ştergerea succesivă a vocalelor în ordinea alfabetică a lor (a, e, i, o, u). La fiecare pas se vor şterge
toate apariţiile din cuvânt ale unei vocale (ca în exemplu).
Exemplu: Dacă se citeşte cuvântul bacalaureat se afişează:
bcluret (s-au şters toate cele patru apariţii ale vocalei a)
bclurt (s-a şters unica apariţie a vocalei e)
bclrt (s-a şters unica apariţie a vocalei u)
12. Scrieţi programul PASCAL/C/C++ care citeşte de la tastatură un cuvânt cuv1 având
cel mult 10 caractere, construieşte cuvântul cuv2 format astfel: prima literă a cuvântului cuv1 scrisă
o singură dată, a doua literă a cuvântului cuv1 repetată de două ori, a treia literă a cuvântului cuv1
repetată de trei ori, etc… şi afişează pe ecran cuvântul cuv2.
Exemplu: pentru cuv1=mama se va afişa cuv2 :maammmaaaa
13. Să se scrie programul PASCAL/C/C++ care citeşte de la tastatură un cuvânt de
maximum 20 de litere şi minimum o literă şi şterge litera din mijloc în cazul în care cuvântul are un
număr impar de litere, respectiv cele două litere din mijlocul cuvântului dacă acesta are un număr
par de litere. Programul va afişa cuvântul rezultat în urma ştergerii sau mesajul CUVANT VID dacă
după ştergere acesta rămâne fară nici o literă.
Exemplu : dacă se citeşte cuvântul carte, se va afişa cate.
14. Se citesc de la tastatură n propoziţii (0<n<101), având fiecare maximum 255 de
caractere. Ştiind că oricare două cuvinte consecutive dintr-o propoziţie sunt despărţite printr-un
singur spaţiu şi că fiecare propoziţie se termină cu Enter, să se afişeze pe ecran propoziţia care are
cele mai multe cuvinte. Dacă două sau mai multe propoziţii au acelaşi număr de cuvinte se va afişa
prima dintre ele, în ordinea citirii.
a) Explicaţi în limbaj natural metoda de rezolvare utilizată. (2p.)
b) Scrieţi programul Pascal corespunzător. (8p.)
De exemplu, pentru n = 3 şi următorele propoziţii:
Azi sunt inca elev.
Maine am examen de bac.
Ura, voi fi student!
Se va afişa
Maine am examen de bac.
15. Scrieţi un program care citeşte de la tastatură două cuvinte u şi v formate din cel mult
100 de litere mari ale alfabetului englez. Programul va verifica dacă u şi v au acelaşi număr de
caractere şi, în caz afirmativ, va determina un şir de lungime minimă format din cuvinte, astfel încât
primul cuvânt din acest şir să coincidă cu u, ultimul cu v şi orice două cuvinte succesive să difere
prin exact o literă. Fiecare cuvânt din acest şir va fi scris pe câte o linie, în fişierul text [Link].
În cazul în care u şi v nu au acelaşi număr de litere, se va afişa pe ecran mesajul EROARE.
De exemplu, dacă u=MARE şi v=TORT, atunci fişierul [Link] poate să conţină:
MARE
MART
8
TART
TORT (10p.)