在课堂上找到不同的元素

时间:2014-04-13 19:07:08

标签: c++ class

#include<iostream>

using namespace std;

class Lek{
    private:
        int sifra;
        string ime;
        string proizvoditel;
        int cena;
        int kolicina;
    public:
        Lek(){

        }
        void postavuvanje(int s, string i, string p, int c, int k){
            sifra = s;
            ime = i;
            proizvoditel = p;
            cena = c;
            kolicina = k;
        }

        int vratiSifra(){
            return sifra;
        }

        string vratiIme(){
            return ime;
        }

        string vratiProizvoditel(){
            return proizvoditel;
        }

        int vratiCena(){
            return cena;
        }

        int vratiKolicina(){
            return kolicina;
        }

        void pecati(){
            cout << sifra << " " << ime << " " << proizvoditel << " " << cena << " " << kolicina << endl;
        }
};

int main(){
    Lek Apteka[100];
    int n;
    cout << "Vnesi go brojot na lekovi" << endl;
    cin >> n;
    int sifra;
    string ime;
    string proizvoditel;
    int cena;
    int kolicina;

    // here we are inputting the values for the array of objects.
    for(int i = 0; i < n; i++){
        cin >> sifra;
        cin >> ime;
        cin >> proizvoditel;
        cin >> cena;
        cin >> kolicina;
        Apteka[i].postavuvanje(sifra, ime, proizvoditel, cena, kolicina);
    }

    // this is part to find the name of the element with the lowest price.
    int najmala_cena = Apteka[0].vratiCena();
    int index = 0;
    for(int i = 1; i < n; i++){
        if(Apteka[i].vratiCena() < najmala_cena){
            najmala_cena = Apteka[i].vratiCena();
            index = i;
        }
    }

    cout << Apteka[index].vratiIme() << endl;

    return 0;
}

我已经设法解决了找到价格最低的元素的问题。但是,我必须找到所有具有&procuvoditel&#39; &#34; X&#34;并找到它有多少不同的名称(ime)。

我们假设用户输入的内容如下:

1
PillX
HospitalY
125
2

2
PillY
HospitalY
225
4

3
PillZ
HospitalY
590
1

4
PillX
HospitalY
125
8

所以,基本上,这些是该类的4个对象的属性,我们有相同的&#39; proizvoditel&#39;对于所有的药丸,称为&#34; HospitalY&#34;我们必须找到它有多少种不同的药丸,所以它有3个,因为PillX已经存在并且第二次不计算。

1 个答案:

答案 0 :(得分:0)

尝试为每个proizvoditel制作一个列表数组,即一个数组,它是第i个单元格包含该proizvoditel所有药丸的列表。

每当您找到现有的proizvoditel时,请检查药丸是否在列表中以及是否增加了计数器。

你可以试试std :: map,但你可能不得不为它所持有的类编写一个比较函数。