Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
nemec.radovan:13.11.2018 22:58

Ahoj,

potřebuji naprogramovat zásobník, který bude mít tyto data:

  • ukazatel na jednorozměrné dynamické pole, ve kterém budou jednotlivé prvky-celá čísla zásobníku
  • vrchol zásobníku (index posledního prvku vloženého do zásobníku)
  • max - hodnota omezující počet prvků v dynamickém poli

A pak bude třída obsahovat následující metody:

  • konstruktor s parametrem, který vytvoří objekt a v něm dynamické pole o určitém max počtu prvků (hodnota parametru) a inicializuje se vrchol zásobníku
  • destruktor, který uvolní paměť po objektu
  • metoda PridejNaVrchol, která přidá prvek na vrchol zásobníku
  • metoda OdeberZVrcholu, která odebere prvek-číslo z vrcholu zásobníku a vrátí jeho hodnotu
  • metoda JePrázdný, která vrátí true, bude-li zásobník prázdný, a false, bude-li obsahovat alespoň jeden prvek

Zkusil jsem: Našel jsem plno zadání kde píší kódy s private a nechce mi to stále jít ,nebo nevím kde dělám chybu.

Chci docílit: Byl bych rád za pomoc ze zásobník, destruktor a metody mám doufám správně. Předem děkuji s radami

Editováno 13.11.2018 22:59
 
Odpovědět
13.11.2018 22:58
Avatar
Odpovídá na nemec.radovan
Patrik Valkovič:13.11.2018 23:10

Bez kódu ti nikdo neřekne, co je špatně.

Nahoru Odpovědět
13.11.2018 23:10
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
nemec.radovan:13.11.2018 23:14

Spíše nevím jak vytvořit ten zásobník..

private:
int *zas;
int index;
int max;
public:
Zasobnik(int);
~Zasobnik();
void PridejNaVrchol(in­t);
typ OdeberZVrcholu();
bool JePrazdny();

Zasobnik::Zasob­nik(int poc){
zas = new int[max];
max = poc;
index = -1;
}

Zasobnik::~Za­sobnik(void){
delete zas[];
}

int Zasobnik::Pri­dejNaVrchol(int h){
if (index < max-1){
index++;
zas[index] = h;
} else
cout << "Zasobnik je plny!"; << endl;
}

int Zasobnik::Ode­berZVrcholu(){
if (index >= 0){
return zas[index--];
} else
cout << "Zasobnik je prazdny!" << endl;
}

bool Zasobnik::JePraz­dny(){
if (index < 0) return true;
else return false;
}

 
Nahoru Odpovědět
13.11.2018 23:14
Avatar
Zakk
Člen
Avatar
Zakk:14.11.2018 1:13

neměl by v tom PridejNaVrchol být cyklus, kterým projdeš ten zásobník a až narazíš na volné místo, tak tam vložíš prvek něco jako

for (int i=0; i<" velikost zásobníku";i++){
        if (zasobník[i]==0) //nebo "null" teď nevím, jak to zapsat.. prostě, když je prázdný
                zasobnik[i]=h;
}

už jsem ospalej, tak omluv to, že možná budu mít špatně syntaxi a nepíšu to uplně konkrétně.. a možná píšu uplně blbosti.. jen mi na první pohled nedává smysl za tím ifem to index++ a přiřazení, podle mě by tam měl být ten cyklus..

 
Nahoru Odpovědět
14.11.2018 1:13
Avatar
martanec
Člen
Avatar
martanec:14.11.2018 8:03

v konstruktore mas chybu, prehod prvy s druhym riadkom :

Zasobnik::Zasobnik(int poc){
max = poc;
zas = new int[max];
index = -1;
}
 
Nahoru Odpovědět
14.11.2018 8:03
Avatar
Odpovídá na Zakk
nemec.radovan:14.11.2018 11:03

Děkuji, já začínám tak se v tom ještě ztrácím a motám. Jsem rád za každou radu.

 
Nahoru Odpovědět
14.11.2018 11:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.