#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已经存在并且第二次不计算。
答案 0 :(得分:0)
尝试为每个proizvoditel制作一个列表数组,即一个数组,它是第i个单元格包含该proizvoditel所有药丸的列表。
每当您找到现有的proizvoditel时,请检查药丸是否在列表中以及是否增加了计数器。
你可以试试std :: map,但你可能不得不为它所持有的类编写一个比较函数。