Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací

Diskuze: Zásobník celých čísel

C a C++ C a C++ Zásobník celých čísel American English version English version

Aktivity (1)
Avatar
nemec.radovan:13. listopadu 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. listopadu 22:59
 
Odpovědět 13. listopadu 22:58
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na nemec.radovan
patrik.valkovic:13. listopadu 23:10

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

Nahoru Odpovědět 13. listopadu 23:10
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
nemec.radovan:13. listopadu 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. listopadu 23:14
Avatar
Zakk
Člen
Avatar
Zakk:14. listopadu 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. listopadu 1:13
Avatar
martanec
Člen
Avatar
martanec:14. listopadu 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. listopadu 8:03
Avatar
Odpovídá na Zakk
nemec.radovan:14. listopadu 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. listopadu 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.