Вы находитесь на странице: 1из 14

Universit Technique de Moldova

Filire francophone Informatique

Travail pratique Nr.1

Effectu par ltudiante de gr FI-121


Vrifi par la professeur

Damian Stefan
Rusu M.

Chisinau 2013

Crer type de donnes abstrait (structure) - collaborateur, qui a le nom,


spcialit, la catgorie et le salaire. Pour dfinir les fonctions de cration, la
modification des donnes et comparant les collaborateurs. Pour crer des
champs de texte utiliser le nouvel oprateur. Pour librer de la mmoire. Dans
le Main d illustrer certains critres de recherche.
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
using namespace std;
struct Colaborator
{
char *nume;
char *spec;
char *cat;
int salariu;
};
void modificareColaboratorNume(Colaborator* colab , char* nume , int n=1);
void modificareColaboratorSpec(Colaborator* colab , char* spc , int n=1);
void modificareColaboratorCateg(Colaborator* colab , char* ctg , int n=1);
void modificareColaboratorSalariu(Colaborator* colab , int slr);
void eliberareMem(Colaborator* colab);
void modificareColaboratorNume(Colaborator* colab , char* nume ,int n)
{
if(n>1) delete[] colab->nume;
colab->nume = new char[strlen(nume)+1];
strcpy(colab->nume,nume);
}
void modificareColaboratorSpec(Colaborator* colab , char* spc ,int n)
{
if(n>1) delete[] colab->spec;
colab->spec = new char[strlen(spc)+1];
strcpy(colab->spec,spc);
}
void modificareColaboratorCateg(Colaborator* colab , char* ctg ,int n)
{
if(n>1) delete[] colab->cat;
colab->cat = new char[strlen(ctg)+1];
strcpy(colab->cat,ctg);
}
void modificareColaboratorSalariu(Colaborator* colab , int slr)
{
colab->salariu=slr;
}
void eliberareMem(Colaborator* colab)
{

delete[] colab->nume;
colab->nume = NULL;
delete[] colab->spec;
colab->spec = NULL;
delete[] colab->cat;
colab->cat = NULL;
}

Colaborator colab[6];int cr(0);


void creare(int n)
{system("cls");
char *p;
int num;
p = new char[20];
strcpy(p,"nume");
for (int i(0) ; i<n ; i++)
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colaboratorul N."<<i+1<<" Introduceti :\n" ;
cout <<"\t+Numele colaboratorului : ";
delete[] p;p = new char[20];
cin >>p;
modificareColaboratorNume(&colab[i] , p , 0);
cout <<"\t+Specialitatea colaboratorului : ";
delete[] p;p = new char[20];
cin >>p;
modificareColaboratorSpec(&colab[i] , p , 0);
cout <<"\t+Categoria colaboratorului : ";
delete[] p;p = new char[20];
cin >>p;
modificareColaboratorCateg(&colab[i] , p , 0);
cout <<"\t+Salariul : ";
cin >>num;
modificareColaboratorSalariu(&colab[i] , num);
cout <<"\t =================================\n";
}
cout<<"\n\tDatele au fost introduse cu succes !!!";delete[] p;getch();
cr++;
}
void afisare(int n)
{system("cls");
if (cr>0){
for (int i(0) ; i<n ; i++)
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colaboratorul N."<<i+1<<" avem datele:\n" ;
cout <<"\t+Numele colaboratorului : "<<colab[i].nume<<"\n";
cout <<"\t+Specialitatea colaboratorului : "<<colab[i].spec<<"\n";

cout <<"\t+Categoria colaboratorului : "<<colab[i].cat<<"\n";


cout <<"\t+Salariul : "<<colab[i].salariu<<"\n";
cout <<"\t =================================\n";
}getch();}
else {cout<<"\tNu ati dat nici un calaborator !!!"; getch();}
}
void comparareColaboratorSalariu(int n)
{system("cls");if (cr>0){
int slr(0) , y(0);
cout<<"\t ========================================\n";
cout<<"\t Se v-or afisa colaboratorii cu salariu mai mare\n\t decit salariul indicat de
utilizator !\n\n";
cout<<"\t>>Introduceti salariul dorit : ";cin>>slr;
for (int i(0) ; i<n ; i++)
{
if (colab[i].salariu>=slr)
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colab N."<<i+1<<" avem datele:\n" ;
cout <<"\t+Numele colaboratorului : "<<colab[i].nume<<"\n";
cout <<"\t+Specialitatea colaboratorului : "<<colab[i].spec<<"\n";
cout <<"\t+Categoria colaboratorului : "<<colab[i].cat<<"\n";
cout <<"\t+Salariul de fondare : "<<colab[i].salariu<<"\n";
cout <<"\t =================================\n";getch();
y++;
}
}
if (y==0)
{cout <<"\tColab. cu salariu mai mare "<<slr<<" nu exista !!!!";getch();}
}else {cout<<"\tIntii creati firmele !!!"; getch();}
}
void modificare(int n)
{
system("cls");if (cr>0){
char optiune('-');
int i(0);
char *p;
int num;
p = new char[20];
strcpy(p,"nume");
cout<<"\t>>Dati numarul de ordine al colaboratorului pentru modif. : ";cin>>i;
i--;
if (i>=n)
cout<<"\t>>Numarul de ordine nu este corect!!!";
else{
cout<<"\t>>Dupa ce criteriu doriti modificarea unui calaborator ?\n\n";
cout<<"\t 1..pentru modificare numelui\n";
cout<<"\t 2..pentru modificare specialitatii\n";
cout<<"\t 3..pentru modificare categoriei\n";

cout<<"\t 4..pentru modificare Salariului\n";


optiune=getch();
switch(optiune)
{
case '1':
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colaboratorul N."<<i+1<<" Introduceti :\n" ;
cout <<"\t+Numele colaboratorului : ";
delete[] p;p = new char[20];
cin >>p;
modificareColaboratorNume(&colab[i] , p , 1);break;
}
case '2':
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colaboratorul N."<<i+1<<" Introduceti :\n" ;
cout <<"\t+Specialitatea colaboratorului : ";
delete[] p;p = new char[20];
cin >>p;
modificareColaboratorSpec(&colab[i] , p , 1);break;
}
case '3':
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colaboratorul N."<<i+1<<" Introduceti :\n" ;
cout <<"\t+Categoria colaboratorului : ";
delete[] p;p = new char[20];
cin >>p;
modificareColaboratorCateg(&colab[i] , p , 1);break;
}
case '4':
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colaboratorul N."<<i+1<<" Introduceti :\n" ;
cout <<"\t+Salariul : ";
cin >>num;
modificareColaboratorSalariu(&colab[i] , num);break;
}
default:break;
}delete[] p;cout<<"\n\tModificarea a fost facuta cu succes !!!"; getch();
}
}else {cout<<"\tIntii definiti colaboratorii !!!"; getch();}
}
void cautareColaboratorNume(int n)
{
system("cls");
if (cr>0){
int y(0);
char *p;

p = new char[20];
strcpy(p,"nume");
cout<<"\t ========================================\n";
cout<<"\t Se va afisa colaboratorii cu numele indicat de utilizator !\n\n";
cout<<"\t>>Introduceti numele colaboratorului dorit : ";cin>>p;
for (int i(0) ; i<n ; i++)
{
if (strcmp(colab[i].nume,p)==0)
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colaboratorul N."<<i+1<<" avem datele:\n" ;
cout <<"\t+Numele colaboratorului : "<<colab[i].nume<<"\n";
cout <<"\t+Specialitatea colaboratorului : "<<colab[i].spec<<"\n";
cout <<"\t+Categoria colaboratorului : "<<colab[i].cat<<"\n";
cout <<"\t+Salariul : "<<colab[i].salariu<<"\n";
cout <<"\t =================================\n";getch();
y++;
}
}delete[] p;
if (y==0)
{cout <<"\tColaboratorul cautat nu exista !!!!";getch();}
}else {cout<<"\tIntii definiti colaboratorii !!!"; getch();}
}
void cautareColaboratorSpec(int n)
{
system("cls");
if (cr>0){
int y(0);
char *p;
p = new char[20];
strcpy(p,"nume");
cout<<"\t ========================================\n";
cout<<"\t Se va afisa colaboratorii cu specialitatea indicata de utilizator !\n\n";
cout<<"\t>>Introduceti specialitatea colaboratorului dorit : ";cin>>p;
for (int i(0) ; i<n ; i++)
{
if (strcmp(colab[i].spec,p)==0)
{
cout <<"\t =================================\n";
cout <<"\t >>>Pentru colaboratorul N."<<i+1<<" avem datele:\n" ;
cout <<"\t+Numele colaboratorului : "<<colab[i].nume<<"\n";
cout <<"\t+Specialitatea colaboratorului : "<<colab[i].spec<<"\n";
cout <<"\t+Categoria colaboratorului : "<<colab[i].cat<<"\n";
cout <<"\t+Salariul : "<<colab[i].salariu<<"\n";
cout <<"\t =================================\n";getch();
y++;
}
}delete[] p;
if (y==0)

{cout <<"\tColaboratorul cautat nu exista !!!!";getch();}


}else {cout<<"\tIntii definiti colaboratorii !!!"; getch();}
}
void freemem(int n)
{
for(int i(0) ; i<n ; i++)
eliberareMem(&colab[i]);
cout<<"\tEliberarea memoriei a avut loc cu succes !!!"; getch();
}
int main()
{
char opt('-');
int N(0);
cout<<"\t >>>>> Dati numarul de colaboratori : "; cin >> N;
while(1)
{system("cls");
cout<<"\t\t==MENU PRINCIPAL==\n";
cout<<"\t 1..Definirea colaboratorilor\n";
cout<<"\t 2..Afisarea continutului\n";
cout<<"\t 3..Comparare dupa Salariu\n";
cout<<"\t 4..Cautarea dupa NUME\n";
cout<<"\t 5..Cautarea dupa Specialitate\n";
cout<<"\t 6..Modificarea continutului\n";
cout<<"\t 7..Iesirea din program si eliberarea memoriei!\n";
opt=getch();
switch(opt){
case '1':creare(N);break;
case '2':afisare(N);break;
case '3':comparareColaboratorSalariu(N);break;
case '4':cautareColaboratorNume(N);break;
case '5':cautareColaboratorSpec(N);break;
case '6':modificare(N);break;
case '7':freemem(N);exit(0);}
}
return 0;
}
Meniu:

1.Creation

2.Affichage

3.Modification

4.Comparaison

5.Recherche
Par le nom

Par la specialite

1. Crer type de donnes abstrait (structure) - vecteur qui comprend un pointeur sur
le long et le nombre d'lments. Pour dfinir des fonctions: initialisation, la
suppression d'un vecteur, d'activer / modifier la taille du vecteur, les lments
vectoriels d'accs, pour calculer le montant des lments positifs d'un vecteur. En
main d'illustrer la somme a deux vecteurs.
#include<iostream>
#include<string.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
using namespace std;
struct vectori
{ long *el;
int nr;
};
int y=1;
void setvalue(vectori* v, int n)
{
for(int i=0;i<n;i++)
{cout<<"\nVecteur "<<i+1<<endl;
cout<<"Donnez le nombre du element: ";
cin>>v[i].nr;
v[i].el=new long[v[i].nr];
cout<<"Donnez les elementes du vecteur: ";
for(int j=0;j<v[i].nr;j++)
cin>> v[i].el[j];
}
y=0;
}
void getvalue(vectori* v,int n)
{ if(y==0)
{for(int i=0;i<n;i++)
{ cout<<"\nVecteur "<<i+1<<endl;
for(int j=0;j<v[i].nr;j++)
cout<<" "<<v[i].el[j];
}}else cout<<"Le vecteur n'est pas cree.";
getch();
}
void calcul (vectori* v,int n)
{ int i,j,a[n];
for(i=0;i<n;i++)
a[i]=0;
for(i=0;i<n;i++)
for(j=0;j<v[i].nr;j++)
if(v[i].el[j]>0) a[i]=a[i]+v[i].el[j];
for(i=0;i<n;i++)
cout<<"\nLa somme du vecteur "<<i+1<<" : "<<a[i]<<endl;
cout<<"Si la somme est egal 0 le vecteur n'a pas des elementes +";
getch();
}

void modification(vectori* v)
{ int a,b,j,z;
cout<<"Quelle vecteur vous voulez modifier : ";
cin>> a;
int i[v[a-1].nr];
for(j=0;j<v[a-1].nr;j++)
i[j]=v[a-1].el[j];
cout<<"Donnez le nombre du element: ";
cin>> b;
if(v[a-1].nr>b) v[a-1].nr=b;
else {z=v[a-1].nr; v[a-1].nr=b;
v[a-1].el= new long[b];
cout<<"Donnez les elementes du vecteur: ";
for(j=z;j<b;j++)
cin>>v[a-1].el[j];
for(j=0;j<z;j++)
v[a-1].el[j]=i[j];
}
}
void elimenarea (vectori* v,int n)
{ int i;
for(i=0;i<n;i++)
{delete[] v[i].el;
v[i].el=NULL;}
y=1;
}
int main ()
{ int n,a;
cout<<"Donnez le nombre de vecteurs: ";
cin>> n;
vectori v[n];
while(1){ system("cls");
cout<<"1.Creation\n2.Affichage\n3.Modification\n4.Somme\n5.Supprimer\n6.Multiplication\n7.Sortir
\n";
cin>> a;
switch(a){
case 1 : setvalue(v,n);break;
case 2 : getvalue(v,n);break;
case 3 : modification(v);break;
case 4 : calcul(v,n);break;
case 5 : elimenarea(v,n);break;
case 6 :{cout<<"Donnez le numero du vecteur 1: ";
int b;
int m;
int l;
cin>> b;
cout<<"Donnez le numero du vecteur 2: ";
cin>>a;
if(v[a-1].nr<v[b-1].nr){
m=v[a-1].nr;

l=v[b-1].nr;
}else {
m=v[b-1].nr;
l=v[a-1].nr;
}
v[n].el=new long[l];
for(int i=0;i<m;i++)
v[n].el[i]=v[a-1].el[i]+v[b-1].el[i];
if(v[a-1].nr=l){
for(int i=m;i<l;i++)
v[n].el[i]=v[a-1].el[i];
}else{for(int i=m;i<l;i++)
v[n].el[i]=v[b-1].el[i];
}
for(int i=0;i<l;i++)
cout<<v[n].el[i]<<" ";
getch();
break;}
case 7 : exit(1);
}
}
}

1.Creation

2.Affichage

3.Modification

4.Somme

5.Somme vectoriale

6.Supprimer

Conclusion: Dans ce travail pratique nous faisons la conaissance avec la langage de

programmation C++, j'ai tudi type de donnes abstrait (structure),les instructions new
et delete.

Вам также может понравиться