Dobry wieczór, zadanie wygląda następująco:
1. tworzę klasę "towar" z trzema polami niepublicznymi(id towaru, cena towaru, ilość towaru) oraz jakieś metody.
2. tworzę klasę "sklep", z trzema polami niepublicznymi(nazwa sklepu, maksymalna ilość towarów w sklepie,aktualną ilość różnych towarów w sklepie, wskaźnik na pierwszy element tablicy towarów(typu towar)).
3. w konstruktorze klasy "sklep" mam utworzyć dynamiczną tablicę "artykuly".
4. w klasie "sklep" stworzyć metodę, która doda do listy artykułów towary(tylko nagłówki).
Mój kod:
#include <iostream>
using namespace std;
class Towar{
const string ID;
float cena;
int stan;
public:
Towar(string, float, int);
void wyswietl() const;
void zmienStan(float x);
void zwiekszStan(float x);
void zmniejszStan(float x);
float zwrocCeneCalkowita() const;
};
class Sklep{
string nazwa;
int maks;
int ile;
Towar towar;
Towar *artykuly;
public:
Sklep(string,int,int,Towar);
void wyswietl() const;
void dodajTowar();
};
Sklep::Sklep(string nz, int mx, int il, Towar t):towar(t),nazwa(nz),maks(mx){
ile=0;
ile=il;
if(ile>maks)
ile=maks;
Towar** artykuly = new Towar*[ile];
for( int i = 0; i < ile; i++ ){
artykuly[i] = new Towar();
}
for( int i = 0; i < ile; ++i ){
delete[] artykuly[i];
}
delete[] artykuly;
}
void Sklep::wyswietl() const{
cout << "nazwa: " << nazwa << ", max: " << maks << ", ile: " << ile << endl;
}
Towar::Towar(string IDD, float cn=0, int st=0):ID(IDD) {
cena=cn;
stan=st;
if(cena<0){
cena=0;
}
if(stan<0){
stan=0;
}
}
float Towar::zwrocCeneCalkowita() const {
float ile = cena*stan;
if(ile>0){
return cena*stan;
} else
return 0;
}
void Towar::zmniejszStan(float x) {
if(stan==0){
stan=0;
}else if(x<0){
stan-=0;
} else
stan-=x;
}
void Towar::zwiekszStan(float x) {
if(x<0){
stan+=0;
}
else stan+=x;
}
void Towar::zmienStan(float x) {
if(x<0){
stan=0;
}
else stan=x;
}
void Towar::wyswietl() const {
cout<<ID<<endl;
cout<<cena<<endl;
cout<<stan<<endl;
cout<<"Wartosc posiadanych towarow: "<<zwrocCeneCalkowita();
}
int main() {
Towar t1("1A",5,10);
t1.wyswietl();cout<<endl;
cout << endl;
Sklep s1("Warzywniak",10,8,t1);
s1.wyswietl();
return 0;
}
Problem polega na tym, że stoję w puncie trzecim i nie mam zielonego pojęcia jak utworzyć tablicę dynamiczną mając wskaźnik na pierwszy element typu "towar".
Towar** artykuly = new Towar*[ile];
for( int i = 0; i < ile; i++ ){
artykuly[i] = new Towar();
}
for( int i = 0; i < ile; ++i ){
delete[] artykuly[i];
}
delete[] artykuly;
Prosiłbym o jakąkolwiek pomoc, widocznie nie rozumiem też tego zadania, może ktoś mógłby mi wyjaśnić jak mam się za to zabrać.