Sunteți pe pagina 1din 16

b) S se creeze tipul abstract de date (structura) vector, care se compune dintr-un pointer spre int i din numrul de elemente.

. S se defineasc funciile de iniializare, de eliminare a unui vector; de setare/ modificare a dimensiunii vectorului; de acces la elementele vectorului; de calcul a modulului unui vector. n funcia main s se realizeze adunarea a doi vectori.

Codul sursa:

#include <iostream> #include <stdlib.h> #include <math.h>

using namespace std;

struct complex {

double re; double im;

void getData();

};

void complex::getData() {

cout<<"La partie reele - "; cin>>re; cout<<"La partie imaginaire - "; cin>>im;

//Functia pentru suma numerelor complexe

void suma(complex nr1, complex nr2) {

complex sum;

sum.re = nr1.re + nr2.re; sum.im = nr1.im + nr2.im;

if (sum.im >= 0 ) cout<<endl<<"Le resultat de la somme est : "<<sum.re<<"+"<<sum.im<<"i"<<endl<<endl; else cout<<endl<<"Le resultat de la somme est : "<<sum.re<<" "<<sum.im<<"i"<<endl<<endl; }

//Functia pentru diferenta numerelor complexe

void diferenta (complex nr1, complex nr2) { complex dif;

dif.re = nr1.re - nr2.re; dif.im = nr1.im - nr2.im;

if ( dif.im >= 0 )

cout<<endl<<"Le resultat de la difference est : "<<dif.re<<"+"<<dif.im<<"i"<<endl<<endl; else cout<<endl<<"Le resultat de la diference est : "<<dif.re<<""<<dif.im<<"i"<<endl<<endl; }

// Functia pentru produsul numerelor complexe

void produs(complex nr1,complex nr2){

complex prod;

prod.re = nr1.re * nr2.re - nr1.im * nr2.im; prod.im = nr1.re * nr2.im + nr1.im * nr2.re;

if ( prod.im >= 0 ) cout<<endl<<"Le resultat de la multiplicatione est : "<<prod.re<<"+"<<prod.im<<"i"<<endl<<endl; else cout<<endl<<"Le resultat de la multiplication est : "<<prod.re<<" "<<prod.im<<"i"<<endl<<endl; }

//Functia pentru impartirea numerelor complexe

void impartire(complex nr1, complex nr2) {

complex imp;

imp.re= ((nr1.re*nr2.re)+(nr1.im*nr2.im))/((nr2.re*nr2.re)+(nr2.im*nr2.im));

imp.im= ((nr1.im*nr2.re)-(nr1.re*nr2.im))/((nr2.re*nr2.re)+(nr2.im*nr2.im));

if ( imp.im >= 0 ) cout<<endl<<"Le resultat de la division est : "<<imp.re<<"+"<<imp.im<<"i"<<endl<<endl; else cout<<endl<<"Le resultat de la division est : "<<imp.re<<" "<<imp.im<<"i"<<endl<<endl; }

//Functia pentru compararea si calcularea modulului numerelor complexe

void modCompar (complex nr1,complex nr2) {

double mod1,mod2;

mod1 = sqrt(pow(nr1.re,2) + pow(nr1.im,2)); mod2 = sqrt(pow(nr2.re,2) + pow(nr2.im,2));

cout<<"Le module de 1 nombre est: "<<mod1<<endl<<endl; cout<<"Le module de 2 nombre est: "<<mod2<<endl<<endl;

if (mod1>mod2) cout<<"Le premier nombre est plus grand que le 2. "<<endl<<endl; else if(mod1==mod2) cout<<"Les nombres sont egales."<<endl<<endl; else if(mod1<mod2) cout<<"Le deuxiem nombre est plus grand que la 1."<<endl<<endl; }

int main () {

complex nr1,nr2;

cout<<"Le premier nombre : "<<endl; nr1.getData(); cout<<endl<<"Le deuxiem nombre : "<<endl; nr2.getData();

suma(nr1,nr2); diferenta(nr1,nr2); produs(nr1,nr2); impartire(nr1,nr2); modCompar(nr1,nr2);

return 0; }

La rularea programului se va afisa:

) S se creeze; utiliznd structura, tipul abstract de date pentru reprezentarea numerelor complexe. S se defineasc funciile de setare/citire a prii reale i imaginare a unui numr complex; de adunare, scdere, nmulire, mprire i de comparaie( mai mic, mai mare, etc.) a dou numere complexe. S se defineasc funcia ce calculeaz i returneaz modulul unui numr complex. S se defineasc toate funciile ca fiind globale.

Codul sursa:

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <math.h> using namespace std;

char option; int n, n2, i; float value; struct vector { int *point; int n; }; void creare(vector *vector, int n){ int j = 0; vector->point = new int[n]; if( n < 1 ) vector->n = 1; else if( n > 20) vector->n = 20; else vector->n = n;

for( int i = 0; i < vector->n; i++) { cout<<"Entrez les elements: "<<++j<<" : "; cin>>vector->point[i]; } }

void afisare(vector *vector){

cout<<endl<<endl;

if(vector->point == NULL)cout<<"Erreure. N'est pas entre le vecteur."<<endl; else { for(int i = 0; i < vector->n; i++){

cout<<vector->point[i]<<" "; } cout<<endl<<endl; }

void sterge(vector *vector) { delete[] vector->point; vector->point=NULL; vector->n=0; }

float getData(vector *vector,int id) { return vector->point[id]; }

void setData(vector *vector,int id,int value) { vector->point[id]=value; } void modMarime(vector *vector, int newSize){ int *newArray; newArray = new int[newSize]; for (int i = 0; i < newSize; i++) newArray[i] = vector->point[i];

if(newSize > vector->n) { cout<<"Entrez les nouvelles elements : "<<endl; for (int i = vector->n; i < newSize; i++){ cin>>newArray[i]; } }

for(int i = 0; i < newSize; i++) vector->point[i] = newArray[i]; vector->n = newSize; delete[]newArray; } double calcModul(vector *vector) { double modul, x = 0; for(int i = 0; i <vector->n; i++ ) x+=pow(vector->point[i],2); modul = sqrt(x); return modul; }

void menu () { system("cls"); cout<<endl<<endl; cout<<" cout<<" cout<<" cout<<" 1 - La creation du vecteur"<<endl; 2 - L'affichage du vecteur"<<endl; 3 - La modification d'un elemente du vecteur"<<endl; 4 - La somme de deux vecteurs"<<endl;

cout<<" cout<<" cout<<" cout<<"

5 - La modification de dimension du vecteur"<<endl; 6 - Le module de vecteur"<<endl; 7 - L'eliberation de la memoire"<<endl; 8 - Sortie"<<endl;

cout<<endl<<"Choix : "; option=getchar(); }

int main () { vector vector, vector2; vector.point = NULL; vector2.point = NULL; int newSize; do { system("cls"); menu(); switch(toupper(option)) { case '1': system("cls"); cout<<"\nEntrez la dimension de premier vecteur\n n = "; cin>>n; creare(&vector,n); system("pause"); break;

case '2': system("cls"); afisare(&vector); system("pause"); break;

case '3': system("cls"); if(vector.point != NULL) { afisare(&vector);

do { cout<<endl<<"Entrez de id que vous voudrez modifiez : "; cin>>i; } while(i>vector.n); cout<<"\n L'element avec de indice "<<i<<" est "<<getData(&vector,i-1); cout<<"\n Entrez la nouvelle valeur : "; cin>>value; setData(&vector,i-1,value); cout<<"Le vecteur modifie est : "<<endl; afisare(&vector); system("pause"); } else { cout<<"Erreure!"<<endl;

system("pause"); } break; case '4': system("cls"); if(vector.point == NULL) {

cout<<"Entrez le premier vecteur."<<endl; creare(&vector,n); } cout<<"Entrez la dimension de deuxiem vecteur. :"; cin>>n2; creare(&vector2,n2); cout<<"Vecteur 1 est : "; afisare(&vector); cout<<endl<<"Vecteur 2 est : "; afisare(&vector2); cout<<"La somme de vecteurs est : "; for (i = 0; i < n2 && i<n; i++) cout<<vector.point[i]+vector2.point[i]<<" "; cout<<endl; system("pause"); break;

case'5': system("cls");

if(vector.point != NULL) { cout<<"ATANTION! Si vous entrez une dimension plus petite que "<<vector.n <<" les dates sont perdues."<<endl; cout<<"Entrez une nouvelle dimension :"; cin>>newSize; modMarime(&vector,newSize); afisare(&vector);} else { cout<<"Erreure."<<endl; } system("pause"); break;

case'6': system("cls"); if(vector.point != NULL) { cout<<endl<<endl<<"Le module de premier vecteur est : "<<calcModul(&vector)<<endl<<endl; } else {

cout<<"Erreure."<<endl; }

system("pause"); break;

case '7':

system("cls"); if(vector.point != NULL) { sterge(&vector); sterge(&vector2); system("cls"); cout<<"La memoire a ete eliberee."<<endl<<endl; } else { cout<<"Ne sont pas des dates enregistrees."<<endl; } system("pause"); break;

case '8': system("cls"); cout<<endl<<" Au tevoir!!!"<<endl<<endl; break;

default: cout<<endl<<"********** Mauvaise option ************\n"; } } while(toupper(option)!='8');

return 0; }

Programul va afisa:

Meniul principal

Crearea vectorului:

Afisarea vectorului:

Modificarea unui element al vectorului:

Modificarea marimii vectorului:

Suma a doi vectori:

Modulul vectorului:

Eliberarea memoriei:

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