#include <iostream>
#include <fstream>
#include <math.h>
#include <vector>
#include <string>
#include <cstdlib>

using namespace std;

struct hozzavalo
{
    double mennyiseg = 0;
    string neve;
};

hozzavalo convert(string sor)
{
    hozzavalo a;
    unsigned int i = 0;
    string szam = "";
    while (sor[i] != ',' && i < sor.size()) szam += sor[i];
    a.mennyiseg = atoi(szam);
    a.neve = sor.substr(++i,sor.length());
    return a;
}

void cserel (double sz1, double sz2)
{
    double tmp = sz1;
    sz1 = sz2;
    sz2 = tmp;
}

int main()
{
    vector <hozzavalo> recept;

    double maximum, minimum;
    int maxhol = 0, minhol = 0;
    int szamol = 0, i = 0;
    bool elso = true;
    string osszetevo;

    string sor;
    ifstream f;
    f.open("recept.txt");
    if (f.is_open())
    {
        cout << "Melyik osszetevo mennyisegere vagy kivancsi: ";
        cin >> osszetevo;
        while (getline(f,sor))
        {
            hozzavalo tmp = convert(sor);
            if (elso)
            {
                maximum = tmp.mennyiseg;
                minimum = tmp.mennyiseg;
            }
            if (tmp.mennyiseg < 1) szamol++; // 1-nél kisebb mennyiségre van szükség belőle
            if (tmp.mennyiseg > maximum)     // Maximumkeresés
            {
                cserel(tmp.mennyiseg, maximum);
                maxhol = i;
            }
            else if (tmp.mennyiseg < minimum) // Minimumkeresés
            {
                cserel(tmp.mennyiseg, minimum);
                minhol = i;
            }
            if (tmp.neve == osszetevo)
                cout << "A(z) " << osszetevo << " osszetevobol " << tmp.mennyiseg << " menniseg kell." << endl;
            recept.push_back(tmp);
            i++;
        }
    f.close();
    cout << "A legnagyobb mennyiseg a(z)" << recept[maxhol].neve << " osszetevobol kellett. Ennek mennyisege: " << maximum << endl;
    cout << "A legkisebb mennyiseg a(z)" << recept[minhol].neve << " osszetevobol kellett. Ennek mennyisege: " << minimum << endl;
    cout << szamol << " ossze tevobol kellett egynel kisebb mennyiseg." << endl;
    }
    else cout << "A file-t nem sikerult megnyitni.";
    return 0;
}
