Cod sursa(job #2370641)

Utilizator AngelEclipseGarleanu Alexandru Stefan AngelEclipse Data 6 martie 2019 12:56:27
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda pregatire_cls12_oji Marime 2.03 kb
#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;
}