Dzień dobry wszystkim!
Otóż opanowałem w jakimś tam stopniu Jave i zabrałem się za C++. Chciałem zaimplementować kolejkę cykliczną. Kompilator nie wywala żadnych błędów, ale gdy chcę dodać jakiś element do kolejki to dostaję komunikat "Program Zad2.exe przestał działać". Bardzo bym prosił o pomoc.
Pozdrawiam
#include <iostream>
using namespace std;
class KolejkaC
{
private:
int* tablica;
int rozmiar;
int head;
int rear;
public:
KolejkaC(int i);
~KolejkaC();
void dodaj(int value);
void display();
void usun();
};
#include "KolejkaC.h"
KolejkaC::KolejkaC(int i)
{
tablica = new int[i];
rozmiar = i;
}
KolejkaC::~KolejkaC()
{
delete [] tablica;
}
void KolejkaC::dodaj(int value)
{
if ((rear == rozmiar - 1 && head ==0) || (head == rear + 1))
{
cout << "Kolejka jest pelna, nie mozna dodac elementu!" << endl;
}
else
{
if ((rear == rozmiar - 1) && head != 0) rear = -1;
rear++;
tablica[rear] = value;
if (head == -1) head = 0;
}
}
void KolejkaC::usun()
{
if (head == -1)
{
cout << "Koleka jest pusta!" << endl;
}
else
{
cout << "Usuniety element to: " << tablica[head];
if (head == rear)
{
head = -1;
rear = -1;
}
else
{
if (head == rozmiar) head = -1;
head++;
}
}
}
void KolejkaC::display()
{
if (head <= rear)
{
for (int i = head; i <= rear; i++)
{
cout << tablica[i] << endl;
}
}
else
{
for (int i = head; i <= rozmiar -1 ; i++)
{
cout << tablica[i] << endl;
}
for (int i = 0; i <= rear; i++)
{
cout << tablica[i] << endl;
}
}
}
#include <iostream>
#include "KolejkaC.h"
using namespace std;
int ile;
int main()
{
cout << "Podaj liczbe elementow: ";
cin >> ile;
KolejkaC kc(ile);
kc.dodaj(ile);
kc.~KolejkaC();
return 0;
}
@edit
Nie podałem początkowych wartości head i rear