Se afișează postările cu eticheta bac. Afișați toate postările
Se afișează postările cu eticheta bac. Afișați toate postările

miercuri, 19 iunie 2013

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

Fişierul bac.txt conţ ine un şir de cel pu ţin trei şi cel mult 1000000 de numere naturale cu cel mult nouă cifre. Numerele din şir sunt separate prin câte un spa ţiu.
Se cere să se afişeze pe ecran, separate printr-un spa ţiu, două numere distincte, anume cel mai mic număr par cu două cifre şi cel mai mare număr par cu două cifre care NU fac parte din şir.
Dacă nu există două astfel de valori, pe ecran se afisează mesajul Nu exista.
Pentru determinarea numerelor cerute se utilizează un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fişierul bac.txt con ţine valorile
7 2 40 5 10 15 11 12 18 350
se afişează pe ecran numerele 14 98.

Arată Soluţia

Complexitatea algoritmului este `O(n)` (liniar).

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

Se consideră subprogramul sub, cu trei parametri:
  • n, prin care primeşte un număr natural (2<n<50);
  • v, prin care primeşte un tablou unidimensional cu n elemente, numere naturale cu cel mult 4 cifre;
  • x, prin care primeşte un număr natural cu cel mult 4 cifre. Cel pu ţin unul dintre elementele tabloului are valoarea x.
Subprogramul modifică ordinea valorilor din tablou, astfel încât toate valorile egale cu x să ocupe primele poziţ ii din v, iar celelalte valori să se regăsească în continuarea acestora.
Tabloul modificat este furnizat tot prin parametrul v.
Scrie ţi defini ţia completă a subprogramului.
Exemplu: dacă n=9, v=(2, 1, 0, 1, 7, 0, 1, 4, 5) şi x=1, atunci, după apel, o soluţ ie posibilă este v=(1, 1, 1, 2, 0, 7, 0, 4, 5).

Arată Soluţia

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

Se consideră un text cu cel mult 100 de caractere (litere mici ale alfabetului englez şi spaţ ii), în care cuvintele sunt separate prin câte un spaţ iu. Înaintea primului cuvânt şi după ultimul cuvânt nu există spa ţii.
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 înlocuirea fiecărui cuvânt format din trei litere cu simbolul *. Programul afişează pe ecran textul ob ţinut.
Exemplu: pentru textul

bun este izvorul ce are apa rece

se afişează

* este izvorul ce * * rece

Algoritmul reţine adresa de început a fiecărui cuvânt şi numără numărul de litere din fiecare cuvânt până când întâlneşte un caracter spaţiu.
Aici se verifică dacă a fost întâlnit un cuvânt de 3 litere, caz în care se deplasează tot şirul spre stânga, iar pe prima poziţie din cuvânt se inserează caracterul *.
Indiferent dacă a fost găsit un cuvânt de 3 litere, după fiecare spaţiu începe un nou cuvânt ceea ce înseamnă că start este actualizat, iar cnt este resetat.

Arată Soluţia

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