0% au considerat acest document util (0 voturi)
1K vizualizări46 pagini

Probleme in C++

Documentul prezintă mai multe aplicații ale algoritmului de determinare a celei mai lungi secvențe de elemente consecutive care îndeplinesc o anumită proprietate, cum ar fi secvența de numere pare/impare/egale de lungime maximă, precum și explicarea modului în care acest algoritm funcționează.

Încărcat de

Adi Beca
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
1K vizualizări46 pagini

Probleme in C++

Documentul prezintă mai multe aplicații ale algoritmului de determinare a celei mai lungi secvențe de elemente consecutive care îndeplinesc o anumită proprietate, cum ar fi secvența de numere pare/impare/egale de lungime maximă, precum și explicarea modului în care acest algoritm funcționează.

Încărcat de

Adi Beca
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

10.

interclasarea
Edit 0 3
Interclasarea= operatia de construire a unui sir ordonat cu valorile preluate din
doua siruri ordonate in prealabil
int a[30],b[30],c[60],n,m,k;
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
cin>>m;
for(i=1;i<=m;i++)cin>>b[i];
i=1;j=1;k=0;
(cat timp nu s-a terminat niciunul din siruri, se adauga elementul mai mic din cele
doua siruri )
while(i<=n&&j<=m)
if(a[i]<b[j])c[++k]=a[i++];
else if(b[j]<a[i])c[++k]=b[j++];
(daca sunt egale elementele sin cele doua siruri din unul se preia elementul si in
celelalt se sare peste el)
else {c[++k]=a[i++];j++;}
(daca primul sir nu s-a terminat se adauga toate elementele lui)
while(i<=n)c[++k]=a[i++];
(daca al doilea sir nu s-a terminat se adauga toate elementele lui)
while(j<=m)c[++k]=b[j++];
(afisarea sirului rezultat)
for(i=1;i<=k;i++)cout<<c[i]<<" ";
Probleme:
1.(varianta 12 bac)Fiierele text [Link] i [Link] conin, separate prin cte
un spaiu, mai multe numere ntregi de cel mult 9 cifre fiecare. Fiecare dintre
fiiere conine cel mult 100 de valori i numerele din fiecare fiier sunt ordonate
strict cresctor. Se cere s se afieze pe ecran, n ordine cresctoare, numerele
divizibile cu 5 care se gsesc doar n unul din cele dou fiiere.

Exemplu: dac fiierul [Link] conine numerele 1 2 3 4 7 20 60, iar fiierul


[Link] conine numerele 3 5 7 8 9 10 12 20 24, atunci se vor afia pe ecran
valorile 5 10 60.
a) Descriei un algoritm de rezolvare a acestei probleme, eficient din punct de
vedere al timpului de executare i al spaiului de memorie utilizat, explicnd n ce
const eficiena acestuia. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
2.(varianta 19 bac)n fiierul [Link] este memorat pe prima linie o valoare
natural n de cel mult 8 cifre, iar pe linia urmtoare sunt memorate n numere
naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate prin
cte un spaiu. n fiierul [Link] este memorat pe prima linie o valoare natural m
de cel mult 8 cifre, iar pe linia urmtoare sunt memorate m numere naturale, cu
maximum 4 cifre fiecare, ordonate strict cresctor i separate prin cte un spaiu.
Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict
cresctoare, a tuturor numerelor aflate pe a doua linie n cel puin unul dintre cele
dou fiiere. n cazul n care un numr apare n ambele fiiere, el va fi afiat o
singur dat.
Alegei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate
i al timpului de executare.
Exemplu: pentru urmtoarele fiiere:
[Link] [Link]
56
3 6 8 9 12 2 3 5 7 9 13
se va afia 2 3 5 6 7 8 9 12 13.
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena
algoritmului ales. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.

[Link] consider dou tablouri unidimensionale a i b fiecare avnd numere


naturale de maximum patru cifre, ordonate cresctor. Tabloul a conine n
(1<n<100) numere pare, iar tabloul b conine m (1<m<100) numere impare.
a) Scriei un program C/C++ care citete de la tastatur valoarea lui n i cele n
elemente ale tabloului a, apoi valoarea lui m i cele m elemente ale tabloului b
dup care scrie n fiierul [Link] un numr maxim de elemente ale tablourilor
date, numerele fiiind scrise n ordine cresctoare, separate prin cte un spaiu, iar
cele aflate pe poziii consecutive fiind de paritate diferit. Programul va utiliza un
algoritm eficient din punct de vedere al timpului de executare.
Exemplu: pentru n=6, m=5 i tablourile a=(2,4,8,10,14,16) i b=(3,5,7,11,15 )
fiierul [Link] va avea urmtorul coninut : 2 3 4 5 8 11 14 15 16
4.n fiecare dintre fiierele [Link] i [Link] este memorat pe prima linie cte o
valoare natural n de cel mult 8 cifre, iar pe linia urmtoare sunt memorate cte n
numere naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate
prin cte un spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n
ordine strict cresctoare, a tuturor numerelor aflate pe a a doua linie n cel puin
unul dintre cele dou fiiere. n cazul
n care un numr apare n ambele fiiere, el va fi afiat o singur dat. Alegei un
algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al
timpului de execuie.
Exemplu: pentru urmtoarele fiiere:
[Link]
5
3 6 8 9 12
[Link]
6
2 3 5 7 9 13
se va afia 2 3 5 6 7 8 9 12 13.
5.n fiecare dintre fiierele [Link] i [Link] este memorat pe prima linie cte o

valoare natural n de cel mult 8 cifre, iar pe linia urmtoare sunt memorate cte n
numere naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate
prin cte un spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n
ordine strict cresctoare, a tuturor numerelor aflate pe a a doua linie att n primul
ct i n al doilea fiier. Alegei un
algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al
timpului de execuie.
Exemplu: pentru urmtoarele fiiere:
[Link]
5
3 6 8 9 12
[Link]
6
2 3 5 7 9 13
se va afia 3 9.
Cutare binar
Algoritmul de cutare binar ofer performane mai bune dect algoritmul de
cutare secvenial. El funcioneaz astfel: se compar numrul
de cutat cu elementul aflat la mijlocul irului (element care se mai numete i
pivot). n cazul n care cele dou elemente coincid cutarea s-a ncheiat cu
succes. Dac numrul de cutat este mai mare dect pivotul, se continu
cutarea n aceeai manier n subirul delimitat de pivot i captul irului iniial.
Dac numrul de cutat este mai mic dect pivotul se continu cutarea n
aceeai manier n subirul delimitat de pivot i nceputul irului iniial.
Algoritmul prezentat se ncadreaz n clasa algoritmilor elaborai conform tehnicii
de programare Divide et Impera.
Unul din dezavantajele acestui algoritm este c irul n care se face cutarea
trebuie s fie iniial sortat.
#include<iostream>
using namespace std;
void main()

{
int i, n, x, st, dr, mijl, gasit, a[50];
cout<<"Introduceti numarul elementelor vectorului : ";
cin>>n;
cout<<"Introduceti elementul de cautat : ";
cin>>x;
for(i=1;i<=n;i++) {cout<<"a["<<i<<"]= "; cin>>a[i];}
st=1; dr=n; gasit=0;
while (st<=dr && gasit!=1) {
mijl=(st+dr)/2;
if (a[mijl]==x)
gasit=1;
else
if (x<a[mijl])
dr=mijl-1;
else
st=mijl+1;
}
if (st>dr)
cout<<"Nu s-a gasit elementul cautat !"<<endl;
else
cout<<"Elementul cautat apartine sirului !"<<endl;
}
Aplicatii:
1)(varianta 24 bac)Fiierul text [Link] conine pe prima linie numrul natural n,
1n30000, pe urmtoarele n linii un ir de n numere ntregi, ordonate cresctor,
iar pe ultima linie dou numere ntregi a i b (ab) separate de un spaiu. Fiecare
dintre cele n numere, precum i valorile a i b, au cel mult patru cifre.
a) Scriei un program C/C++, eficient din punct de vedere al timpului de executare,
care afieaz pe ecran cel mai mic numr ntreg din intervalul nchis [a,b] care se
gsete n irul dat. Dac nu exist un astfel de numr, programul afieaz textul
NU.

Exemplu: dac fiierul [Link] are coninutul de mai jos, programul afieaz
valoarea 11
4
-2
7
11
35
8 15
[Link] citeste p natural. Afisati cel mai mic numar al carui factorial are fix p zerouri.
Ex. p=2 => 10
[Link] de elemente de lungime maxima
Edit 0 3
a)Determinarea unei secvente de elemente consecutive ce indeplinesc o
proprietate, de lungime maxima cu retinerea numarului de elemente din
secventa si a pozitiei ei de inceput
Ex1. Secventa de pare de lungime maxima
n=10 a(12,9,10,4,6,8,1,5,2,22)
Se afiseaza: 10 4 6 8
Daca sunt mai multe de aceeasi lungime maxima, se afiseaza prima.
lg=0;
for(i=1;i<=n;i++)
{if(a[i]%2==0)lg++;
else lg=0;
if(lg>max){max=lg;
pozinceput=i-lg+1;}

}
for(i=0;i<max;i++)cout<<a[i+poz]<<" ";
Ex1. Secventa crescatoare de lungime maxima
n=10 a(12,9,10,4,6,8,1,5,2,22)
Se afiseaza: 4 6 8
Daca sunt mai multe de aceeasi lungime maxima, se afiseaza prima.
lg=1;
for(i=1;i<n;i++)
{if(a[i]<a[i+1])lg++;
else lg=1;
if(lg>max){max=lg;
pozinceput=i-lg+1;}
}
for(i=0;i<max;i++)cout<<a[i+poz]<<" ";
Aplicatii:
[Link] mai lunga secventa de numere prime dintr-un sir
[Link] mai lunga secventa de elemente cu aceeasi paritate dintr-un sir
[Link] mai lunga secventa de elemente consecutiv egale. Daca sunt mai multe
afisati-o pe cea de valoare minima.
a(4,11,11,11,3,5,5,5,21,21,21)=>5 5 5
[Link] text [Link] conine pe prima linie dou numere naturale, n i k,
separate de un spaiu (3n10000, 2kn/2), iar pe a doua linie un ir de n
numere naturale, x1, x2, ..., xn, separate prin cte un spaiu, fiecare numr din
acest ir avnd cel mult patru cifre. Scriei un program C/C++ care citete
numerele din fiier i determin, utiliznd o metod eficient din punct de vedere
al timpului de executare, cel mai mic indice i (1in-k+1) pentru care suma
termenilor x[i], x[i+1], ..., x[i+k-1] este maxim. Programul afieaz valoarea lui i pe
ecran.
Exemplu:
pentru fiierul
83

29475299
se afieaz 2, deoarece suma maxim se obine pentru 9+4+7.
a)Determinarea unei secvente de elemente consecutive ce indeplinesc o
proprietate, de lungime maxima cu construirea unui nou sir care sa retina
secventa curenta si aunui sir ce sa retina seventa maxima
Ex1. Secventa de pare de lungime maxima
lg=0;
for(i=1;i<=n;i++)
{if(a[i]%2==0){lg++;b[lg]=a[i];}
else lg=0;
if(lg>max){max=lg;
for(j=1;j<=max;j++)sirmax[j]=b[j];}
}
for(i=1;i<=max;i++)cout<<sirmax[i]<<" ";

7-Sortari
Edit 0 2
Sortarea=algoritm de ordonare a valorilor dintr-un sir
Exista mai multe metode de sortare. In prima faza vom studia doar una dintre ele:
Sortarea prin selectie directa- se bazeaza pe interschimbarea perechilor
(a[i],a[j]), i<j, care nu sunt in ordine crescatoare(a[i])>a[j])
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i]>a[j])
{aux=a[i];
a[i]=a[j];
a[j]=aux;}

Aplicatii:
1. Se citesc doua siruri de valori a cu n elemente si b cu m elemente. Verificati
daca aceste siruri contin aceleasi elemente dar in alta ordine.(siruri anagrama)
2. Sortati valorile pare dintr-un sir crescator si cele impare descrescator.
3. Mutati valorile nule la sfarsitul sirului
[Link] doar valorile de pe pozitii pare dintr-un sir (restul sa ramana in aceeasi
ordine)
5. Sortati un sir intre pozitia minimului si a maximului crescator
Metode de sortare pentru vectori
1. Sortarea prin selecie direct
Considerm un vector de elemente comparabile ntre ele i dorim s le ordonm
cresctor. Pentru aceasta comparm primul element cu toate elementele care
urmeaz dup el. Dac gsim un element mai mic dect primul atunci le
interschimbm pe cele dou. Apoi continum cu al doilea element al irului, pe
care, de asemenea l comparm cu toate elementele care urmeaz dup el i n
caz de inversiune interschimbm cele dou elemente. Apoi procedm la fel cu al
treilea element al irului iar procesul continu astfel pna la penultimul element al
irului care va fi comparat cu ultimul element din ir.
#include<iostream>
using namespace std;
void main()
{
int i,j,n,aux,a[50];
cout<<"Introduceti numarul de elemente din sir : "; cin>>n;
cout<<"Introduceti numerele"<<endl;
for(i=0;i<n;i++) {cout<<"a["<<i<<"]="; cin>>a[i];}
urmeaza algoritmul de sortare//
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)

if (a[j]<a[i]) {
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
urmeaza afisarea sirului sortat
cout<<"Sirul sortat este:"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
2. Sortarea prin metoda bulelor
Acest algoritm se mai numete i "sortarea prin selecie i interschimbare",
"sortarea prin propagare" sau "metoda lent de sortare"
datorit numrului mare de operaii care trebuie efectuate. Succesul algoritmului
este asigurat de trecerea succesiv prin tablou, pn cnd
acesta este sortat, cu specificaia c, la fiecare trecere, elementele succesive i i
i+1 pentru care a[i]>a[i+1], vor fi interschimbate.
Metoda poate fi imbuntit dac, dup fiecare trecere, se va reine ultima poziie
din tablou n care a avut loc o interschimbare, iar trecerea
urmtoare se va efectua doar pin la acea poziie. n cazul n care la o trecere nu
a avut loc nici o interschimbare algoritmul se va incheia.
Pentru o i mai bun optimizare se poate nlocui trecerea prin tablou ntr-un sens
cu trecerea n dublu sens. n acest caz, dac la dou treceri
succesive, ntre dou elemente i i i+1 nu a avut loc o interschimbare, atunci nici
la trecerile urmtoare nu se vor nregistra interschimbri.
Cu toate optimizrile aduse acestei sortari, ea se dovedete a fi cu mult mai lent
dect sortarea prin inserie, fiind ns preferat de unii
datorit simplitii, ce nu ridic probleme de implementare. Pentru valori suficient
de mari ale dimensiunii vectorului ce urmeaz a fi sortat se
recomand utilizarea unor algoritmi ce au o complexitate mai redusa i, prin
urmare, ofer un timp de calcul mai mic.

#include<iostream>
using namespace std;
void main()
{
int n,i,aux,terminat,a[50];
cout<<"Introduceti dimensiunea vectorului : ";
cin>>n;
for(i=0;i<=n-1;i++) { cout<<"a["<<i<<"]="; cin>>a[i];}
terminat=0;
while(!terminat) {
terminat=1;
for(i=0;i<n-1;i++)
if(a[i]>a[i+1]) {
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
terminat=0;}
}
cout<<"Vectorul ordonat este : ";
for(i=0;i<=n-1;i++)
cout<<a[i]<<" ";
cout<<endl;
}
3. Sortarea prin inserie
Considerm c avem vectorul sortat a, iar la ivirea unui nou element care se va
aduga vectorului, el va fi pus pe locul potrivit printr-o inserie n interiorul
vectorului.
- Inseria direct. Este cea mai simpl implementare a algoritmului i se face n
felul urmtor: Se consider c primele i elemente al vectorului
sunt deja sortate. Pentru elementul al (i+1)-lea, din tabloul iniial, se va gsi poziia
n care trebuie inserat printre primele i elemente. Toate
elementele tabloului de la aceast poziie i pn la i vor fi deplasate cu o poziie

mai la dreapta iar poziia eliberat va fi ocupat de elementul i+1.


- Inserarea rapid. Deoarece vectorul destinaie este un vector ordonat cresctor,
cutarea poziiei n care va fi inserat a[i] se poate face nu
secvenial (ca n cazul inserrii directe) ci prin algoritmul de cutare binar.
Subvectorul destinaie este mprit n doi subvectori, se examineaz
relaia de ordine dintre elementul de la mijlocul subvectorului i elementul a[j] i se
stabilete dac elementul a[i] va fi inserat n prima jumtate sau
n a doua jumtate. Operaia de divizare a subvectorului continu pn se gsete
poziia n care urmeaz s fie inserat a[i].
#include<iostream>
using namespace std;
void main()
{
int i,j,n,aux,a[50];
cout<<"Introduceti dimensiunea sirului : "<<endl;
cin>>n;
cout<<"Dati elementele sirului :"<<endl;
for(i=0;i<n;i++) {cout<<"a["<<i<<"]=";cin>>a[i];}
for(j=1;j<n;j++) {
aux=a[j];
i=j-1;
while (aux < a[i] && i>=0){
a[i+1]=a[i];
i=i-1;}
a[i+1]=aux;
}
cout<<"Sirul ordonat este: ";
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
4. Sortarea prin numrare-funcioneaz doar pe iruri cu valori distincte:

Aceast metod necesit spaiu suplimentar de memorie. Ea folosete urmtorii


vectori:
- vectorul surs (vectorul nesortat) a;
- vectorul destinaie (vectorul sortat) b;
- vectorul numrtor (vectorul de contoare) k.
Elementele vectorului surs a[i] se copie n vectorul destinaie prin inserarea n
poziia corespunztoare, astfel nct, n vectorul destinaie s
fie respectat relaia de ordine. Pentru a se cunoate poziia n care se va insera
fiecare element, se parcurge vectorul surs i se numr n vectorul k, pentru
fiecare element a[i], cte elemente au valoarea mai mic dect a lui. Fiecare
element al vectorului k este un contor pentru elementul a[i]. Valoarea contorului k[i]
pentru elementul a[i] reprezint cte elemente sunt mai mici decit el i arat de
fapt poziia n care trebuie copiat n vectorul b.
#include<iostream>
using namespace std;
void main()
{
int i,j,n,a[50],b[50],k[50]={0};
cout<<"Introduceti dimensiunea sirului : "; cin>>n;
for(i=0;i<n;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; }
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
k[i]++;
else k[j]++;
for(i=0;i<n;i++)
b[k[i]]=a[i];
cout<<"Vectorul ordonat este : ";
for(i=0;i<n;i++)
cout<<b[i]<<" ";
cout<<endl;
}

6-Eliminari si adaugari de elemente


Edit 0 1
Eliminarea unei valori de pe pozitia k
for(i=k;i<n;i++)
a[i]=a[i+1];
n--;
OBS. Daca se fac mai multe eliminari, cand se face eliminare de obicei se ramane
pe aceeasi pozitie pentru a vedea daca nu trebuie eliminat si elementul de pe
pozitia respectiva
Adaugarea unei valori v, pe pozitia k
for(i=n;i>=k;i--)
a[i+1]=a[i];
a[k]=v;
n++;
OBS. Daca se fac mai multe adaugari, trebuie avut grija la parcurgere sa se sara
peste elementele adaugate
Aplicatii:
[Link] valorile prime dintr-un sir
[Link] dupa fiecare numar palindrom prefixele sale(prefixele lui 1221 sunt
122, 12 si 1)
[Link] toate aparitiile maximului dintr-un sir.
[Link] dupa fiecare neprim, divizorii proprii in ordine inversa

5-Constructii pe siruri
Edit 0 1
[Link] citeste un sir a de n elemente si un sir b de m elemente
a)Construiti sirul reuniune
b)Construiti sirul intersectie
c)Construiti sirul diferenta simetrica
d)afisati toate elementele din a care sunt mai mici decat toate elementele din b
[Link] citeste un sir din [Link]
a)pentru un numar m, natural de la tastura construiti sirul cu primele m numere
prime(daca exista atatea, daca nu mesaj)
b)pentru un numar m, natural de la tastura construiti sirul cu ultimele m pare(daca
exista atatea, daca nu mesaj)
c)construiti sirul cifrelor distincte folosite in numerele din fisier si sirul frecventelor
lor(vezi mai jos). Afisati apoi cel mai mare numar ce se poate construi din toate
cifrele existente in fisier
[Link] citeste un sir de n elemente intregi de la tastatura
Construiti sirul elementelor distincte in paralel cu sirul frecventelor lor.
a(2,8,-1,5,2,-1,3,2,-1,-1,8)
d(2,8,-1,5)
fr(3,2,4,1)
unde fr[i]=frecventa elementului d[i] in sirul initial
Ce elemente apar cel mai des?
4-Perechi de valori pe siruri
Edit 0 1
Perechile de valori consectutive intr-un sir sunt de forma (a[i],a[i+1]), unde
i<n(nr. de elemente din sir)
si se pot determina cu:
for(i=1;i<n;i++)

{ .....}
Aplicatii:
[Link] numarul de perechi de valori consecutive dintr-un sir cu proprietate
ca sunt numere consecutive
a(5 6 9 10 11 8 9)
4 perechi:
(5,6)
(9,10)
(10,11)
(8 9)
[Link] numarul de perechi de valori consecutive dintr-un sir cu proprietate
ca sunt prime intre ele
[Link] numarul de perechi de valori consecutive dintr-un sir cu proprietate
ca incep cu aceeasi cifra
Perechile de valori distincte intr-un sir sunt de forma (a[i],a[j]) cu j>i.
si se pot determina cu
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
}
Aplicatii:
[Link] toate perechile de valori distincte ce au proprietea ca primul numar al
perechii este mai mic ca cel de-al doilea
[Link] toate perechile de valori distincte ce au proprietea ca au o cifra in comun
[Link] toate perechile de valori distincte ce au proprietea ca reprezinta numere
fibonacci consecutive
4. Afisati tripletele pitagorice dintr-un sir.

3-fisa de lucru siruri


Edit 0 1
[Link] citeste un sir cu n elemente din fisierul [Link]
a)Determinati ultima valoare prima, mesaj daca nu exista prime
b)Determinati daca pe toate pozitiile pare se afla numere prime.
c)Calculati media aritmetica a valorilor de pe indici impari
d)Determinati prima valoare palindrom, mesaj daca nu exista
e)Afisati pozitiile valorilor patrat perfect, mesaj daca nu exista
f)Calculati cmmdc-ul valorilor din sir
g)Verificati daca sirul e crescator sau descrescator, mesaj daca nici crescator nici
descrescator
h)pozitia pe care ar fi primul element in sir daca sirul ar fi ordonat crescator.
[Link] citesc numerele din fisierul [Link]. Sa se construiasca sirul cu
a)numerele prime din fisier. Sa se afiseze intervalul inchis in care se afla acestea
b)numerele palindrom din fisier. Sa se afiseze cate valori pare sunt in sir.
c)numerele prime cu un k, citit de la tastatura. Sa se afiseze maximul si de cate ori
apare.
d)numerele distincte din fisier(multimea). Sa se afiseze primul numar par din sir,
mesaj daca nu exista pare

2-aplicatii pe siruri
Edit 0 1
Indici-valoare
[Link] pozitia pe care se intalneste ultima si prima valoare para dintr-un sir
2. Afisati toate elementele a caror paritate este diferita de paritatea pozitiei lor in
sir. Daca toate elementele din sir au aceasta proprietate afisati mesaj.
3. Verificati daca exista in sir elemente care se pot scrie ca suma de alte doua
valori din sir
[Link] toate perechile de valori din sir care sunt prime intre ele
[Link] elementele din sir care se gasesc intre minim si maxim

[Link] citesc doua numere a, b. Afisati care se gaseste in fata celuilalt in sir.
ex.a=3, b=11 si sirul(2,11,3,4,3,11, 11)
se afiseaza
11 in fata lui 3
11 in fata lui 3
3 in fata lui 11
3 in fata lui 11
3 in fata lui 11
3 in fata lui 11
[Link] daca un sir e crescator sau descrescator, munte, vale sau oarecare.
[Link] daca un sir e multime(contine elemente distincte)
Constructii de siruri
[Link] citesc valori dintr-un fisier, construiti sirul ce contine doar numerele in ordine
strict crescatoare.
2. Construiti multimea(sirul valorilor distincte ce se dau de la tastatura)
1-Cautari si maxime pe siruri
Edit 0 2
Parcurgerea unui sir pentru a gasi valori cu o proprietate
for (i=1;i<=n;i++)
{
doar in acest for se pot efectua calcule asupra lui a[i]
deci pentru fiecare element din sir
}
Cautarea primei valori cu o proprietate cu iesire din repetitiva in momentul
gasirii
gasit=0;
for(i=1;i<=n&&gasit==0;i++)
if(......){prima=a[i];

gasit=1;}
sau:
i=1;gasit=0;
while(i<=n&&gasit==0)
{
if(...){prima=a[i];gasit=1;}
i++;
}
Cautarea primei valori cu o proprietate fara iesire din repetitiva in momentul
gasirii
for(i=n;i>=1;i--)
if(....)prima=a[i];
Cautarea ultimei valori cu o proprietate cu iesire din repetitiva in momentul
gasirii
gasit=0;
for(i=n;i>=1&&gasit==0;i--)
if(......){ultima=a[i];
gasit=1;}
sau:
i=n;gasit=0;
while(i>=1&&gasit==0)
{
if(...){yltima=a[i];gasit=1;}
i--;
}
Cautarea ultimei valori cu o proprietate fara iesire din repetitiva in momentul
gasirii
for(i=1;i<=n;i++)
if(....)ultima=a[i];

Cautarea celei de-a m-a valori cu o proprietate


for(i=1;i<=n&&m!=0;i++)
if(.....)m--;
if(m==0&&i<=n)cout<<a[i];
else cout<<"Nu exista atatea valori cu proprietatea"

Maxime si pozitia lor


max=a[1];poz=1;
for(i=1;i<=n;i++)
if(a[i]>max){max=a[i];poz=i;}
Maximul elementelor cu o proprietate
max=-999999999;poz=0;
for(i=1;i<=n;i++)
if(....)
if(a[i]>max){max=a[i];poz=i;}
if(poz==0)cout<<"Nu au existat elemente cu proprietattea respectiva";
else cout<<"Maximul="<<max<<"pe pozitia"<<poz;
Maximul si de cate ori apare
max=a[1];c=1;
for(i=1;i<=n;i++)
if(a[i]>max){max=a[i];c=1;}
else
if(a[i]==max)c++;

Probleme
rezolvate

Vectori in C++

Un vector este un sir de mai multe valori care au acelsi tip, componentele
acestuia putand fi identificate prin numele vectorului urmat (intre paranteze drepte)
de pozitia acestora in cadrul vectorului.
Declaratia unui vector se realizeaza prin specificarea tipului componentelor
vectorului, identificatorul vectorului urmat apoi de dimensiunea acestuia intre
paranteze drepte:
int a[5];
- declara un sir de 5 de numere intregi
float f[10]; - declara un sir de 10 numere reale
char c[20]; - declara un sir de 20 caractere alfanumerice
Observatie: Primul element al vectorului are coordonata 0 (a[0]), al doilea are
coordonata 1 (a[1]), s.a.m.d.:
int a[5];

Introducerea/afisarea componentelor unui vector sunt de regula operatii


realizate cu ajutorul structurilor repetitive, in principal folosindu-se structura FOR:
1
2
3
4
5
6
7

#include <iostream>
using namespace std;
int main()
{
int i, n, a[10];
cout<<"Cate numere sunt in sir? n=";
cin>>n;

Cate numere sunt in sir? n=5


Introduceti numerele:
a[0]=6
a[1]=2
a[2]=9
a[3]=3
a[4]=4

8
cout<<"Introduceti numerele:"<<endl;
9
for (i=0;i<n;i++)
10
{
11
cout<<"a["<<i<<"]=";cin>>a[i];
12
}
13 }
Initializarea vectorilor se mai poate face de asemenea fara introducerea de la
tastatura ci direct din faza declaratiei, astfel:
1
2
3
4
5
6
7
8
9
1
0
11
1
2

#include <iostream>
using namespace std;
int main()
{
int i, n;
int a[5]={6,2,9,3,4};
cout<<"Elementele sirului sunt
urmatoarele:"<<endl;
for (i=0;i<5;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<endl;
}
}

Elementele sirului sunt


urmatoarele:
a[0]=6
a[1]=2
a[2]=9
a[3]=3
a[4]=4

Exemplu: Sa se calculeze suma elementelor unui sir de n numere naturale


oarecare, introduse de la tastatura.

1 #include <iostream>

Cate numere sunt in sir?

2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5
1
6

using namespace std;


int main()
{
int i, n, a[10], suma;
cout<<"Cate numere sunt in sir? n=";
cin>>n;
suma=0;
cout<<"Introduceti numerele:"<<endl;
for (i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";cin>>a[i];
suma=suma+a[i];
}
cout<<"Suma celor "<<n<<" numere este:
"<<suma;
}

n=3
Introduceti numerele:
a[0]=2
a[1]=3
a[2]=4
Suma celor 3 numere
este: 9

Probleme rezolvate
1. Sa se introduca un sir de n numere intr-un vector. Sa se afiseze
Soluti
pe ecran cele n numere despartite printr-un spatiu.
e
2. Sa se calculeze suma primelor n numere oarecare.

Soluti

e
3. Se citesc n numere naturale. Care este suma elementelor aflate
Soluti
pe pozitii impare in vector? Dar a celor aflate pe pozitii pare ?
e
4. Se da un sir de n numere naturale. Sa se determine cate dintre
Soluti
acestea sunt divizibile cu un numar - div - introdus de la tastatura. e
5. Sa se introduca n numere de la tastatura intr-un vector si sa se
Soluti
determine cate dintre acestea apartin intervalului [a,b] si care sunt
e
acestea.
6. Sa se determine numarul maxim, respectiv minim dintr-un sir de n
Soluti
numere naturale introduse de la tastatura.
e
7. Sa se ordoneze crescator/descrescator un sir de n numere
Soluti
naturale.
e
8. Se citesc numere pana la 0. Sa se calculeze suma celor negative
Soluti
si produsul celor pozitive. Numarul 0 nu se ia in calcul.
e
9. Sa se afiseze elementele pare care se gasesc intr-un sir de
Soluti
numere naturale precum si pozitia pe care se afla acestea in
e
cadrul sirului.
10 Se da un sir x cu n elemente intregi unde n este cuprins in
Soluti
. intervalul [a,b], iar a si b sunt introduse de la tastatura. Sa se e
calculeze:
a)
suma
elementelor
pozitive;
b)
produsul
elementelor
pare;
c) suma elementelor negative aflate pe pozitii impare
d) media aritmetica a elementelor care dau restul 2 la impartirea
cu
5

e) sa sa numere cate elemente sunt mai mici ca 6


f) sa se verifice daca al p-lea element din sir este divizibil cu 4
11. Se da un numar format din n cifre. Sa se afiseze cifrele
Soluti
componente ale acestuia in ordinea in care apar in numar.
e
Rezolvari
1. Sa se introduca un sir de n numere intr-un vector. Sa se afiseze pe ecran
cele n numere despartite printr-un spatiu.
1
2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5

#include <iostream>
using namespace std;
int main()
{
int i,n,a[50];
cout << "Introducenti valoarea lui n:";
cin>>n;
for (i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for (i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}

1
6
2. Sa se calculeze suma primelor n numere oarecare.
1
2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5
1
6
1
7

#include <iostream>
using namespace std;
int main()
{
int i,n,s,a[50];
cout << "Introducenti valoarea lui n:";
cin>>n;
s=0;
for (i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
s=s+a[i];
}
cout<<"Suma celor "<<n<<" numere este:"<<s;
return 0;
}

3. Se citesc n numere naturale. Care este suma elementelor aflate pe pozitii

impare in vector? Dar a celor aflate pe pozitii pare ?


1
2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9

#include <iostream>
using namespace std;
int main()
{
int i,n,s1=0,s2=0,a[50];
cout << "Introducenti valoarea lui n:";
cin>>n;
for (i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
if (i%2!=0)
s1=s1+a[i];
else
s2=s2+a[i];
}
cout<<"Suma elementelor aflate pe pozitii impare este: s1=
"<<s1<<endl;
cout<<"Suma elementelor aflate pe pozitii pare este: s2=
"<<s2<<endl;
return 0;
}

2
0
4. Se da un sir de n numere naturale. Sa se determine cate dintre acestea sunt
divizibile cu un numar - div - introdus de la tastatura.
1
2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5
1
6
1
7

#include <iostream>
using namespace std;
int main()
{
int i,n,nr=0,a[50],div;
cout << "Introducenti valoarea lui n:";
cin>>n;
cout << "Introducenti valoarea lui div:";
cin>>div;
for (i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
if (a[i]%div==0)
nr++;
}
cout<<"In sirul dat exista "<<nr<<" numere divizibile cu "<<div;
return 0;
}

1
8
1
9
5. Sa se introduca n numere de la tastatura intr-un vector si sa se determine
cate dintre acestea apartin intervalului [a,b] si care sunt acestea.
1
2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5
1
6

#include <iostream>
using namespace std;
int main()
{
int i,n,j=0,a,b,v[50],w[50];
cout << "Cate elemente va avea sirul? n=";
cin>>n;
cout << "Introducenti valoarea lui a:";
cin>>a;
cout << "Introducenti valoarea lui b:";
cin>>b;
for (i=1;i<=n;i++)
{
cout<<"v["<<i<<"]=";
cin>>v[i];
if (v[i]>=a && v[i]<=b)
{
j++;
w[j]=v[i];
}
}
cout << "Sirul contine "<<j<<" numere in intervalul

1
7
1
8
1
9
2
0
["<<a<<","<<b<<"]"<<endl;
2
cout << "Numerele din sir continute in intervalul ["<<a<<","<<b<<"]
1
sunt urmatoarele: ";
2
for (i=1;i<=j;i++)
2
cout<<w[i]<<" ";
2
return 0;
3
}
2
4
2
5
2
6
2
7
6. Sa se determine numarul maxim, respectiv minim dintr-un sir de n numere
naturale introduse de la tastatura.
1
2
3
4

#include <iostream>
#include <climits>
using namespace std;
int main()

5
6
7
8
9
1
{
0
int i,n,min=INT_MAX,max=INT_MIN,temp,v[50];
11
cout << "Cate elemente va avea sirul? n=";
1
cin>>n;
2
for (i=1;i<=n;i++)
1
{
3
cout<<"v["<<i<<"]=";
1
cin>>v[i];
4
if (v[i]>=max)
1
max=v[i];
5
if (v[i]<=min)
1
min=v[i];
6
}
1
cout << "Numarul maxim din sir este: "<<max<<endl;
7
cout << "Numarul minim din sir este: "<<min<<endl;
1
return 0;
8
}
1
9
2
0
2
1
7. Sa se ordoneze crescator/descrescator un sir de n numere naturale.

1
2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9

#include <iostream>
using namespace std;
int main()
{
int n,i,j,temp,a[50];
cout<<"Cate elemente va avea sirul? n=";
cin>>n;
for (i=1;i<=n;i++)
{
cout<<"v["<<i<<"]=";
cin>>a[i];
}
for (i=1;i<n;i++)
for (j=i;j<=n;j++)
if (a[j]<=a[i])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
cout<<"Elementele ordonate crescator sunt: "<<endl;
for (i=1;i<=n;i++)
cout<<a[i]<<" "<<endl;
cout<<"Elementele ordonate descrescator sunt: "<<endl;
for (i=1;i<n;i++)
for (j=i;j<=n;j++)
if (a[j]>=a[i])
{

2
temp=a[i];
0
a[i]=a[j];
2
a[j]=temp;
1
}
2 for (i=1;i<=n;i++)
2
cout<<a[i]<<" "<<endl;
2 return 0;
3 }
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4

3
5
3
6
8. Se citesc numere pana la 0. Sa se calculeze suma celor negative si produsul
celor pozitive. Numarul 0 nu se ia in calcul.
1
2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5
1
6

#include <iostream>
using namespace std;
int main()
{
int n,a[50],b[50],i=0,j=0,k,s=0,p=1;
cout<<"n=";
cin>>n;
while (n!=0)
{
if (n>0)
{
i++;
a[i]=n;
}
else
{
j++;
b[j]=n;
}
cout<<"n=";
cin>>n;
}

1
7
1
8
1
9
2
0
2
1
2
2
2
3
2 }
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1

cout<<"Elementele negative sunt urmatoarele:"<<endl;


for (k=1;k<=j;k++)
{
cout<<b[k]<<" ";
s=s+b[k];
}
cout<<endl<<"Suma elementelor negative este: s="<<s<<endl;
cout<<"Elementele pozitive sunt urmatoarele:"<<endl;
for (k=1;k<=i;k++)
{
cout<<a[k]<<" ";
p=p*a[k];
}
cout<<endl<<"Produsul elementelor pozitive este: p="<<p<<endl;

3
2
3
3
3
4
3
5
3
6
3
7
9. Sa se afiseze elementele pare care se gasesc intr-un sir de numere naturale
precum si pozitia pe care se afla acestea in cadrul sirului.
1
2
3
4
5
6
7
8
9
1
0
11
1
2

#include <iostream>
using namespace std;
int main()
{
int n,a[50],i=0;
cout<<"Cate elemente are sirul? n=";
cin>>n;
for (i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
cout<<"Elementele pare, respectiv pozitia in sir sunt
urmatoarele:"<<endl;

1
3
1
4 for (i=1;i<=n;i++)
1
if (a[i]%2==0)
5
cout<<"Elementele par: "<<a[i]<<" / pozitia: "<<i<<endl;
1 }
6
1
7
10 Se da un sir x cu n elemente intregi. Sa se calculeze:
.
a)
suma
elementelor
pozitive;
b)
produsul
elementelor
pare;
c) suma elementelor negative aflate pe pozitii impare
d) media aritmetica a elementelor care dau restul 2 la impartirea cu 5
e) sa sa numere cate elemente sunt mai mici ca 6
f) sa se verifice daca al p-lea element din sir este divizibil cu 4
1
2
3
4
5
6
7
8
9
1
0

#include <iostream>
#include <stdlib.h>
using namespace std;
int n, p, x[50], a, b, suma;
int main()
{
n=0;
cout<<"Introduceti limita inferioara: a=";
cin>>a;
cout<<"Introduceti limita superioara: b=";
cin>>b;

11
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2

do
{
system("CLS");
cout<<"Introduceti numarul de elemente ale sirului x: n= ";cin>>n;
} while ((n<a)||(n>b));
cout<<"Introduceti elementele sirului x:"<<endl;
for(int i=1;i<=n;i++)
{
cout<<"x["<<i<<"] = ";
cin>>x[i];
}
//Calculul sumei elementelor pozitive din sir
for(int i=1;i<=n;i++)
if (x[i]>0)
suma=suma+x[i];
if (suma==0)
cout <<"Nu exista elemente pozitive"<<endl;
else
cout<<"Suma elementelor pozitive este: "<<suma<<endl;
//Calculul produsul elementelor pare
int produs=1;
for(int i=1;i<=n;i++)
if (x[i]%2==0)
produs=produs*x[i];
if (produs == 1)
cout <<"Nu exista elemente pare"<<endl;
else
cout<<"Produsul elementelor pare este: "<<produs<<endl;

6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4

//calcul suma elementelor negative aflate pe pozitii impare


suma=0;
for(int i=1;i<=n;i++)
if ((x[i]<0)&&((i%2)!=0))
suma=suma+x[i];
if (suma==0)
cout <<"Nu exista elemente negative aflate pe pozitii
impare"<<endl;
else
cout<<"Suma elementelor negative aflate pe pozitii impare este:
"<<suma<<endl;
//Calculul mediei aritmetice a elementelor care dau restul 2 la
impartirea cu 5
float ma=0;
int nr_elemente=0;
int s=0;
for(int i=1;i<=n;i++)
if ((x[i]%5)==2)
{
s=s+x[i];
nr_elemente++;
}
ma=(float)s/nr_elemente;
if (ma==0)
cout<<"Nu exista elemente care dau restul 2 la impartirea cu
5"<<endl;
else
cout<<"Media aritm. a elementelor care dau rest 2 la impartirea

1 cu 5 este: "<<ma<<endl;
4
2 //Cate elemente sunt mai mici ca 6
4
3 nr_elemente=0;
4 for(int i=1;i<=n;i++)
4
if (x[i]<6)
4
nr_elemente++;
5 cout<<"Sirul contine "<<nr_elemente<<" numere mai mici ca
4 6"<<endl;
6
4 //Verificare daca al p-lea element din sir este divizibil cu 4
7 do
4 {
8
cout<<"Introduceti pozitia elemetului testat: p=";
4
cin>>p;
9 }
5 while (p<1 || p>n);
0
if (x[p]%4==0)
5
cout<<"Numarul "<<x[p]<<" este divizibil cu 4"<<endl;
1
else
5
cout<<"Numarul "<<x[p]<<" nu este divizibil cu 4"<<endl;
2 }
5
3
5
4
5
5
5

6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
0
7

1
7
2
7
3
7
4
7
5
7
6
7
7
7
8
7
9
8
0
8
1
8
2
8
3
8
4
8
5
8

6
8
7
8
8
11. Se da un numar format din n cifre. Sa se afiseze cifrele componente ale
acestuia in ordinea in care apar in numar.
1
2
3
4
5
6
7
8
9
1
0
11
1
2
1
3
1
4
1
5
1

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,n1,x,x1,a[50],i=0;
float max;
cout<<"Cate cifre are numarul? n=";
cin>>n;
n1=n;//salvare a dimensiunii numarului
max=(float)pow(10,n)-1;
cout<<"max="<<max<<endl;
do
{
cout<<"Introduceti numarul: x=";
cin>>x;
}
while (x<0 || x>max);
x1=x;//salvare a numarului dat
while (x>0)
{

6
1
7
1
8
1
9
2
0
2
a[n]=n%10;
1
n--;
2
x=x/10;
2 }
2 for (i=1;i<=n1;i++)
3
cout<<"a["<<i<<"]="<<a[i]<<endl;
2 }
4
2
5
2
6
2
7
2
8
Cutarea binar
1. Se citesc elementele unui tablou unidimensional cu n (n<=l00) numere ntregi cu cel mult
patru cifre ordonate Cresctor. S se determine dac valoarea x citit de la tastatur se

gsete n tablou. n caz afirmativ se va afia o poziie pe care acesta se gsete altfel se va
afia un mesaj.
2. Se citesc elementele unui tablou unidimensional cu n (n<=100) numere ntregi cu cel mult
patru cifre ordonate cresctor. S se determine dac valoarea x citit de la tastatur se
gsete n tablou. n caz afirmativ se va afia cel mai mic indice pe care acesta se gsete
n tablou altfel se va afia un mesaj.
3. Se citesc elementele a dou tablouri unidimensionale v i w cu m (m<=100) respectiv n
(n<=l00) componente ntregi cu maxim patru cifre ordonate strict cresctor. S se afieze
elementele comune celor dou tablouri.
Interclasarea a doi vectori
1. Se considera doua tablouri unidimensionale a si b, fiecare avand numere naturale cu cel
mult 4 cifre fiecare, ordonate crescator. Tabloul a contine n numere (1<n<100) pare, iar
tabloul b contine m (1<m<100) numere impare. Scrieti un program care citeste de la
tastatura valoarea lui n si cele n elemente ale tabloului a , apoi valoarea lui m si cele m
elemente ale tabloului b, dupa care afiseaza pe ecran un numar maxim de elemente ale
tablourilor date, numerele scrise fiind in ordine crescatoare, separate prin cate un spatiu, iar
cele aflate pe pozitii consecutive fiind de paritate diferita. Exemplu: pentru n=6, m=5 si
tablourile: a=(2,4,8,10,14,16) i b=(3,5,7,11,15) se va afisa: 2 3 4 5 8 11 14 15 16.
2. Se consider dou tablouri unidimensionale a i b ecare avnd numere naturale cu cel
mult 4 cifre ecare, Fiecare dintre tablouri conine cel mult 100 de valori ordonate strict
cresctor. Se cere s se afieze pe ecran, n ordine cresctoare, numerele divizibile cu 5
care se gsesc doar n unul din cele dou [Link]: a=(1 2 3 4 7 20 60), iar b=(3 5 7
8 9 10 12 20 24) atunci se vor afia pe ecran valorile: 5 10 60.
3. Se consider dou tablouri unidimensionale a i b fiecare avnd cel mult 100 de numere
namrale cu cel mult 4 cifre ordonate strict crescator. Se cere s se afieze pe ecran, n
ordine cresctoare numerele care se gsesc doar n unul din cele dou tablouri. Exemplu:
a=(1 2 3 4 7 20 24 60), iar b=(1 3 4 7 8 9 10 20 24)atunci se vor afia pe ecran valorile: 2 8 9
10 60.
4. Se consider dou tablouri unidimensionale a i b fiecare avnd cel mult 100 de numere
naturale cu cel mult 4 cifre ordonate strict cresctor. Se cere s se afieze pe ecran, n
ordine cresctoare, a numerelor care se gsesc ambele tablouri. Exemplu: a=(1 2 3 4 7 20
24 60), iar b=(1 3 4 7 8 9 10 20 24) atunci se vor afia pe ecran valorile: 1 3 4 7 20 24.
5. Se consider dou tablouri unidimensionale a i b fiecare avnd cel mult 100 de numere
naturale cu cel mult 4 cifre ordonate strict crescator. Se cere s se afieze pe ecran, n
ordine crescatoare, a numerelor prime din cele doua tablouri. Exemplu: a=(1 2 3 4 7 20 24
60), iar b:(1 3 4 7 8 9 10 20 24) atunci se vor afia pe ecran valorile: 2 3 3 7 7 9.
Prelucrarea tuturor perechilor sau tripletelor care ndeplinesc o condiie dat
Se citesc elementele unui tablou unidimensional cu n (n<=100) numere ntregi cu cel mult
patru cifre. S se realizeze urmtoarele prelucrri:

1. S se determine cte perechi din tablou sunt prime intre ele.


2. S se afieze tripletele a cror sum este egal cu s citit. Exemplu. v=(3,5,1,2,4) i s=10.
Se afieaz nu obligatoriu n aceast ordine: 3, 5, 2 5, 1, 4.

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