[C++] zadanie na strukt danych: półka i antypółka

0

1.Półka - to taki pojemnik, który jest na początku zapełniony i po kolei zdejmujemy z niego elementy. Kiedy cały będzie pusty to uruchamia się metoda dostawca która zapełnia ją od nowa całą.
Muszę też użyć obsługi sytuacji wyjątkowych np. gdy półka się zapełni a dostawca będzie dalej chciał ją zapełnić to powinno wyskoczyć: "Półka jest już pełna nie możesz dołożyć nic więcej"

2.antypólka to taki pojemnik który napełniamy po kolei elementami aż do całkowitego zapełnienia, jak już cała się zapełni to wtedy uruchamia się metoda odbiorca, która piszę że odbiera towar.
Tu także powinna być obsługa błędów za pomocą wyjątków np gdy my ją napełniamy to nie może się przepełnić

na razie zrobiłem tyle :) co byście tu pozmieniali ? bo nie wiem czy to jest dobrze


#include <vector>
#include <iostream>

using namespace std;

template <class typ> 
class bufor
{
    typ buf[4];
    public:
    bufor();
    ~bufor();
};

template <class typ>
bufor<typ>::bufor()
{
    for (int i=0 ; i<4; i++)
    {
	buf[i]=NULL;
    }
}

template <class typ>
class antypolka : public bufor<typ>
{
    public:
    int licznik;
    polka();
    friend ostream& operator<< <typ> (ostream& e, polka<typ> anty);
    void Wstaw(int gdzie, typ el);    
};

template <class typ>
antypolka<typ>::antypolka() : bufor<typ>()
{
    licznik=0;
}

template <class typ>
void antypolka<typ>::Wstaw(int gdzie, typ el)
{
    try {
	    if (gdzie>4) throw gdzie;
	    if (buf[gdzie]==NULL) licznik+=1;
	    buf[gdzie] = el;
	}
    catch (int) 
    {
	cout << "Podane miejsce jest poza buforem!" << endl;
    }
}

template <class typ>
class polka : public bufor<typ>
{
    public:
    int licznik;
    polka();
    friend ostream& operator<< <typ> (ostream& e, polka<typ> pol);
    void Zdejmij(int gdzie, typ el);    
};

template <class typ>
polka<typ>::polka() : bufor<typ>()
{
    licznik=0;
}

template <class typ>
void polka<typ>::Zdejmij(int gdzie, typ el)
{
    try {
	   //jeszcze pusto
	}
    catch (int) 
    {
	cout << "Polka jest juz pusta!" << endl;
    }
}

template <class typ>
ostream& operator<< (ostream& e, antypolka<typ> pol)
{
    int i;
    try {
	    if (licznik<4) throw i;
	    for (i=0; i<4; i++)
	    {
			e << "zawartosc bufora: " << pol.buf[i] << ", "; 
	    }
	    e<<endl;
	}
    catch (int)
    {
	cout << "Przed pobieraniem zapelnij bufor!" << endl;
    }
}


0

nikt nie ma żadnej sugestii ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1