Sunteți pe pagina 1din 6

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

RAPORT
Lucrarea de laborator Nr.2
La Programarea Orientata pe Obiecte

A efectuat: st. gr. AI-191

Schimbator Petru

A verificat: dr., conf.univ.

Lisnic Inga
21. Să se creeze tipul abstract de date (structura) – firma, care are denumire, forma de organizare,
adresa şi anul fondării. Să se definească funcţiile de setare, de modificare a datelor, de
comparare. Pentru crearea cîmpurilor textuale să se utilizeze operatorul new. Să se elibereze
memoria. În main să se exemplifice căutarea după cîteva criterii a firmei necesare.

Codul programului:
#include <iostream>
#include <new>
#include <cstdlib>
#include <string.h>

using namespace std;


struct firma{
char denumire[20];
char forma[20];
char adresa[20];
int anul;
};

void create(int i,firma a[20])


{
for(int j=0;j<i;j++)
{
cout << "Denumirea firmei :\n";
cin >> a[j].denumire;
cout << "Forma de organizare :\n";
cin >> a[j].forma;
cout << "Adresa :\n";
cin >> a[j].adresa;
cout << "Anul fondarii :\n";
cin >> a[j].anul;
}
}

int afisare(int i,firma a[20])


{
for(int j=0;j<i;j++)
{
cout << "Firma numarul "; cout << j+1; cout << "\n";
cout << "Denumirea firmei este:" ;cout << a[j].denumire; cout << "\n";
cout << "Forma de organizare a firmei este:" ;cout << a[j].forma; cout << "\n";
cout << "Adresa firmei este:" ;cout << a[j].adresa; cout << "\n";
cout << "Anul fondarii firmei este:" ;cout << a[j].anul; cout << "\n";
}
}

int cautare(int i,char s[20],firma a[20],int n)


{
int f = 99;
if(i==1)
{
for(int j=0;j<n;j++)
{
if(strcmp(s,a[j].denumire)==0)
{
f=j;
}
}
}
if(i==2)
{
for(int j=0;j<n;j++)
{
if(strcmp(s,a[j].adresa)==0)
{
f=j;
}
}
}
if(f!=99)
{
return(f);
}
else
cout << "Nu s-a gasit asa firma";
}

void modify(int i,firma a[20])


{
int x =i;
int b;
cout << "Doriti sa schimbati denumirea firmei?\n 1.Da 2.Nu\n";
cin >> b;
if(b==1)
{
cout << "Dati noua denumire a firmei:";
cin >> a[x].denumire;
}
cout << "Doriti sa schimbati forma de organizare a firmei?\n 1.Da 2.Nu\n";
cin >> b;
if(b==1)
{
cout << "Dati noua forma de organizare a firmei:";
cin >> a[x].forma;
}
cout << "Doriti sa schimbati adresa firmei?\n 1.Da 2.Nu\n";
cin >> b;
if(b==1)
{
cout << "Dati noua adresa a firmei:";
cin >> a[x].adresa;
}
cout << "Doriti sa schimbati anul fondarii firmei?\n 1.Da 2.Nu\n";
cin >> b;
if(b==1)
{
cout << "Dati noul al fondarii firmei:";
cin >> a[x].anul;
}
}

void compare(char s1[20],char s2[20],firma a[20], int i)


{
int c1,c2;
for(int j=0;j<i;j++)
{
if(strcmp(s1,a[j].denumire)==0)
{
c1 = j;
}
if(strcmp(s2,a[j].denumire)==0)
{
c2 = j;
}
}
if(a[c1].anul>a[c2].anul)
cout << "Firma " << s1 << " este mai tanara decit firma " << s2 << "\n";
else
cout << "Firma " << s2 << " este mai tanara decit firma " << s1 << "\n";
}

int main()
{
int com;
int i,n,x,k;
char s[20];
char s1[20],s2[20];
int den[20];
firma *a;
com = 0;
while(com<9)
{
cout << "Meniul programului:\n 1)Crearea firmelor\n 2)Afisarea firmelor\n 3)Modificarea
datelor unei firme\n 4)Compararea firmelor dupa anul fondarii\n 5)Cautarea firmei\n 6)Stergerea
memoriei alocate" ;
cout << "Dati numarul comenzii >>> ";
cin >> com;
switch(com)
{
case 1 :cout << "Dati numarul de elemente :";
cin >> n;
a = new firma[20];
create(n,a);
system("pause");
system("cls");
break;
case 2 :afisare(n,a);
system("pause");
system("cls");
break;
case 3 :cout << "Dati denumirea firmei:";
cin >> s;
x = cautare(1,s,a,n);
modify(x,a);
system("pause");
system("cls");
break;
case 4 :cout << "Lista firmelor :\n";
for(int j=0;j<n;j++)
{
cout << "| " ;
cout << a[j].denumire;
cout << " |\n";
}
cout << "Dati firmele care vor fi supuse compararii...\n";
cout << "Prima firma : "; cin >> s1;
cout << "A doua firma : "; cin >> s2;
compare(s1,s2,a,n);
system("pause");
system("cls");
break;
case 5 :cout << "\n1.Dupa denumire\n2.Dupa adresa\n";
cout << "Dati numarul comenzii >>> ";
cin >> x;
if(x==1)
cout<<"Dati denumirea firmei :";
if(x==2)
cout<<"Dati adresa firmei :";
cin >> s;
k = cautare(x,s,a,n);
cout << "Denumirea firmei :" << a[k].denumire << "\n";
cout << "Forma de organizare a firmei :" <<a[k].forma << "\n";
cout << "Adresa firmei :" <<a[k].adresa << "\n";
cout << "Anul fondarii firmei :" <<a[k].anul << "\n";
case 6 :delete[] a;
cout << "\nMemoria a fost eliberata cu succes";
system("pause");
system("cls");
break;
}
}

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