Sunteți pe pagina 1din 12

Ministerul nvmntului i Educaiei

al Republicii Moldova
Colegiul Financiar-Bancar Chiinu

LUCRARE DE LABORATOR Nr.1


Tema:Structuri.Functii

A efectuat:Rosca Diana
INF 1011 G
A verificat: Malai Mariana

Chisinau 2011

Se considera o structura de parfumuri oferite in vinzare ce contine urmatoarele


cimpuri:
Denumire
Cantitate
Compania
pretul
tipul(f sau m).

De efectuat un program care va executa urmtoarele funcii:


1.
2.
3.
4.
5.

Citirea datelor din fisierul parfum.txt.


Afisarea datelor.
Sa calculeze pretul maxim.
Sa calculeze pretul minim.
Sa calculeze media parfumurilor ce sunt din categoria florala si au mai putin de
50 ml.
6. Parfumurilor ce au pretul mai mare de 250 lei sa se faca reducere 30%.
7. Sa filtreze parfumurile dupa categorie.
8. Parfumurilor ce au pretul mai mic de 100 lei si sunt pentru femei (f) sa se adauge
25%.
9. Sa sorteze parfumurile dupa pret si sa le afiseze in ordine crescatoare.
10.Sa sorteze parfumurile dupa cantitate si sa le afiseze in ordine descrescatoare.

#include <fstream.h>
#include <string.h>
#include <conio.h>
int i,n;
ifstream f("parfum.txt");
struct parfum
{char denumire[30];
float pret;
char compania[20];
int cantitatea;
char categoria[50];
char tipul[10];
}LP[100];
void citire()
{f>>n;
for(i=1;i<=n;i++)
{ f>>LP[i].denumire;
f>>LP[i].pret;
f>>LP[i].compania;
f>>LP[i].cantitatea;
f>>LP[i].categoria;
f>>LP[i].tipul;}
cout<<"Efectuat cu succes"<<endl;
}
void afisarea()
{for(i=1;i<=n;i++)
{ cout<<LP[i].denumire<<" ";
cout<<LP[i].pret<<" ";
cout<<LP[i].compania<<" ";
cout<<LP[i].cantitatea<<" ";
cout<<LP[i].categoria<<" ";
cout<<LP[i].tipul<<" ";
cout<<endl;
}
}
void max()
{int max=LP[1].pret;
for(i=2;i<=n;i++)
if(LP[i].pret>max) max=LP[i].pret;
for(i=1;i<=n;i++)
if(LP[i].pret==max)
cout<<LP[i].denumire<<" "<<LP[i].pret<<" "<<LP[i].compania<<" "<<LP[i].categoria<<endl;
}
void min()
{int min=LP[1].pret;
for(i=2;i<=n;i++)
if(LP[i].pret<min) min=LP[i].pret;
for(i=1;i<=n;i++)
if(LP[i].pret==min)
cout<<LP[i].denumire<<" "<<LP[i].pret<<" "<<LP[i].compania<<" "<<LP[i].categoria<<endl;
}

void categoria()
{
int k=0,s=0;
for(i=1;i<=n;i++)
if(LP[i].cantitatea<50 && strcmp(LP[i].categoria,"florala")==0){
k++;
s+=LP[i].pret;
}
if(k!=0)
cout<<"media="<<((float) s/k)<<endl;
else
cout<<"Nu-s astfel de parfumuri"<<endl;
}
void reducere()
{ for(i=1;i<=n;i++)
if(LP[i].pret>250)
LP[i].pret*=(float)30/100;
cout<<"Indeplinit cu succes"<<endl;
}
void filtrare()
{char x[30];
cout<<"categoria:";
cin>>x;
for(i=1;i<=n;i++)
if(strcmp(LP[i].categoria,x)==0)
cout<<LP[i].denumire<<" "<<LP[i].pret<<" "<<LP[i].compania<<" "<<LP[i].categoria<<endl;
}
void scumpire()
{ for(i=1;i<=n;i++)
if(LP[i].pret<100 && strcmp(LP[i].tipul,"f")==0)
LP[i].pret+=LP[i].pret*25/100;
cout<<"Indeplinit cu succes"<<endl; }
void sortare()
{ int i,j;
struct parfum x;
for(i=1;i<=n-1;i++)
for(j=1;j<=n-1;j++)
if(LP[j+1].pret<LP[j].pret)
{ x=LP[j];
LP[j]=LP[j+1];
LP[j+1]=x;
}
for(i=1;i<=n;i++)
cout<<LP[i].denumire<<" "<<LP[i].pret<<" "<<LP[i].compania<<" "<<LP[i].categoria<<endl;
}

void sortarecantitate()
{ int i,j;
struct parfum t;
for(i=1;i<=n-1;i++)
for(j=1;j<=n-1;j++)
if(LP[j+1].cantitatea>LP[j].cantitatea)
{ t=LP[j];
LP[j]=LP[j+1];
LP[j+1]=t;
}
for(i=1;i<=n;i++)
cout<<LP[i].denumire<<" "<<LP[i].pret<<" "<<LP[i].compania<<" "<<LP[i].categoria<<"
"<<LP[i].cantitatea<<endl;
}
main()
{int e;clrscr();
do
{cout<<"*******************************************"<<endl;
cout<<"**----------------Meniu------------------**"<<endl;
cout<<"**---------------citirea-------------1---**"<<endl;
cout<<"**---------------afisarea------------2---**"<<endl;
cout<<"**------------pretul maxim-----------3---**"<<endl;
cout<<"**------------pretul minim-----------4---**"<<endl;
cout<<"**------------pretul mediu-----------5---**"<<endl;
cout<<"**--------------reducere-------------6---**"<<endl;
cout<<"**--------------filtrare-------------7---**"<<endl;
cout<<"**--------------scumpire-------------8---**"<<endl;
cout<<"**--------------sortare--------------9---**"<<endl;
cout<<"**--------sortarea dupa cantitate----10--**"<<endl;
cout<<"*******************************************"<<endl;
cout<<"e=";cin>>e;
switch(e)
{case 1:citire();break;
case 2:afisarea();break;
case 3:max();break;
case 4:min();break;
case 5:categoria();break;
case 6:reducere();break;
case 7:filtrare();break;
case 8:scumpire();break;
case 9:sortare();break;
case 10:sortarecantitate();break;
}}
while(e!=0);
}

Imagini a programului:
Meniul Principal:

Citirea:

Afisarea:

Pretul maxim si datele aceatui parfum:

Pretul minim si datele acestui parfum:

Pretul mediu al parfumurilor din categoria florala:

Reducere:

Filtrarea datelor:

Scumpire:

Sortarea dupa pret:

Sortarea dupa cantitate:

Parfum.txt
16
Aromadisiac 239 Avon 50 orientala f
FemmeHoliday 250 Avon 50 marin-lemnoasa f
Volare 200 Oriflame 50 florala f
eclat 270 Oriflame 100 marin-lemnoasa m
Precious 255 Oriflame 50 florala f
ForAway 185 Avon 30 floral-orientala f
glacier 200 oriflame 100 fresh-lemnoasa m
passiondance 160 Avon 50 floral-orientala f
Luscious 125 Avon 30 citrica f
excitate 230 Oriflame 100 fresh-marin m
Divine 300 Oriflame 50 floral-orientala f
EurBlanca 270 Avon 30 florala f
Perceive 250 Avon 50 floral-orientala f
EternalMagic 59 Avon 10 floral-lemnoasa f
blue 170 Avon 100 fresh m
sun 100 Oriflame 30 florala f

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