You are on page 1of 4

Laborator 7

Aplicații cu șiruri

/* Aplicația 1.
Se va construi un tip de date pentru definirea si memorarea unui vector, cu elemente
intregi, si o dimensiune maxima de 20.
Pe vectorul declarat se vor realiza urmatoarele:
- citirea componentelor acestuia
- afisarea vectorului
- suma elementelor sale
- produsul
- media aritmetica
- valorile extreme
- numarul de numere pare/impare
- numarul de numere prime si lista lor
- cel mai mare divizor comun al sirului sic el mai mic multiplu comun
- sortarea sirului
- cautarea unui element in sir
*/

#include<iostream>
using namespace std;
#define dim 20
typedef int vector[dim]; //am construit un tip de date cu numele 'vector'

int citire(vector); //citire - varianta 1


void citire(vector, int*); //citire - varianta 2
void citire(vector, int&); //citire - varianta 3
void afisare(vector, int); //afisare
int suma(vector, int); //suma elementelor - var. 1
void suma(vector, int, int*); //suma elementelor - var. 2
void suma(vector, int, int&); //suma elementelor - var. 3
long long produs(vector, int); //produsul componentelor
float media(vector, int); //media aritmetica
void par_imp(vector, int, int*, int*); //numar pare, impare
void neg_poz(vector, int, int&, int&); //numar strict pozitive, strict negative
int* min_max(vector, int); //valorile extreme din sir
/*cmmdc-ul si cmmmc-ul elementelor din sir*/
int cmmdc(vector, int);
long long cmmmc(vector, int);
/*numarul de numere prime si numerele prime din sir*/
int numere_prime(vector, int, vector); //efectiv numerele prime din sir
/*sortare si cautare*/
void sortare1(vector, int, vector); //sortarea sirului prin metoda bulelor
void sortare2(vector, int, vector); //sortarea sirului prin metoda interschimbarilor
int cautare(vector, int, int); //cautarea unui element in sir

//functia principala in rulare


int main()
{

system("pause");
return 0;
}

/**************************************/

//Aplicația 2 . Operatii pe polinoame: citire, afisare, suma și produsul a două


polinoame.

#include<iostream>
using namespace std;
typedef int* polinom;

//gradul polinomului
polinom grad(int& n, const char* s)
{
polinom p;
cout << "Citim polinomul " << s << ":\n";
cout << "\tdati gradul: ";
cin>>n;
p = new int[n];
return p;
}

//citirea coeficientilor
void citire(polinom p, int n, const char* s)
{
cout << "\tdati coeficientii:\n";
for (int i = n; i >= 0; --i)
{
cout << "\t\t" << s << '[' << i << "]= ";
cin >> p[i];
}
}

//afisarea polinomului
void afisare(polinom p, int n, const char* s)
{
cout << s << "[x]: ";
cout << p[n] << "*x^" << n;
for (int i = n - 1; i > 0; i--)
if (p[i] > 0)
cout << '+' << p[i] << "*x^" << i;
else
if (p[i] < 0)
cout << p[i] << "*x^" << i;
if (p[0] > 0)
cout << '+' << p[0];
else
if (p[0] < 0)
cout << p[0];
cout << '\n';
}

//adunarea a doua polinoame


polinom adunare(polinom a, int n, polinom b, int m, int& k);

//inmultirea a doua polinoame


polinom inmultire(polinom a, int n, polinom b, int m, int& k);
//functia principala
int main()
{

system("pause");
return (0);
}

//Aplicația 3. Operatii pe multimi (citire, afisare, intersectie si reuniune).

#include<iostream>
using namespace std;
#define dim 30
typedef int multime[dim];

bool cauta(multime a, int n, int e)


{
bool x = false;
for (int i = 0; i < n; i++)
if (a[i] == e)
{
x = true;
return x;
}
return x;
}

void sort(multime a, int n)


{
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (a[i] > a[j])
swap(a[i], a[j]);
}

void citire(multime a, int* n, char c)


{
cout << "Introduceti multimea " << c << '\n';
do {
cout << "\tdati dimensiunea: ";
cin >> *n;
} while (*n<1 || *n>dim);
cout << "\tdati elementele:\n";
cout << "\t\telementul 1= ";
cin >> a[0];
for (int i = 1; i < *n; i++)
do {
cout << "\t\telementul " << i + 1 << "= ";
cin >> a[i];
} while (cauta(a, i, a[i]) == true);
}

void afisare(multime a, int n, const char* c)


{
sort(a, n);
cout << "Multimea " << c << ": ";
for (int i = 0; i < n; i++)
cout << a[i] << ' ';
cout << '\n';
}

int diferenta(multime a, int n, multime b, int m, multime c);

int intersectie(multime a, int n, multime b, int m, multime c);

int reuniune(multime a, int n, multime b, int m, int c[]);

int main()
{
//declarare, citire si afisare multimi
multime a, b; int n, m;
citire(a, &n, 'A');
citire(b, &m, 'B');
system("pause");
system("cls");
afisare(a, n, "A");
afisare(b, m, "B");

//A - B
multime c; int p;
p = diferenta(a, n, b, m, c);
afisare(c, p, "A - B");

//B - A
multime d; int q;
q = diferenta(b, m, a, n, d);
afisare(d, q, "B - A");

//A intersectat B
multime e; int r;
r = intersectie(a, n, b, m, e);
afisare(e, r, "A intersectat B");

//A reunit B
int f[2 * dim], t;
t = reuniune(a, n, b, m, f);
afisare(f, t, "A reunit B");

system("pause");
return(0);
}

You might also like