miercuri, 13 iunie 2012

Bacalaureat 2011 - Problema 4 - Subiectul 3 (Sesiunea iunie-iulie)

Se citesc de la tastatură două numere naturale s1 si s2 (0<s1≤18, 0≤s2≤18) si se cere scrierea în fisierul BAC.TXT, fiecare pe câte o linie, în ordine strict crescătoare, a tuturor numerelor naturale cu exact 5 cifre, pentru care suma primelor două cifre este egală cu s1, iar suma ultimelor două cifre este egală cu s2. Pentru determinarea numerelor indicate se utilizează un algoritm eficient din punct de vedere al timpului de executare.

Exemplu: dacă s1=8, iar s2=7, atunci 35725 este unul dintre numerele care respectă proprietatea cerută (3+5=8 si 2+5=7).

Arată Soluţia

Bacalaureat 2011 - Problema 3 - Subiectul 3 (Sesiunea iunie-iulie)

Subprogramul inserare are doi parametri:
  • n, prin care primeste un număr natural (2≤n≤20);
  • a, prin care primeste un tablou unidimensional care memorează un sir de n numere naturale, fiecare cu cel mult 4 cifre. Cel puţin un element al tabloului este număr par.
Subprogramul modifică tabloul astfel încât după fiecare termen par al sirului inserează valoarea 2011 si furnizează, tot prin parametrii n si a, valorile actualizate ale datelor primite.
Scrieţi în limbajul C/C++ definiţia completă a subprogramului.

Exemplu: dacă n=7 si a=(1,4,5,3,82,6,2) atunci, după apel,
n=11 si a=(1,4,2011,5,3,82,2011,6,2011,2,2011).

Arată Soluţia

Bacalaureat 2011 - Problema 5 - Subiectul 2 (Sesiunea iunie-iulie)

Scrieţi un program C/C++ care citeşte 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 afişează pe ecran numărul de cuvinte dintre ultimele n-1 citite, care încep cu primul cuvânt citit.

Exemplu: dacă n=5 şi cuvintele citite sunt:
bun
buncar
bunici
abundent
bunavoie
pe ecran se afişează 3 (deoarece numai cuvintele buncar, bunici şi bunavoie încep cu bun).

Arată Soluţia

marți, 12 iunie 2012

Bacalaureat 2012 - Problema 4 - Subiectul 3 (Sesiunea speciala)

Fişierul bac.txt conţine pe prima linie un număr natural par n cu cel mult patru cifre, iar pe următoarea linie un şir de n numere naturale cu cel mult nouă cifre. Numerele din şir sunt în ordine crescătoare şi sunt separate prin câte un spaţiu. Se cere să se afişeze pe ecran cel mai mare număr din prima jumătate a şirului care să fie strict mai mic decât oricare număr din a doua jumătate a şirului. Dacă în fişier nu se află o astfel de valoare, pe ecran se afişează mesajul Nu exista. Pentru determinarea numărului cerut se utilizează un algoritm eficient din punctul de vedere al memoriei şi al timpului de executare.

Exemplu: dacă fişierul bac.txt are conţinutul
30
1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 10
atunci pe ecran se afişează 3, iar dacă fişierul are conţinutul
6
3 3 3 3 9 15
atunci pe ecran se afişează Nu exista.

Arată Soluţia

luni, 11 iunie 2012

Bacalaureat 2012 - Problema 3 - Subiectul 3 (Sesiunea speciala)

Se consideră subprogramul minus, cu doi parametri:
  • n, prin care primeşte o valoare naturală 2 < n < 50;
  • v, prin care primeşte un tablou unidimensional cu n elemente, numere întregi cu cel mult 4 cifre.
Cel puţin unul dintre elementele tabloului este nenul.
După fiecare element nenul din tablou, subprogramul inserează câte un nou element, cu aceeaşi valoare absolută, dar cu semn opus, ca în exemplu. Tabloul modificat, precum şi valoarea actualizată a lui n, sunt furnizate tot prin parametrii v, respectiv n. Scrieţi în limbajul C/C++ definiţia completă a subprogramului.

Exemplu: dacă n=5 şi v=(4, -5, 0, 9, 0), atunci după apel n=8, iar v=(4, -4, -5, 5, 0, 9, -9, 0).

Arată Soluţia

Bacalaureat 2012 - Problema 5 - Subiectul 2 (Sesiunea speciala)

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.

Arată Soluţia