Tablice dynamiczne

0

Witam
Czy ktoś sprawnym okiem mógł by zerknąć na ten kod ? Po dodaniu tablic dynamicznych kodzik się wysypuje , więc obstawiam że gdzieś tu leży problem. Z góry dziękuje za pomoc

#include <iostream>
#include <windows.h>
#include <cstdlib>

using namespace std;

int n; //Rozmiar
int * kolejka = new int[ n ];; // Kolejka
int aktualny; // Aktualny rozmiar kolejki
int pierwszy; // Pierwszy element kolejki
int ostatni; // Pierwsze wolne miejsce w kolejce

//------------------------------------------------------------------------

void podaj()
{
    delete[] kolejka;
    cout << "Podaj rozmiar kolejki" << endl;
    cin >> n;
    Sleep(300);

}

//------------------------------------------------------------------------

void wyswietl()
{
    system("cls"); 

    cout<<endl;
    cout<<"Rozmiar kolejki: "<<n<<endl;
    cout<<"Aktualna zawartosc kolejki:"<<endl;

    if (aktualny==0)
    {
        cout<<endl<<"<W kolejce nie ma zadnych elementow>";
    }

    else
    {

        int indeks;

        for (int i=0; i<aktualny; i++)
        {
            indeks=pierwszy+i;
            if (pierwszy+i>=n) indeks=pierwszy+i-n;
            cout<<kolejka[indeks]<<" ";
        }

    }

}

//------------------------------------------------------------------------

void dodaj()
{
    if (aktualny>=n)
    {
        cout << "Kolejka jest pelna!";
        Sleep(1000);
    }
    else if (aktualny==0)
    {
        cout<<endl<< "Dodaj element: ";
        cin>>kolejka[ostatni];
        ostatni=ostatni+1;
        aktualny=aktualny+1;

    }
    else
    {
        cout<<endl<< "Dodaj element: ";
        cin>>kolejka[ostatni];
        ostatni=(ostatni+1)%n;
        aktualny=aktualny+1;
    }
}

//------------------------------------------------------------------------

void usun()
{
    if (aktualny==0)
    {
        cout<<"Kolejka jest pusta!";
        Sleep(2000);
    }
    else
    {
        cout<<endl<<"Usuwam pierwszy element kolejki: "<<kolejka[pierwszy];
        pierwszy=(pierwszy+1)%n;
        aktualny=aktualny-1;
        Sleep(2000);

    }

}
//------------------------------------------------------------------------

void rozmiar()
{
    cout<<endl<<"Liczba elementow w kolejce: "<<aktualny;
    Sleep(2000);
}

//------------------------------------------------------------------------

void sprawdzam()
{

    if (aktualny==0) cout<<endl<<"Sprawdzam czy kolejka jest pusta?"<<endl<<"Tak";
    else cout<<endl<<"Sprawdzam czy kolejka jest pusta?"<<endl<<"Nie";
    Sleep(2000);
}

//------------------------------------------------------------------------

int main()
{

    int wybor;
    aktualny=0;
    pierwszy=0;
    ostatni=0;

    podaj();

    do
    {

        wyswietl();

        cout << endl << endl;
        cout << "Menu"<<endl;
        cout << "1. Dodaj (dodaje element na koniec kolejki) "<<endl;
        cout << "2. Usun (usuwa element z poczatku kolejki) "<<endl;
        cout << "3. Rozmiar (sprawdza ile elementow jest w kolejce) "<<endl;
        cout << "4. Sprawdzam (sprawdza czy kolejka jest pusta) "<<endl;
        cout << "5. Zmien rozmiar kolejki"<<endl;
        cout << "6. Koniec"<<endl;
        cout << "Wybor: ";
        cin >> wybor;

        switch (wybor)
        {
        case 1:
            dodaj();
            break;

        case 2:
            usun();
            break;

        case 3:
            rozmiar();
            break;

        case 4:
            sprawdzam();
            break;
        case 5:
            podaj();
            break;
        }

    }
    while (wybor != 6);

    return 0;
}
0

nie lepiej użyć kontenera?

0

Może i lepiej ale nigdy nie miałem do czynienia z kontenerem.Więc bazowałem na tym co mi mniej więcej wiem czyli mało ;(

0

Będę próbował , dzięki za naprowadzenie. Lecz jeżeli da się to jakoś poprawić będę wdzięczny bo "deadline" zbliża się nie ubłagalnie ;/
@Narkan dzięki tobie ruszyłem się z miejsca :) Jeszcze raz dzięki

0

w funkcji podaj usuwasz dynamiczną tablicę, a w dalszych funkcjach używasz tej tablicy(która nie istnieje)... w funkcji podaj dah na końcu:

kolejka=new int[n]; 

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