Problém s vložením objektu do zásobníku C++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s vložením objektu do zásobníku C++ – C / C++ – Fórum – Programujte.comProblém s vložením objektu do zásobníku C++ – C / C++ – Fórum – Programujte.com

 

Kretov0
Duch
26. 3. 2011   #1
-
0
-

Zdravím, jsem začátečník v C++ a chtěl bych Vás poprosit o radu

Mým úkolem je vytvořit zásobník pomocí tříd, a poté do něj pomocí funkce push(...) vkládat instance objektu Clovek. Pro představu: vytvořím si člověka s ID, jménem a příjmením. Tyto lidi budu postupně vkládat do zásobníku. Pomocí funkce top() zjištovat aktuálního člověka na vrcholu zásobníku, pomocí pop() zase odebírat tyto lidi.

Nedaří se mi tyto lidi nastrkat do zásobníku a pracovat s nimi třeba jako s čísly.
U funkce top() a pop() mám problémy s návratovou hodnotou. Nevím, co a hlavně proč mám použít. Pokud jsem vkládal pouze císla(int), tak nebyl problém. S OOP teprve začínám, tudíž bohůžel nevím, jak na to

Kod, který jsme vytvořil:

#####################################

Osoba.h

#include <iostream>
#include <string>

using namespace std;

class Osoba
{
private:
string jmeno;
string prijmeni;
int ID;

public:
void setOsoba(int n_ID, string n_jmeno, string n_prijmeni);
void getOsoba();
};

#####################################

Osoba.cpp

#include "Osoba.h"

void Osoba::setOsoba(int n_ID, string n_jmeno, string n_prijmeni)
{
ID = n_ID;
jmeno = n_jmeno;
prijmeni = n_prijmeni;
}

void Osoba::getOsoba()
{
cout <<"ID: " << ID << endl;
cout <<"Jmeno: " << jmeno << endl;
cout <<"Prijmeni: " << prijmeni << endl;
}

#####################################

Zasobnik.h


#include <iostream>
#include <string>
#include "Osoba.h"

using namespace std;

const int N = 100;

class Zasobnik
{
private:
int index;
Osoba pole[N];

public:
bool isEmpty();
bool isFull();
void push(Osoba);
/*Osoba pop();
Osoba top();*/
Zasobnik();
};


####################################

Zasobnik.cpp


#include "Zasobnik.h"

Zasobnik::Zasobnik()
{
index = -1;
}

bool Zasobnik::isEmpty()
{
return (index == -1);
}

bool Zasobnik::isFull()
{
return (index == N);
}

void Zasobnik::push(Osoba jedna)
{
if( ! isFull() )
{
index++;
pole[index] = jedna;
}

else
cout <<"Preteceni" <<endl;
}

Osoba Zasobnik::top()
{
if( !isEmpty() )
return pole[index];

else
{
cout <<"Podteceni" << endl;
}

}

Osoba Zasobnik::pop()
{
if( ! isEmpty() )
{
Osoba pomocna = top();
index--;
return pomocna;
}

else
{
cout <<"Podteceni" << endl;
}

}

##################################
##################################
##################################

Hlavni.cpp


#include <iostream>
#include <string>
#include "Osoba.h"
#include "Zasobnik.h"

using namespace std;

int main()
{
Zasobnik muj;
Osoba jedna;
Osoba dve;


jedna.setOsoba(1, "Michal", "Novak");
muj.push(jedna);


dve.setOsoba(2, "Karel", "Pribyl");
dve.getOsoba();


cout <<"Je prazdny: " << muj.isEmpty() <<endl;

cout <<"Je plny: " << muj.isFull() <<endl;

cout <<endl <<endl;

muj.push(dve);

cout <<"Je prazdny: " << muj.isEmpty() <<endl;

cout <<"Je plny: " << muj.isFull() <<endl;

cout <<endl <<endl;

getchar();
}


Předem děkuji za Vaši ochotu a radu.

Nahlásit jako SPAM
IP: 78.157.162.–
Matrix17
~ Anonymní uživatel
300 příspěvků
27. 3. 2011   #2
-
0
-

Určitě by ses měl podívat na přetěžování operátorů. Protože u třídy osoba musíš přetížit operátor přiřazení a ještě kopírovací konstruktor. Pak by možná bylo dobrý vyhodit výjimku místo těch chybovejch hlášení podtečení atd. Takhle ti to akorát napíše a vrátíš bůh ví co...

Nahlásit jako SPAM
IP: 78.156.128.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 71 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý