Sunteți pe pagina 1din 5

Programare structurată (Limbajul C++)

Profesor: Andrian Dascal

LABORATORUL 12
Tablouri unidimensionale

INDICII DE REZOLVARE

1.Se citește un vector cu n elemente, numere naturale. Să se afișeze suma elementelor din vector.

int suma = 0;
for(int i = 0; i < n; i++)
suma = suma + V[i];
cout << suma;

2. Se citește un vector cu n elemente, numere naturale. Să se afișeze elementul maxim, si de cate


ori apare acesta in vector.

int maxim = -9999999;


int aparitii = 0;
for(int i = 0; i < n; i++)
{
if(V[i] > maxim)
maxim = V[i];
}
for(int i = 0; i < n; i++)
{
if(V[i] == maxim)
aparitii++;
}
cout << "Elementul maxim este " << maxim << " si apare de " << aparitii << " ori.";

3. Se citesc doi vectori cu n si m elemente. Sa se afiseze intersectia celor doua multimi.

#include <iostream>

using namespace std;

int main()
{
int V1[10] = {4, 2, 1, 9, 6, 8};
int n = 6;

int V2[10] = {13, 4, 9, 5, 7};


int m = 5;

cout << "Intersectia celor doua multimi este: ";


for(int i = 0; i < n; i++) // Parcurgem fiecare element din vectrul V1
{
for(int j = 0; j < m; j++) // Pentru fiecare element din vector V1, parcurgem
vectorul V2
{
if(V1[i] == V2[j])
cout << V1[i] << " ";
}
}
return 0;
}

1
Programare structurată (Limbajul C++)
Profesor: Andrian Dascal

PROBLEME REZOLVATE

1. Problemă

#include <iostream>
using namespace std;
/*
Se citesc elementele unui tablou unidimensional cu n (n<=100) componente, numere
întregi din cel mult 4 cifre fiecare. Să se calculeze media aritmetica a componentelor
tabloului.
*/
int main()
{
int v[100];
int n,i,s;
float ma;
cout<<" Citirea vectorului v "<<endl;
cout<<"Dati dimensiunea vectorului (<=100) ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Dati valoarea elementului "<<i+1<<" ";
cin>>v[i];
}
s=0;
ma=0;
for(i=0;i<n;i++)
s=s+v[i];
ma=(float)s/n;
cout<<"Media aritmetica a componentelor vectorului = "<<ma;
return 0;
}

2. Problemă

#include <iostream>
using namespace std;
/*
Se citesc elementele unui tablou unidimensional cu n (n<=100) componente, numere
întregi din cel mult 4 cifre fiecare. Să se determine Valoarea minimă şi valoarea
maximă.*/
int main()
{
int v[100];
int n,i;
int min,max;
cout<<" Citirea vectorului v "<<endl;
cout<<"Dati dimensiunea vectorului (<=100) ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Dati valoarea elementului "<<i+1<<" ";
cin>>v[i];
}
min=max=v[0];
for(i=1;i<n;i++)
{
if(min>v[i])min=v[i];
if(max<v[i])max=v[i];
}
cout<<"Maximul este = "<<max<<" si minimul este "<<min;
return 0;
}

2
Programare structurată (Limbajul C++)
Profesor: Andrian Dascal

3. Problemă

#include <iostream>
using namespace std;
/*
Se citesc elementele unui tablou unidimensional cu n (n<=100) componente, numere
întregi din cel mult 4 cifre fiecare. Să se afişeze valoarea componentei cu număr
maxim de divizori. In cazul în care sunt mai multe astfel de componente se v-a
afişa cea cu valoarea cea mai mică. Exemplu. pentru a=(10, 49, 35, 25, 6, 3) se
afişează 6.
*/
int main()
{
int v[100];
int n,i;
cout<<" Citirea vectorului v "<<endl;
cout<<"Dati dimensiunea vectorului (<=100) ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Dati valoarea elementului "<<i+1<<" ";
cin>>v[i];
}
int min_div,elem;
elem=v[0];
min_div=0;
for(int j=1;j<=elem;j++)
if(elem%j==0)min_div++;
for(i=1;i<n;i++)
{
int nr_div=0;
for(int k=1;k<=v[i];k++)
if(v[i]%k==0)nr_div++;
if((nr_div>=min_div)&&(elem>=v[i]))
{
min_div=nr_div;
elem=v[i];
}
}
cout<<" Valoarea cu cei mai multi divizori este "<<elem;
return 0;
}

4. Problemă

#include <iostream>
using namespace std;
/*
Se citesc elementele unui tablou unidimensional cu n (n<=100) componente, numere
întregi din cel mult 4 cifre fiecare. Să se determine valoarea maximă şi de câte
ori apare aceasta în tablou.
*/
int main()
{
int v[100];
int n,i,max,nr;
cout<<" Citirea vectorului v "<<endl;
cout<<"Dati dimensiunea vectorului (<=100) ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Dati valoarea elementului "<<i+1<<" ";
cin>>v[i];
}
max=v[0];
nr=1;
for(i=1;i<n;i++)

3
Programare structurată (Limbajul C++)
Profesor: Andrian Dascal

{
if(max<v[i])
{
max=v[i];
nr=1;
}
else
if(max==v[i])nr++;
else ;
}
cout<<"Elementul maxim este "<<max<<" si apare de "<<nr<<" ori ";
return 0;
}

5. Problemă

#include <iostream>
using namespace std;
/*
Se citesc elementele unui tablou unidimensional cu n (n<=1OO) componente, numere
întregi din cel mult 4 cifre fiecare. Să se verifice dacă tabloul este ordonat
(crescător sau descrescător).
*/
int main()
{
int v[100];
int i,n,crescator;
cout<<"Dati dimensiunea vectorului ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"Dati valoarea "<<i+1<<" ";cin>>v[i];
}
//presupunem ca vectorul este ordonat crescator !
crescator=1;
i=0;
while((i<n-1)&&(crescator!=0))
{
if(v[i]>v[i+1])crescator=0;
i++;
}
if(crescator==0)cout<<"Vectorul nu este ordonat crescator";
else cout<<"Vectorul este ordonat crescator !";
return 0;
}

Exerciții propuse

1. Se citeste un vector A cu n (n<=1000) elemente numere naturale. Ordonati descrescator


elementele care au suma cifrelor numar par si in ordine crescatoare pe cele care au suma
cifrelor numar impar. Pozitiile pe care sunt elemente cu suma cifrelor para (respectiv impara)
trebuie sa ramâna aceleasi. Afisati vectorul ordonat ca ân cerinta.
Exemplu: n=6, A={33, 56, 77, 734, 45, 34} => 734 34 77 33 45 56

2. Se citeste un vector A cu n (n<=1000) elemente numere naturale. Verificati daca elementele


vectorului alterneaza ca paritate, adica oricare doua elemente alaturate au paritati diferite.
Raspunsul va fi DA in caz afirmativ, altfel va fi NU.
Exemple: n=6, A={34, 56, 77, 733, 44, 3} => NU
n=6, A={33, 56, 77, 734, 45, 34} => DA

4
Programare structurată (Limbajul C++)
Profesor: Andrian Dascal

3. Se citeste un vector A cu n (3<=n<=1000) elemente numere naturale. Verificati daca exista


cel putin 3 elemente alaturate care sa aiba aceeaai paritate . Raspunsul va fi DA in caz
afirmativ, altfel va fi NU.
Exemple: n=6, A={34, 56, 77, 733, 45, 3} => DA
n=6, A={33, 56, 77, 734, 45, 33} => NU

4. Se citeste un vector A cu n (n<=1000) elemente numere naturale. Afisati numarul de perechi


de elemente din vector care au suma divizibila cu n.
Exemplu: n=4, A={2, 6, 8, 10} => 3, adica perechile (2, 6) , (2, 10) si (6,10)

5. Se citeste un vector A cu n (n<=1000) elemente numere naturale. Afisati numarul de perechi


egal departate de capetele vectorului care au proprietatea ca incep cu aceeasi cifra.
Exemplu: n=6, A={34, 56, 77, 733, 45, 3} => 2, adica perechile (34, 3) si (77, 773)

6. Se citeste un vector cu n elemente numere intregi, n fiind cel mult egal cu 1000. Parcurgeti si
afisati elementele vectorului astfel: intai elementele de pe pozitii pare in ordiena din vector,
iar pe linia urmatoare elementele de pozitii impare in ordine inversa din vector. Indexarea
elementelor din vector incepe cu 1.
Exemplu: Pentru n=7 si vectorul cu elementele {5, 3, 5, 2, 7, 6, 4} se vor afisa elementele
astfel:
326
4755

7. Se citeste un vector cu n elemente numere intregi, n fiind cel mult egal cu 1000. Parcurgeti si
afisati elementele vectorului astfel: primul, ultimul, al doilea, penultimul, ...
Exemplu: Pentru n=7 si vectorul cu elementele {5, 4, 5, 2, 7, 6, 5} se vor afisa numerele: 5 5
46572

8. Se citeste un vector cu n elemente numere intregi, n fiind cel mult egal cu 1000. Calculati si
afisati cate dintre elementele vectorului sunt egale cu diferenta dintre cel mai mare si cel mai
mic element din vector.
Exemplu: Pentru n=7 si vectorul cu elementele {5, 4, 5, 2, 7, 6, 5} se va afisa 3 (5 apare de 3
ori si e egal cu diferenta dintre 7 si 2).

9. Se citesc n numere naturale. Se presupune ca cele n numere naturale sunt asezate pe un cerc.
Afisati cei doi indici ai perechii de elemente alaturate care au diferenta in modul minima.
Exemple:
n=5
Elementele: 4 7 6 9 1
Se vor afisa 2 3 (7 si 6 formeaza perechea cu diferenta minima)
n=5
Elementele: 4 6 3 5 3
Se vor afisa 1 5 (4 si 3 formeaza perechea cu diferenta minima)

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