#include <iostream>
#include <string>
using namespace std;
class owoc
{
protected:
string rodzaj;
string kraj;
int cena;
public:
owoc();
owoc(string a, string b, int c);
owoc(owoc &mk);
void setrodzaj(string a);
void setkraj(string a);
void setcena(int a);
string getrodzaj();
string getkraj();
int getcena();
virtual void wypisz() = 0;
owoc *next;
};
owoc::owoc()
:rodzaj("cytrus"), kraj("Polska"), cena(1){}
owoc::owoc(string a, string b, int c){
rodzaj = a;
kraj = b;
cena = c;
}
owoc::owoc(owoc &mk){
rodzaj = mk.rodzaj;
kraj = mk.kraj;
cena = mk.cena;
}
void owoc::setrodzaj(string a){ rodzaj = a; }
void owoc::setkraj(string a){ kraj = a; }
void owoc::setcena(int a){ cena = a; }
string owoc::getrodzaj(){ return rodzaj; }
string owoc::getkraj(){ return kraj; }
int owoc::getcena(){ return cena; }
void owoc::wypisz(){
cout << "[owoc] rodzaj: " << rodzaj << " kraj: " << kraj << " cena: " << cena <<endl;
}
class truskawka
:public owoc
{
private:
string smak;
string kolor;
double waga;
public:
truskawka();
truskawka(string a, string b, double c, string d, string e, int f);
truskawka(truskawka &mk);
void setsmak(string a);
void setkolor(string a);
void setwaga(double a);
string getsmak();
string getkolor();
double getwaga();
void wypisz();
};
truskawka::truskawka()
:smak("slodka"), kolor("czerwona"), waga(1){}
truskawka::truskawka(string a, string b, double c, string d, string e, int f){
rodzaj = d;
kraj = e;
cena = f;
smak = a;
kolor = b;
waga = c;
}
truskawka::truskawka(truskawka &mk){
smak = mk.smak;
kolor = mk.kolor;
waga = mk.waga;
}
void truskawka::setsmak(string a){ smak = a; }
void truskawka::setkolor(string a){ kolor = a; }
void truskawka::setwaga(double a){ waga = a; }
string truskawka::getsmak(){ return smak; }
string truskawka::getkolor(){ return kolor; }
double truskawka::getwaga(){ return waga; }
void truskawka::wypisz(){
cout << "\n[owoc-truskawka] smak: " << smak << " kolor: " << kolor << " waga: " << waga <<endl;
}
int main()
{
owoc *head = NULL, *wsk = NULL, *owoc = NULL;
truskawka ab;
string r_rodzaj, k_kraj, s_smak, k_kolor;
double c_cena = 0, w_waga = 0;
int x = 0;
cout << "Wybierz jaki owoc chcesz zmagazynowac.\n0 - zakoncz\n1 - truskawka\n";
cin >> x;
while (x >= 0 || x <= 1){
if (x == 0){
cout << "\nZakonczyles dodawanie elementow.\n";
break;
}
if (x == 1){
cout << "\nWybrales owoc: truskawka.\n";
cout << "Podaj rodzaj [np. cytrus]: ";
cin >> r_rodzaj;
cout << "Podaj kraj pochodzenia: ";
cin >> k_kraj;
cout << "Podaj cene [1/kg]: ";
cin >> c_cena;
cout << "Podaj smak: ";
cin >> s_smak;
cout << "Podaj kolor: ";
cin >> k_kolor;
cout << "Podaj wage: ";
cin >> w_waga;
owoc = new truskawka(s_smak, k_kolor, w_waga, r_rodzaj, k_kraj, c_cena);
}
if(head == NULL){
head = wsk = owoc;
wsk->next = NULL;
}
else{
wsk->next = owoc;
wsk = wsk->next;
wsk->next = NULL;
}
cout << "\nWybierz jaki owoc chcesz zmagazynowac.\n0 - zakoncz\n1 - truskawka\n";
cin >> x;
}
//wypisz liste
wsk = head;
while(wsk){
wsk->wypisz();
wsk = wsk->next;
}
return 0;
}
W jaki sposób skonstruować listę dynamiczną, tak aby wyświetliła metodę wypisz() z klasy owoc, a następnie metodę wypisz() z klasy truskawka?