Hanojské věže - odhalení chyby v programu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hanojské věže - odhalení chyby v programu – C / C++ – Fórum – Programujte.comHanojské věže - odhalení chyby v programu – C / C++ – Fórum – Programujte.com

 

marpit0
Stálý člen
19. 2. 2013   #1
-
0
-

Zdravím, realizuji hanojské věže prostřednictvím zásobníků, ale někde mám chybu a nemůžu přijít, kde.

Zásobník:

template <class T> class Zasobnik
{
	private:
		T *arr;
		int stackPointer;
		int size;

	public:
		Zasobnik(const int s)
		{
			arr = new T[s];
			stackPointer = -1;
			size = s;
		}

		bool is_empty()
		{
			if (stackPointer == -1)
				return true;
			else
				return false;
		}

		void push(T val)
		{
			if (++stackPointer >= size)
				throw("Zasobnik je plny\n");
			else
				arr[stackPointer] = val;
		}

		T pop()
		{
			if (--stackPointer < -1)
				throw("Zasobnik je prazdny\n");

			return arr[stackPointer + 1];
		}
};

a samotný program

#include <iostream>
#include "Zasobnik.hpp"

using namespace std;

void hVez(int pocet, Zasobnik <int> &tycA, Zasobnik <int> &tycC, Zasobnik <int> &tycB)
{
	if (pocet > 0)
	{
		hVez(pocet - 1, tycA, tycB, tycC);
		tycC.push(tycA.pop());
		hVez(pocet - 1, tycB, tycC, tycA);
	}
}

int main()
{
	int pocet;
	
	cout << "Zadejte pocet kuzelu: " << endl;
	cin >> pocet;

	if (cin.fail())
	{
		cerr << "Chyba na vstupu" << endl;
	}
	
	Zasobnik <int> tycA(pocet);
	Zasobnik <int> tycB(pocet);
	Zasobnik <int> tycC(pocet);
	
	//naplníme tyč A

	try
	{
		for (int i = pocet; i > 0; i--)
		{
			tycA.push(i);
		}

		hVez(pocet, tycA, tycB, tycC);

		for (int i = pocet; i > 0; i--)
		{
			cout << tycC.pop() << endl;
		}
	}

	catch (char* e)
	{
		cout << e << endl;
	}

	system("pause");
	return 0;
}

Díky za radu. 

Nahlásit jako SPAM
IP: 78.102.62.–
MarPit
KIIV
~ Moderátor
+43
God of flame
19. 2. 2013   #2
-
0
-

prekvapive ti to konci na throw... a jelikoz vracis  const char * a ne char * tak to hodi sigabort

neco s tim ze zasobnik je prazdny

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 6 hostů

Podobná vlákna

Hanojske veze (java) — založil Petr

Hanojské věže - špatné zobrazování — založil Račanský Tomáš

Odhalení chyby — založil MiCizek

Odhalení diakritiky — založil gruv

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ý