Documente Academic
Documente Profesional
Documente Cultură
SUBIECTUL REZOLVAT
Varianta 3
Toate subiectele sunt obligatorii. Se acordă zece puncte din oficiu.
Timpul de lucru efectiv este de patru ore.
Programele cerute vor fi scrise folosind unul dintre limbajele de programare Pascal, C
sau C++, la alegere. Identificatorii utilizați în programe trebuie să corespundă
semnificației asociate acestora, eventual în formă prescurtată.
SUBIECTUL I (30 de puncte)
1. Prezentați datele de tip real în limbajul de programare ales, după următorul plan de idei:
- un tip real, precizând numărul de octeți alocați pentru reprezentarea în memorie a unei valori de
acest tip;
- patru exemple de declarare a unei variabile de tipul ales, inițializată cu constante reale, fiecare
constantă punând în evidență câte o particularitate distinctă a formei generale prin care se poate
exprima un număr real;
- două exemple de operatori care să pună în evidență operații specifice cu date de tip real;
- trei exemple de funcții predefinite uzuale care prelucrează/furnizează date de tip real;
- un exemplu de utilizare a datelor de tip real și a tipului real ales în rezolvarea unei probleme
(enunț, descriere în limbaj natural a unei soluții, implementare în limbaj de programare a soluției).
(15 puncte)
RĂSPUNS:
Patru exemple de declarare a unei variabile de tipul ales, inițializată cu constante reale, fiecare
constantă punând în evidență câte o particularitate distinctă a formei generale prin care se
poate exprima un număr real;
Două exemple de operatori care să pună în evidență operații specifice cu date de tip real:
#include <cmath>
// Calcularea suprafeței
float suprafataCerc = PI * raza * raza;
// Afișarea rezultatului
std::cout << "Suprafata cercului cu raza " << raza << " este: " << suprafataCerc << std::endl;
RĂSPUNS:
1. **Noțiuni preliminare:**
- Elemente de interfață includ bara de meniu, bara de instrumente, zona de lucru principală și panoul
de formatare.
- Tipuri de elemente în care se poate insera un tabel: într-o celulă a documentului sau într-un cadru
text.
b. **Aspect:**
- Alegerea culorii de fundal pentru celule sau tabel.
- Modificarea stilului și grosimii liniilor tabelului.
c. **Aliniere:**
- Alinierea textului în interiorul celulelor (la stânga, la centru, la dreapta).
- Alinierea tabelului în cadrul documentului.
d. **Merge și Split:**
- Unirea sau separarea celulelor pentru a crea structuri mai complexe.
e. **Sortare:**
- Sortarea datelor în tabel în funcție de anumite criterii.
f. **Formate predefinite:**
- Aplicarea rapidă a unui format predefinit, cum ar fi "Tabel cu sâmburii alternanți".
i. **Adăugare de formule:**
- Utilizarea funcțiilor de calcul într-o celulă.
RĂSPUNS:
Pentru a rezolva această problemă, vom împărți problema în două părți: implementarea
subprogramului `ouroboros` și apoi scrierea programului principal care utilizează acest subprogram.
#include <iostream>
#include <cstring>
#include <cctype>
if (isOuroboros) {
maxN = max(maxN, n);
break; // Trecem la următoarea poziție în șir
++i;
}
}
return maxN;
}
int main() {
char text[100];
cin.getline(text, 100);
// Afișăm rezultatele
cout << maxN << endl;
if (ouroboros(token) == maxN) {
cout << token << " ";
}
if (maxN == 0) {
cout << "NU";
}
return 0;
}
```
Acest program citește un text de la tastatură, utilizează subprogramul `ouroboros` pentru a determina
cea mai mare valoare nenulă a lui n, și afișează apoi cuvintele corespunzătoare sau mesajul "NU"
dacă nu există o astfel de valoare.
RĂSPUNS:
Pentru a rezolva această problemă, putem utiliza un algoritm eficient de căutare într-un set.
#include <iostream>
#include <fstream>
#include <unordered_set>
int main() {
ifstream inputFile("titu2023.in");
if (!inputFile) {
cerr << "Nu am putut deschide fisierul." << endl;
return 1;
}
unordered_set<int> numbers;
int currentNumber;
inputFile.close();
// Afișăm rezultatul
if (found) {
cout << "DA" << endl;
} else {
cout << "NU" << endl;
return 0;
}
1. **Citirea datelor:**
- Se deschide și se citește fișierul `titu2023.in`.
- Numerele din fișier sunt adăugate într-un set (`unordered_set`) pentru a elimina duplicatele și
pentru a eficientiza căutarea.
2. **Verificarea sumei:**
- Se parcurg toate perechile distincte de numere din set.
- Pentru fiecare pereche, se calculează suma și se verifică dacă valoarea necesară pentru a obține
suma 2023 există în set.
3. **Afișarea rezultatului:**
- Se afișează pe ecran mesajul "DA" dacă se găsește o pereche de numere cu suma 2023, altfel se
afișează "NU".
Eficiența algoritmului:
- Algoritmul are o complexitate de timp de O(N^2), unde N este numărul total de numere distincte din
fișier.
- Utilizarea unui set (implementat sub formă de tabel de dispersie) pentru stocarea numerelor permite
accesul rapid și eficient pentru a verifica existența unui număr în set.
- Algoritmul evită verificarea perechilor duplicate și utilizează un set pentru a evita duplicatele, ceea ce
contribuie la eficiența sa.
RĂSPUNS:
2. **Tipuri de Exerciții:**
a. **Exerciții de Verificare a Proprietăților Grafurilor:** Elevii pot fi solicitați să demonstreze sau
să verifice anumite proprietăți ale grafurilor, cum ar fi existența unui ciclu Hamiltonian.
b. **Exerciții de Implementare Practică:** Elevii pot fi încurajați să implementeze algoritmi
fundamentali pentru prelucrarea grafurilor într-un limbaj de programare.
RĂSPUNS:
1. **Enunț:**
Identificați și enumerați cel puțin cinci dispozitive de intrare ale unui calculator personal.
2. **Răspuns Așteptat:**
- Tastatură
- Mouse
- Cameră Web
- Microfon
- Scanner
3. **Criterii de Evaluare:**
- 6 puncte pentru fiecare dispozitiv de intrare identificat și enumerat corect, pentru un total de 30 de
puncte.
1. **Enunț:**
Explicați diferența dintre componentele hardware și software ale unui calculator personal.
2. **Răspuns Așteptat:**
- **Componente Hardware:** Sunt componentele fizice ale calculatorului, cum ar fi procesorul,
memoria RAM, hard disk-ul, placa de bază.
- **Componente Software:** Sunt programele și instrucțiunile de control care rulează pe calculator,
cum ar fi sistemul de operare, aplicațiile.
3. **Criterii de Evaluare:**
- 15 puncte pentru descrierea corectă a componentelor hardware.
- 15 puncte pentru descrierea corectă a componentelor software, pentru un total de 30 de puncte.
1. **Enunț:**
Alegeți un dispozitiv de intrare și explicați cum funcționează.
3. **Criterii de Evaluare:**
- 15 puncte pentru alegerea și denumirea corectă a unui dispozitiv de intrare.
- 15 puncte pentru explicația corectă a modului de funcționare a dispozitivului ales, pentru un total de
30 de puncte.
1. **Itemul 1:**
- Corectitudinea identificării și enumerării dispozitivelor de intrare: 30 puncte
2. **Itemul 2:**
- Corectitudinea descrierii componentelor hardware: 15 puncte
- Corectitudinea descrierii componentelor software: 15 puncte
3. **Itemul 3:**
- Corectitudinea alegerii și denumirii dispozitivului de intrare: 15 puncte
- Corectitudinea explicației funcționării dispozitivului ales: 15 puncte