Sunteți pe pagina 1din 16

VARIANTA 7 SUBIECTU 3 EX 3

1)Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (0<n≤100)şi cele

3*n elemente ale tabloului unidimensional v, numere naturale cu cel mult patru cifre fiecare.

Tabloul este împărţit în trei zone, cu câte n elemente fiecare: prima zonă conţine primele n

elemente din tablou, a doua zonă conţine următoarele n elemente din tablou, restul

elementelor fiind în zona a treia. Programul va interschimba elementele zonei unu cu

elementele zonei trei şi va afişa pe ecran toate elementele tabloului, astfel transformat,

separate prin câte un spaţiu.

De exemplu, pentru n=3 şi v=(1 2 3 4 5 6 7 8 9), se va afişa pe ecran :

789456123
#include <iostream>

using namespace std;


int main()
{
int n,copie, v[101];
cin >> n;
for (int i = 1; i <= n*3;i++)
{
cin >> v[i];
}
for (int i = 1; i <= n; i++)
{
copie = v[n * 2 + i];
v[n * 2 + i] = v[i];
v[i] = copie;

}
for (int i = 1; i <= n * 3; i++)
{
cout << v[i] << " ";
}
return 0;
}
Varianta 55 Ex 4 Subiectul 3

2) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural nenul n (n≤100)

şi 2*n numere naturale de maximum 3 cifre; primele n reprezintă elementele tabloului

unidimensional a, iar următoarele n elementele tabloului unidimensional b; fiecare tablou

are elementele numerotate începând de la 1. Programul construieşte în memorie şi afişează

pe ecran, separate prin câte un spaţiu, cele n elemente ale unui tablou unidimensional c, în

care orice element ci (1≤i≤n) se obţine conform definiţiei următoare:

┌ ai concatenat cu bi, dacă ai< bi

ci = │ bi concatenat cu ai, altfel

Exemplu: dacă n=3 şi tablourile a şi b au conţinutul

alăturat, a : (12, 123, 345) b: (1, 234, 15)

atunci conţinutul tabloului c este următorul:

112 123234 15345

#include <iostream>

using namespace std;


int main()
{
int n,cifre,copie, a[101],b[101],c[101];
cin >> n;
for (int i = 1; i <= n;i++)
{
cin >> a[i];
}
for (int i = 1; i <= n; i++)
{
cin >> b[i];
}
for (int i = 1; i <= n; i++)
{
cifre = 1;
if (a[i] < b[i])
{
copie = b[i];
while (copie != 0)
{
cifre = cifre * 10;
copie = copie / 10;
}
c[i] = a[i] * cifre + b[i];
}
else
{
copie = a[i];
while (copie != 0)
{
cifre = cifre * 10;
copie = copie / 10;
}
c[i] = b[i] * cifre + a[i];
}

}
for (int i = 1; i <= n; i++)
{
cout << c[i] << " ";
}
return 0;
}

Varianta 10 Ex 3 Subiectul 3

3) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (n≤100) şi apoi

cele n elemente, numere naturale cu cel mult 4 cifre fiecare, ale unui tablou unidimensional

a. Programul determină şi afişează pe prima linie a ecranului suma celor n elemente ale

tabloului, pe a doua linie a ecranului suma primelor n-1 elemente şi aşa mai departe astfel

încât pe linia n-1 se va afişa suma primelor două elemente, iar pe linia n primul element al

tabloului.

Exemplu: dacă n=4, iar tabloul are elementele a=(1,2,3,4) programul

va afişa valorile alăturate.

10

#include <iostream>

using namespace std;


int main()
{
int n,suma,a[100];
cin >> n;
for (int i = 0; i < n;i++)
{
cin >> a[i];
}
for (int i = 0; i < n; i++)
{
suma = 0;
for (int j = 0; j < n - i;j++)
{
suma = suma + a[j];
}
cout << suma << endl;
}
return 0;
}
Varianta 16 Ex 3 Subiectul 3

4) Scrieţi programul C/C++ care citeşte de la tastatură elementele unui tablou unidimensional

cu exact 10 numere naturale, mai mici decât 1000, determină şi afişează pe ecran,

separate prin câte un spaţiu, numărul de elemente din şir care sunt multipli ai numărului 13

şi, în continuare, poziţiile pe care acestea se găsesc în şir. Elementele tabloului sunt

numerotate de la 1 la 10.

Exemplu: dacă şirul citit este 2, 6, 26, 14, 130, 11, 8, 23, 39, 52, se vor afişa numerele 4 3

5 9 10.

#include <iostream>

using namespace std;


int main()
{
int v[11],pozitii[11],numere = 0;
for(int i = 1; i <= 10;i++)
{
cin >> v[i];
}
for (int i = 1; i <= 10; i++)
{
if (v[i] % 13 == 0)
{
numere++;
pozitii[numere] = i;
}
}
cout << numere << " ";
for (int i = 1; i <= numere; i++)
{
cout << pozitii[i] << " ";
}
return 0;
}
Varianta 37 Ex 3 Subiectul 3

5)Scrieţi un program C/C++ care citeşte numerele naturale nenule n şi k (k≤n≤100) şi un

tablou unidimensional cu n elemente numere întregi, fiecare având cel mult 4 cifre.

Programul modifică tabloul, permutând circular cu k poziţii spre stânga, elementele acestuia

şi afişează pe ecran, pe o singură linie, separate prin câte un spaţiu, elementele tabloului

obţinut.

Exemplu: dacă n=4, k=3 şi tabloul v=(1,2,3,4), atunci se vor afişa în ordine elementele:

4 1 2 3.

#include <iostream>

using namespace std;


int main()
{
int v[101],k,aux, n;
cin >> n;
cin >> k;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
for (int i = 1; i <= k; i++)
{
aux = v[n];
v[n] = v[n - 1];
v[n - 1] = aux;
for (int j = n - 2; j >= 1; j--)
{
aux = v[j];
v[j] = v[n];
v[n] = aux;
}
}
for (int i = 1; i <= n; i++)
{
cout << v[i] << " ";
}
return 0;
}
Varianta 52 Ex 3 Subiectul 3

6)Scrieţi un program C/C++ care citeşte de la tastatură un număr natural nenul n (n≤100) şi

apoi n numere naturale, de maximum 4 cifre fiecare, reprezentând elementele unui tablou

unidimensional. Programul afişează mesajul Da în cazul în care elementele tabloului pot fi

rearanjate astfel încât să formeze un şir strict crescător, iar în caz contrar afişează mesajul

Nu.

Exemplu: dacă n=6 şi tabloul unidimensional are

conţinutul alăturat, atunci se va afişa Da.

(10p.)

54 162 2 18 486

#include <iostream>

using namespace std;


int main()
{
int v[101],n,aux,cond=false;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
for (int i = 1; i <= n; i++)
{
for (int j =i + 1; j <= n; j++)
{
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
for (int i = 1; i <= n; i++)
{
if (v[i] == v[i + 1])
{
cond = true;
cout << "NU";
break;
}
}
if (cond == false)
{
cout << "DA";
}
return 0;
}
Varianta 53 Ex 4 Subiectul 3

7) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural nenul n

(n<=100), apoi un şir de n numere naturale cu cel mult 4 cifre fiecare, şi afişează pe ecran

şirul şi cele n-1 şiruri ce se pot obţine prin permutările circulare, către stânga, ale

elementelor şirului. Fiecare şir se afişează pe câte o linie, elementele şirului fiind separate

prin câte un spaţiu.

Exemplu: dacă n=4 , iar şirul are conţinutul alăturat 10 20 30 49, atunci se

vor afişa şirurile:

10 20 30 49

20 30 49 10

30 49 10 20

49 10 20 30

#include <iostream>

using namespace std;


int main()
{
int v[101],n,aux;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
for (int i = 1; i <= n; i++)
{
cout << v[i] << " ";
}
cout << endl;
for (int i = 1; i < n; i++)
{
for (int j = n; j > 1; j--)
{
aux = v[1];
v[1] = v[j];
v[j] = aux;
}
for (int i = 1; i <= n; i++)
{
cout << v[i] << " ";
}
cout << endl;
}
return 0;
}
VARIANTA 54 EX 4 SUBIECTUL 3

8) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural nenul n (n<=100)

şi apoi cele n numere naturale nenule, de maximum 4 cifre, reprezentând elementele unui

tablou unidimensional v (cu indici de la 1 la n) şi afişează câte dintre elementele vi

(2≤i≤n-1) sunt egale cu suma celor două elemente vecine. În cazul în care nu există

niciun astfel de element în tabloul v, se va afişa valoarea 0.

Exemplu: dacă n=7 şi tabloul unidimensional v are

conţinutul alăturat, atunci se va afişa valoarea 2

(deoarece 25=10+15, 45=15+30). (10p.)

10 25 15 45 30 2 1

#include <iostream>

using namespace std;


int main()
{
int v[101],n,contor=0;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}

for (int i = 2; i <= n-1; i++)


{
if (v[i] == v[i - 1] + v[i + 1])
{
contor++;
}
}
cout << contor;
return 0;
}
VARIANTA 3 EX 3 SUBIECTUL 3

9) Fişierul text NR.TXT conţine pe o singură linie, separate prin câte un singur spaţiu, cel mult

100 de numere naturale, fiecare număr având cel mult 4 cifre. Scrieţi un program C/C++

care citeşte toate numerele din fişier şi afişează pe ecran, separate prin câte un spaţiu, în

ordine crescătoare, toate numerele din fişier care au cel puţin 3 cifre. Dacă fişierul nu

conţine astfel de numere se va afişa pe ecran mesajul NU EXISTA.

#include <iostream>

using namespace std;


int main()
{
int v[101],n,copie,contor=0,cifre=0,aux;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = i+1; j <= n; j++)
{
if (v[i] > v[j])
{
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
for (int i = 1; i <= n; i++)
{
cifre = 0;
copie = v[i];
while (copie != 0)
{
cifre++;
copie = copie / 10;
}
if (cifre >= 3)
{
cout << v[i] << " ";
contor++;
}
}
if (contor == 0)
{
cout << "NU EXISTA";
}
return 0;
}
VARIANTA 4 EX 3 SUBIECTUL 3

10) Fişierul text NR.TXT conţine pe o singură linie, separate prin câte un singur spaţiu, cel mult

100 de numere naturale, fiecare număr având cel mult 4 cifre. Scrieţi un program C/C++

care citeşte numerele din fişierul NR.TXT şi afişează pe ecran, separate prin câte un spaţiu,

în ordine descrescătoare, toate numerele din fişier care au cel mult 2 cifre. Dacă fişierul nu

conţine astfel de numere se va afişa pe ecran mesajul NU EXISTA.

#include <iostream>

using namespace std;


int main()
{
int v[101],n,copie,contor=0,cifre=0,aux;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = i+1; j <= n; j++)
{
if (v[i] < v[j])
{
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
for (int i = 1; i <= n; i++)
{
cifre = 0;
copie = v[i];
while (copie != 0)
{
cifre++;
copie = copie / 10;
}
if (cifre <= 2)
{
cout << v[i] << " ";
contor++;
}
}
if (contor == 0)
{
cout << "NU EXISTA";
}
return 0;
}
VARIANTA 12 EX 3 SUBIECTUL 3

11) Fişierul BAC.TXT conţine pe prima linie două valori naturale, m şi n (m≤100, n≤100), pe a

doua linie un şir de m numere întregi, iar pe a treia linie un şir de n numere întregi. Fiecare

dintre aceste şiruri sunt ordonate strict crescător, iar elementele lor au cel mult 9 cifre

fiecare. Numerele de pe acelaşi rând sunt separate prin câte un spaţiu.

Se cere să se afişeze pe ecran câte dintre elementele celui de al doilea şir nu se regăsesc

şi în primul şir.

Exemplu: dacă fişierul are conţinutul

6 7

1 2 3 4 7 20

3 5 7 8 9 20 24

se va afişa valoarea 4 (numerele care respectă condiţia sunt 5 8 9 24).

b) Scrieţi programul C/C++ corespunzător algoritmului descris. (6p.)

#include <iostream>

using namespace std;


int main()
{
int v[101], v2[101], n, m,contor=0;
bool conditie;
cin >> m;
cin >> n;
for(int i = 1; i <= m;i++)
{
cin >> v[i];
}
for (int i = 1; i <= n; i++)
{
cin >> v2[i];
}
for (int i = 1; i <= n; i++)
{
conditie = false;
for(int j = 1; j <= m; j++)
{
if (v2[i] == v[j])
{
conditie = true;
break;
}
}
if (conditie == false)
{
contor++;
}
}
cout << contor;
return 0;
}
VARIANTA 28 EX 3 SUBIECTUL 3

12) Se consideră un şir de n numere reale. Un număr x din acest şir se numeşte median dacă

este egal cu media aritmetică a celorlalte n-1 numere din şir.

Exemplu: elementul x=5 este median pentru şirul 2 5 6 7 deoarece 5=(2+6+7)/3.

Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n din intervalul

[2,50] şi apoi un şir de n numere reale şi afişează pe ecran câte dintre elementele şirului

sunt mediane.

#include <iostream>

using namespace std;


int main()
{
int v[101], n,contor=0,suma;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
for (int i = 1; i <= n; i++)
{
suma = 0;
for(int j = 1; j <= n; j++)
{
if (i !=j)
{
suma = suma + v[j];
}
}
if (v[i] == suma / (n – 1))
{
contor++;
}
}
cout << contor;
return 0;
}
VARIANTA 34 EX 4 SUBIECTUL 3

13) Scrieţi programul C/C++ care citeşte de la tastatură un număr natural n (n<100), apoi un

şir de n numere naturale de cel mult 3 cifre fiecare şi afişează pe ecran cel mai mare număr

de valori pare aflate pe poziţii consecutive în şirul citit.

Exemplu: pentru n=8 şi numerele 12,7,4,16,10,3,6,6 se va afişa 3 .

#include <iostream>

using namespace std;


int main()
{
int v[101],n,nr_cons=0,max_cons=0;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
for (int i = 1; i <= n; i++)
{
if(v[i] % 2 == 0)
{
nr_cons++;
}
else
{
if (nr_cons > max_cons)
{
max_cons = nr_cons;
}
nr_cons = 0;
}
}
cout << max_cons;
return 0;
}
VARIANTA 46 EX 3 SUBIECTUL 3

14) Fişierul bac.txt conţine pe prima linie un număr natural n (n≤100), iar pe a doua linie,

separate prin câte un spaţiu, n numere naturale nenule, cu cel mult 4 cifre fiecare. Scrieţi

programul C/C++ care citeşte de la tastatură un număr natural k (k≤25), construieşte în

memorie şi afişează pe ecran un tablou unidimensional ce conţine, în ordinea în care au fost

citite, numerele de pe a doua linie a fişierului bac.txt care au cel puţin k divizori.

Exemplu: dacă k=5, iar fişierul are conţinutul alăturat 6 100 9 400 56 7 10, atunci tabloul care se
afişează este:

100 400 56 (10p.)

#include <iostream>

using namespace std;


int main()
{
int v[101],n,k,v2[101],contor=0,l=0;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
cin >> k;
for (int i = 1; i <= n; i++)
{
contor = 0;
for (int j = 1; j <= v[i]; j++)
{
if (v[i] % j == 0)
{
contor++;
if (contor == k)
{
l++;
v2[l] = v[i];
break;
}
}
}
}
for (int i = 1; i <= l; i++)
{
cout << v2[i] << " ";
}
return 0;
}
VARIANTA 47 EX 3 SUBIECTUL3

15) Fişierul text bac.txt conţine pe prima linie un număr natural n (n<100), iar pe a doua

linie, separate prin câte un spaţiu, n numere naturale, mai mici decât 30000 fiecare.

Scrieţi un program C/C++ care citeşte de la tastatură un număr natural k (k<50) precum şi

numerele din fişierul bac.txt şi afişează pe ecran, cu câte un spaţiu între ele, toate

numerele de pe a doua linie a fişierului care sunt puteri ale lui k. Dacă nu există un

asemenea număr pe a doua linie a fişierului, se afişează pe ecran mesajul NU. Un număr

natural x este putere a lui k dacă există un număr natural y astfel încât x=ky.

Exemplu: dacă se citeşte de la tastatură

k=2, iar fişierul are conţinutul alăturat 8, 32 56 317 809 256 2 1 60, atunci pe ecran se afişează
numerele:

32 256 2 1 (10p.)

#include <iostream>

using namespace std;


int main()
{
int v[101],nr,n,k,contor=0;
cin >> n;
for(int i = 1; i <= n;i++)
{
cin >> v[i];
}
cin >> k;
for (int i = 1; i <= n; i++)
{
nr = 1;
while (nr < v[i])
{
nr = nr * k;
}
if (nr == v[i])
{
cout << v[i] << " ";
contor++;
}
}
if (contor == 0)
{
cout << "NU";
}
return 0;
}
16) Fişierul text bac.txt conţine, pe prima sa linie, 100 de numere naturale de cel mult 4 cifre

fiecare, numerele fiind ordonate crescător şi separate prin câte un spaţiu, iar pe a doua linie

un singur număr natural x. Scrieţi un program C/C++ care citeşte toate numerele din fişier şi

verifică dacă x se află în şirul celor 100 de numere aflate pe prima linie a fişierului. În caz

afirmativ, se va afişa pe ecran mesajul DA, altfel se va afişa mesajul NU.

Exemple: dacă fişierul bac.txt conţine:

17 38 40 45 50 51 52 53 54 55 ... 145

52

atunci se va afişa: DA ;

dacă fişierul bac.txt conţine:

2 11 15 16 20 25 30 35 40 ... 495

33

atunci se va afişa: NU.

#include <iostream>

using namespace std;


int main()
{
int v[101],x,cond=0;
for(int i = 1; i <= 100;i++)
{
cin >> v[i];
}
cin >> x;
for (int i = 1; i <= 100; i++)
{
if (v[i] == x)
{
cout << "DA";
cond = 1;
break;
}
}
if (cond == 0)
{
cout << "NU";
}
return 0;
}

S-ar putea să vă placă și