Data: simulare 2021
Profil: Matematica-Informatica
Limbaj: C++
Tutoriale Recomandate:
- Cum iei cat mai multe puncte la Bacalaureatul de Informatica
- Functii si parametrii in C++
- Despre recursivitate in informatica
- Siruri de caractere in C++
- Citirea si scrierea din fisiere text in limbajul C++
- Tipul struct in C++ | Teorie si probleme rezolvate
Subiectul I.
1. Expresia C/C++ !(x<2001) && !(x<2002 || x>2020) && !(x>2021) are valoarea 1 dacă și numai dacă valoarea memorată de variabila reală x aparține intervalului:
—–
2. Utilizând metoda backtracking se generează toate valorile naturale formate cu cifre ale numărului 289 și care sunt strict mai mici decât acesta. Primele șase numere generate sunt, în această ordine, 2, 22, 222, 228, 229, 28. Indicați al câtelea număr generat este 8.
—–
3. Variabila s este declarată alăturat. Indicați o struct site instrucțiune de atribuire corectă din punctul de vedere sintactic.
struct site { char cod; struct { int nrAccesari, nrAprecieri; } vizite; } s;
—–
4. Subprogramul f este definit alăturat. Indicați o int f(int x, int y) expresie care poate înlocui punctele de suspensie, astfel încât valoarea f(50,2020) să fie egală cu cel mai mare divizor comun al numerelor 50 și 2020.
—–
5. Un graf neorientat are 40 de noduri și 5 componente conexe, fiecare dintre acestea fiind arbore. Indicați numărul de muchii ale grafului.
—–
Subiectul II.
1. S-a notat cu a % b restul împărțirii numărului natural a la numărul natural nenul b și cu [c] partea întreagă a numărului real c.
citeşte n(număr natural) p <- 1; m <- 0; k <- 0 cât timp n≠0 execută --- citește x (număr natural) --- pentru i <- 1,k execută ------ x <- [x/10] --- dacă x≠0 atunci c <- x%10 ------ altfel c <- n%10 --- m <- c * p + m --- n <- [n/10] --- p <- p*10; k <- k+1 scrie m
a) Scrieți valoarea afișată dacă se citește numărul 35210579.
—–
b) Scrieți două numere din intervalul [103 ,104) care pot fi citite, astfel încât, pentru fiecare dintre acestea, în urma executării algoritmului, numărul afișat să fie 212.
—–
c) Scrieţi programul C/C++ corespunzător algoritmului dat.
—–
d) Scrieți în pseudocod un algoritm echivalent cu cel dat, înlocuind structura repetă…până când cu o structură repetitivă cu test inițial.
—–
2. Un graf neorientat cu 6 noduri, numerotate de la 1 la 6, este reprezentat prin listele de adiacență alăturate. Pentru acest graf scrieți un lanț care să nu fie elementar, precum și un ciclu elementar.
—–
3. Variabila i este de tip întreg, iar variabila s permite memorarea unui șir de cel mult 20 de caractere. Scrieți șirul accesat prin variabila s în urma executării secvenței alăturate.
—–
Subiectul III.
1. Subprogramul putere are un parametru, n, prin care primește un număr natural (n ∈ [2,109]). Subprogramul returnează numărul prim care apare la puterea cea mai mică în descompunerea în factori primi a lui n. Dacă sunt mai multe astfel de numere, se returnează cel mai mic dintre acestea.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n = 880, subprogramul returnează numărul 5 (880 = 24 * 5 * 11).
—–
2. Scrieți un program C/C++ care citește de la tastatură numere naturale, în această ordine: n (n ∈ [2,20]), apoi n * n numere din intervalul [0, 102], elemente ale unui tablou bidimensional cu n linii și n coloane, iar la final valoarea k (k ∈ [2, n]); programul transformă tabloul în memorie, prin deplasarea circulară spre dreapta, cu câte o poziție, a tuturor valorilor aflate pe linia a k-a, în stânga diagonalei principale, ca în exemplu. Elementele tabloului obținut sunt afișate pe ecran, linie cu linie, fiecare linie pe câte o linie a ecranului, cu elementele fiecărei linii separate prin câte un spațiu.
Exemplu: pentru n = 6, k = 5 si tabloul se obtine tabloul
—–
3. La proiectarea unui site web se utilizează elemente grafice realizate pe baza unor modele. Fiecare model este de formă pătrată și oricare două modele distincte au dimensiuni diferite ale laturilor. Toate elementele grafice realizate pe baza unui anumit model au aceeași formă și aceleași dimensiuni ca ale acestuia. În vederea asigurării elementelor grafice necesare, pentru fiecare model dintre cele utilizate se plătește o taxă unică de proiectare, de 10 lei, iar pentru fiecare element grafic realizat pe baza acelui model se plătește o sumă în lei, egală cu valoarea suprafeței acestuia (aria pătratului), calculată în centimetri pătrați. Fișierul bac.in conține un șir de cel mult 106 numere naturale din intervalul [1,10], separate prin câte un spațiu, reprezentând dimensiunile laturilor tuturor elementelor grafice utilizate, date în centimetri; fiecare termen al șirului corespunde unui element grafic distinct. Se cere să se afișeze pe ecran suma totală plătită pentru asigurarea elementelor grafice necesare. Proiectați un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul conține numerele 1 7 2 1 1 2 1 7 2 se afișează pe ecran valoarea 144 (10 lei pentru modelul de lățime 1 cm și câte 1 * 1 lei pentru fiecare dintre cele patru elemente grafice care îl au la bază, 10 lei pentru modelul de lățime 2 cm și câte 2 * 2 lei pentru fiecare dintre cele trei elemente grafice care îl au la bază, respectiv 10 lei pentru modelul de lățime 7 cm și câte 7 * 7 lei pentru fiecare dintre cele două elemente grafice care îl au la bază).
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia.
b. Scrieți programul C/C++ corespunzător algoritmului proiectat.
—–