• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Metody Pomoc

Object Storage Arubacloud
+1 głos
295 wizyt
pytanie zadane 6 maja 2018 w C i C++ przez CurryMan Nowicjusz (170 p.)
edycja 6 maja 2018 przez Patrycjerz

Witam, czy mógłby mi ktoś pomóc bo nie wiem jak to zrobić, ale sprawa wydaję się prosta i całkiem możliwe że jest prosta, mam zrobić to, do
metody pokaz_opis() w konkretnych podklasach klasy Produkt uzupełnić o pokazywanie ceny produktu;
Ktoś pomoże? Z góry bardzo dziękuje :3

#include<iostream>
#include<string>
using namespace std;
class Produkt {//klasa abstrakcyjna
	double cena;
public:
	double daj_cene() { return cena; }
	virtual string pokaz_opis() = 0; 
	Produkt(double cena) :cena(cena) {}
};



class Dysk :public Produkt {
	int pojemnosc;
public:
	string pokaz_opis() { return "Dysk: pojemnosc " + to_string(pojemnosc);}
	Dysk(double cena, int pojemnosc) :Produkt(cena) { this->pojemnosc = pojemnosc; }
};

class Monitor :public Produkt {
	double przekatna;
public:
	string pokaz_opis() { return "Monitor: przekatna " + to_string(przekatna); }
	Monitor(double cena, double przekatna) :Produkt(cena) { this->przekatna = przekatna; }	
	
};

class Myszka :public Produkt {
	int DPI;
public:
	string pokaz_opis() { return "Myszka: DPI " + to_string(DPI); }
	Myszka(double cena, double DPI) :Produkt(cena) { this->DPI = DPI; }
};




class PozycjaZamowienia {
	Produkt* p;
	int ilosc;
public:
	void dodaj_produkt(Produkt* p, int ilosc) {
		this->p = p;
		this->ilosc = ilosc;
	}
	double oblicz_wartosc() { return ilosc*p->daj_cene(); }
	string pokaz_opis() {
		return p->pokaz_opis() + " ilosc: " + to_string(ilosc);
	}
};





class Zamowienie {
	PozycjaZamowienia pz[10];
	int lb_pozycji;
public:
	bool dodaj_produkt(Produkt* p, int ilosc) {
		lb_pozycji++;
		if (lb_pozycji > 10) { cout << "\nNie mozna dodac produktu do zamowienia"; return 0; }
		pz[lb_pozycji - 1].dodaj_produkt(p, ilosc);
		return 1;
	}
	double oblicz_wartosc() {
		double wartosc = 0;
		for (int i = 0; i < lb_pozycji; i++)
			wartosc += pz[i].oblicz_wartosc();
		return wartosc;
	}
	void pokaz() {
		for (int i = 0; i < lb_pozycji; i++)
			cout << "\n" << pz[i].pokaz_opis();
	}
	Zamowienie() :lb_pozycji(0) {}
};

Produkt** tworz_baze_produktow(int&n) {
	n = 6;
	Produkt** p = new Produkt*[n];
	p[0] = new Monitor(600, 21);
	p[1] = new Monitor(330, 14.1);
	p[2] = new Dysk(200, 120);
	p[3] = new Dysk(360, 320);
	p[4] = new Myszka(200, 3100);
	p[5] = new Myszka(360, 1200);
	return p;
}
void usun_baze_produktow(Produkt**p, int n) {
	for (int i = 0; i < n; i++)
		delete[] p[i];
	delete[]p;
}

void wyswietl_produkty(Produkt**p, int n) {
	cout << "\nBaza produktow: ";
	for (int i = 0; i < n; i++)
		cout << "\n" << i + 1 << ": " << p[i]->pokaz_opis();
}

int main() {
	int lb_produktow;
	Produkt** baza_produktow = tworz_baze_produktow(lb_produktow);
	wyswietl_produkty(baza_produktow, lb_produktow);
	Zamowienie* z = new Zamowienie;
	cout << "\n\nTworzenie nowego zamowienia: ";
	int ktory_produkt;
	cout << "\nNumer produktu (1.." << lb_produktow << ") lub k zeby zakonczyc: ";
	while (cin >> ktory_produkt) {
		cout << "\nWybrano: " << baza_produktow[ktory_produkt - 1]->pokaz_opis();
		int ilosc; cout << ". Podaj ilosc: "; cin >> ilosc;
		if (!z->dodaj_produkt(baza_produktow[ktory_produkt - 1], ilosc))break;
		cout << "\nNumer produktu (1.." << lb_produktow << ") lub k zeby zakonczyc: ";
	}
	cout << "\n\nPodsumowanie zamowienia: ";
	z->pokaz();
	cout << "\nWartosc zamowienia: " << z->oblicz_wartosc();

	delete z;
	usun_baze_produktow(baza_produktow, lb_produktow);
}

1 odpowiedź

0 głosów
odpowiedź 6 maja 2018 przez adrian17 Ekspert (344,860 p.)

do metody pokaz_opis() w konkretnych podklasach klasy Produkt uzupełnić o pokazywanie ceny produktu; 

Nie widzę problemu. Masz metodę daj_cene, która zwraca cenę produktu, wystarczy ją wywołać i wyświetlić zwróconą wartość.

komentarz 6 maja 2018 przez CurryMan Nowicjusz (170 p.)
Ale jak to zrobić żeby to prawidłowo wyświetlało? Bo pojemność itd mi wyswietla, ale chce tez tą drugą metodę dodać
komentarz 6 maja 2018 przez adrian17 Ekspert (344,860 p.)
return "Dysk: pojemnosc " + to_string(pojemnosc) + ", cena: " + to_string(daj_cene());

 

Podobne pytania

0 głosów
1 odpowiedź 144 wizyt
pytanie zadane 21 maja 2020 w C i C++ przez zdridox Nowicjusz (210 p.)
+1 głos
1 odpowiedź 284 wizyt
0 głosów
0 odpowiedzi 100 wizyt
pytanie zadane 15 października 2021 w SQL, bazy danych przez Axbriv Nowicjusz (120 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...