Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dynamiczna tablica struktur - stos

Ostatnio zmodyfikowano 2015-10-26 16:09
Autor Wiadomość
Witicar
Temat założony przez niniejszego użytkownika
Dynamiczna tablica struktur - stos
» 2015-10-26 12:42:12
Dzien dobry, mam otóż maly problem z programem, wysypuje go przy wpisaniu stringa na inny niz 1 element stosu (przy int i double dziala poprawnie).
Problemem tez na chwile obecna jest dla mnie zwrot wartosci tablicy ze stosu gdyz wtedy takze program sie sypie. Jestem w trakcie nauki struktur i wskaznikow (zaczalem 2 dni temu) moze dlatego nie moge ujrzec bledu

C/C++
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;

struct struktura
{
    int cyfra;
    double liczba;
    string wyraz;
};

void push( struktura tablica[], int & licznik )
{
    int wybor;
    do
    {
        cin.sync();
        cin.clear();
        cout << "Wybierz typ zmiennej (1 - int, 2 - double, 3 - string)";
        cin >> wybor;
        switch( wybor )
        {
        case 1:
            cout << "Wprowadz zmienna" << endl;
            cin.sync();
            cin.clear();
            cin >> tablica[ licznik ].cyfra;
            cout << "push\t" << tablica[ licznik ].cyfra << endl;
            break;
        case 2:
            cout << "Wprowadz zmienna" << endl;
            cin.sync();
            cin.clear();
            cin >> tablica[ licznik ].liczba;
            cout << "push\t" << tablica[ licznik ].liczba << endl;
            break;
        case 3:
            cout << "Wprowadz zmienna" << endl;
            cin.sync();
            cin.clear();
            cin >> tablica[ licznik ].wyraz;
            cout << "push\t" << tablica[ licznik ].wyraz << endl;
            break;
            default:
            break;
        }
    } while( !( wybor == 1 || wybor == 2 || wybor == 3 ) );
   
    licznik++;
}

struktura pop( struktura tablica[], int & licznik )
{
    licznik--;
    return tablica[ licznik ];
}

int main()
{
    int licznik = 0;
    struktura * tablica = new struktura[ licznik + 1 ];
    for( int i = 0; i < 2; i++ )
         push( tablica, licznik );
   
    for( int i = 0; i < 2; i++ )
         pop( tablica, licznik );
   
    _getch();
    return 0;
}
P-139194
carlosmay
» 2015-10-26 14:20:29
W czasie wizyty w funkcji push wypełniasz tylko jedno pole w strukturze,
a reszta?
P-139196
Witicar
Temat założony przez niniejszego użytkownika
» 2015-10-26 14:26:07
Reszta zostaje bez zmian, w sumie powinienem im nadac jakies wartosci poczatkowe. Jednak odkrylem ze prawdziwym winowajcą jest owa tablica dynamiczna(na statycznej dziala poprawnie). Mialem zle wyobrazenie do jej dzialan i w tym miejscu chyba lepiej sprawdzila by sie lista lub ewentualnie vector.
P-139197
carlosmay
» 2015-10-26 14:46:10
C/C++
int licznik = 0;
struktura * tablica = new struktura[ licznik + 1 ];
 Tablica ma tylko jeden element.
P-139199
Witicar
Temat założony przez niniejszego użytkownika
» 2015-10-26 15:04:58
Wlasnie uzylem tablicy statycznej, w funkcji pop zwracam tablice struktury z ktorej potem w main wyluskuje do osobnych tablic int, double i string wartosci z struktury, wszystko dziala jak nalezy, temat do zamkniecia.
P-139201
carlosmay
» 2015-10-26 16:09:07
Jak już wspomniałeś o STL to skorzystaj z tego
Adaptator stosu: std::stack
P-139210
« 1 »
  Strona 1 z 1