Sunteți pe pagina 1din 4

Laborator – programarea calculatoarelor

Limbajul C++
Adrian Runceanu

Laborator nr. 4 - Tablouri unidimensionale(vectori)

Problema 1:

Fie tabloul unidimensional x cu n elemente numere reale si numerele intregi a si


b. Sa se calculeze media aritmetica a elementelor din tablou cuprinse intre valorile a si
b.

#include<iostream.h>
void main(void)
{
int a,b,i,n,suma=0;
float x[50],media;
cout<<"Dati numarul de elemente ale tabloului ";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"x[“<<i<<”]= ";
cin>>x[i];
}
cout<<"Dati numarul a = ";cin>>a;
cout<<"Dati numarul b = ";cin>>b;
for(i=1;i<=n;i++)
if( (a<=x[i]) && (x[i]<=b) ) suma+=x[i];
media=suma/n;
cout<<"Media aritmetica a elementelor din tablou, aflate intre “<<a<<” si “<<b<<”
este “<<media;
}

Problema 2:

Se da un tablou unidimensional cu n componente numere intregi si un numar


intreg A. Sa se numere cate elemente sunt mai mari decat A si sa se construiasca un
vector cu aceste elemente.
#include<iostream.h>
void main(void)
{
int i,n,j,a;
float x[50],y[50];
cout<<"Dati numarul de elemente ale tabloului ";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"x[“<<i<<”]= ";
cin>>x[i];
}
cout<<"Dati numarul a = ";cin>>a;
j=0;
for(i=1;i<=n;i++)
if (a<=x[i]) { j++;y[j]=x[i]; }
cout<<"Sunt “<<j<<” numere mai mari decat "<<a<<endl;
cout<<"Elementele sunt: "<<endl;
for(i=1;i<=j;i++) cout<<y[i]<<” ”;
}

1
Laborator – programarea calculatoarelor
Limbajul C++
Adrian Runceanu

Problema 3:

Se da un tablou unidimensional X cu n numere reale si se cere sa se modifice


astfel incat sa se intercaleze intre oricare doua elemente consecutive, media lor
aritmetica.

#include<iostream.h>
void main(void)
{
int i,n,j;
float x[50],y[50];
cout<<"Dati numarul de elemente ale tabloului ";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"x[“<<i<<”]= ";
cin>>x[i];
}
i=1;j=1;
while(i<=n)
{
y[j]=x[i];
y[j+1]=(x[i]+x[i+1])/2;
i=i+1;
j=j+2;
}
cout<<"Elementele sunt: "<<endl;
for(i=1;i<=j-2;i++) cout<<y[i]<<” ”;
}

Problema 4:

Se considera un tablou unidimensional x cu n numere intregi. Se cere sa se


calculeze cle mai mare divizor comun al lor.

#include<iostream.h>
void main(void)
{
int i,n,cmmdc,r,d;
int x[50];
cout<<"Dati numarul de elemente ale tabloului ";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"x[“<<i<<”]= ";
cin>>x[i];
}
r=x[1]/x[2];
while(r!=0)
{
x[1]=x[2];
x[2]=r;
r=x[1]/x[2];

2
Laborator – programarea calculatoarelor
Limbajul C++
Adrian Runceanu
}
d=x[1];
for(i=3;i<=n;i++)
{
r=d/x[i];
while(r!=0)
{
d=x[i];
x[i]=r;
r=d/x[i];
}
d=x[i];
}
cmmdc=d;
cout<<"C.m.m.d.c este "<<cmmdc<<endl;
}

Problema 5:

Se considera un tablou unidimensional cu n numere reale si se cere sa se


afiseze cel mai mare si cel mai mic element din tablou.

#include<iostream.h>
void main(void)
{
int i,n;
float x[50],min,max;
cout<<"Dati numarul de elemente ale tabloului ";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"x[“<<i<<”]= ";
cin>>x[i];
}

min=x[1];max=x[1];
for(i=1;i<=n;i++)
if(min>x[i]) min=x[i];
else if(max<x[i]) max=x[i];
cout<<endl<<"Minimul este "<<min;
cout<<endl<<"Maximul este "<<max;
}

Problema 6:

Se citesc doua tablouri unidimensionale cu componente numere naturale.


Fiecare tablou are elementele sortate crescator. Se cere sa se construiasca un al treilea
tablou care contine elementele celor doua in ordine crescatoare. (Problema
interclasarii)

#include<iostream.h>
void main(void)
{

3
Laborator – programarea calculatoarelor
Limbajul C++
Adrian Runceanu
int i,n,j,m,k;
float x[50],y[50],z[100];
cout<<"Dati numarul de elemente ale tabloului X ";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"x[“<<i<<”]= ";
cin>>x[i];
}

cout<<"Dati numarul de elemente ale tabloului Y ";cin>>m;


for(j=1;j<=m;j++)
{
cout<<"y[“<<j<<”]= ";
cin>>y[j];
}

i=1;j=1;k=0;
while( (i<=n) && (j<=m) )
if(x[i]<y[j]){k++;z[k]=x[i];i++;}
else {k++;z[k]=y[j];j++;}
if(i<=n) for(j=i;j<=n;j++) {k++;z[k]=x[j];}
else for(i=j;i<=m;i++) {k++;z[k]=y[i];}
cout<<endl<<"Vectorul Z cu elementele interclasate este ";
for(i=1;i<=k;i++) cout<<z[i]<<” ”;
}

Probleme propuse spre rezolvare

1. Se citeste un tablou unidimensional cu n (1≤n≤100) componente numere naturale Se


cere sa se construiasca si sa se afiseze un nou vector cu componentele patrate
perfecte ale vectorului initial.
2. Se da un tablou unidimensional cu n (1≤n≤100) componente numere naturale. Sa se
calculeze suma componentelor divizibile cu a, pentru un numar a citit de la tastatura.
3. Se da un tablou unidimensional cu n (1≤n≤100) componente numere naturale. Sa se
verifice daca componentele sunt in ordine crescatoare de la stanga la dreapta.
4. Sa se rearanjeze elementele unui tablou unidimensional de numere intregi, astfel
incat numerele pare sa apara inaintea numerelor impare. In cadrul subsecventei de
numere pare, respectiv impare, elementele trebuie sa apara in ordinea in care erau in
vectorul initial.
5. Fiind date doua tablouri unidimensionale a si b cu n si respectiv m elemente numere
intregi, sa se scrie un program C++ care sa verifice daca au aceleasi elemente distincte
(toate elementele unui tablou se gasesc printre elementele celuilalt tablou si invers).
Exemplu: Pentru n = 5 si a = {2, 3, 2, 4, 1}
m = 6, si b = {2, 4, 2, 4, 1, 3}
au aceleasi elemente distincte : (1, 2, 3, 4).

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