Pagini recente » Cod sursa (job #1458661) | Cod sursa (job #2827103) | Cod sursa (job #1410351) | Cod sursa (job #1157683) | Cod sursa (job #2370641)
#include <iostream>
#include <fstream>
using namespace std;
struct data
{
int an, luna, zi;
};
struct produs
{
char den[31], categorie[21];
float pret;
int cant;
data dataExp;
};
void Citire (produs a[], int &n)
{
ifstream f("produse.txt");
f>>n;
f.get();
for (int i = 1; i <= n; i++)
{
f.getline(a[i].den, 31);
f>>a[i].pret>>a[i].cant;
f>>a[i].dataExp.an>>a[i].dataExp.luna>>a[i].dataExp.zi;
f.get();
f.getline(a[i].categorie,21);
}
f.close();
}
void AfisareProdus(produs x)
{
cout<<"Denumirea produsului "<<x.den<<endl;
cout<<"Categoria produsului "<<x.categorie<<endl;
cout<<"Pretul produsului "<<x.pret<<endl;
cout<<"Cantitate "<<x.cant<<endl;
cout<<"Expira in "<<x.dataExp.zi<<"/"<<x.dataExp.luna<<"/"<<x.dataExp.an<<endl;
}
void AfisareSirProduse (produs a[], int n)
{
cout<<"Produsele din stoc sunt:\n";
for (int i = 1; i <= n; i++)
{
AfisareProdus(a[i]);
cout<<endl;
}
}
int compar (data d1, data d2)
///functia returneaza >0 daca d1>d2,0 daca d1=d2, <0 dca d1<d2
{
if (d1.an == d2.an && d1.luna == d2.luna && d1.zi == d2.zi)
return 0;
else if (d1.an > d2.an)
return 1;
else if (d1.an < d2.an)
return -1;
else if (d1.luna > d2.luna) ///acelasi an
return 1;
else if (d1.luna < d2.luna)
return -1;
else if (d1.zi > d2.zi) ///aceeasi luna
return 1;
return -1;
}
void ProduseExpirate (produs a[], int n)
{
struct data dataCurenta;
dataCurenta.an = 2019;
dataCurenta.luna = 2;
dataCurenta.zi = 19;
cout<<"Produsele expirate sunt: "<<endl;
for (int i = 1; i <= n ;i++)
if (compar(a[i].dataExp,dataCurenta)<0)
AfisareProdus(a[i]);
}
int main()
{
produs a[1000];
int n;
Citire(a, n);
AfisareSirProduse(a, n);
ProduseExpirate(a, n);
return 0;
}