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

[C++] Zmienny rozmiar tablicy

Ostatnio zmodyfikowano 2013-04-16 22:10
Autor Wiadomość
ziombel3
Temat założony przez niniejszego użytkownika
[C++] Zmienny rozmiar tablicy
» 2013-04-16 21:25:32
Witam.Mam problem z programem. Kompilator nie wyświetla żadnych błędów, jednak po uruchomieniu programu wyświetla się komunikat process exited with return value 3221225725. Co jest źle?
C/C++
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;

void wypelnij( int tab[], int n )
{
   
    for( int i = 0; i < n; i++ )
    {
        tab[ i ] =( rand() % 1000 );
    }
   
}

void zamien( int & a, int & b )
{
    int temp = a;
    a = b;
    b = temp;
}

void sortuj( int tab[], int n )
{
    int temp;
    for( int j = n - 1; j > 0; j-- )
    {
        for( int i = 0; i < j; i++ )
        {
            if( tab[ i ] > tab[ i + 1 ] )
                 zamien( tab[ i ], tab[ i + 1 ] );
           
        }
    }
}


int binarne( int poczatek, int koniec, int tab[], int szukana )
{
    if( poczatek <= koniec )
    {
        int srodek =( poczatek + koniec ) / 2;
        if( tab[ srodek ] == szukana )
             return srodek;
       
        if( tab[ srodek ] > szukana )
             return binarne( poczatek, srodek, tab, szukana );
        else
             return binarne( srodek + 1, koniec, tab, szukana );
       
    }
    return - 1;
}



int main( int argc, char * argv[] ) {
   
   
    int n, szukana;
    int tab[ n ];
    srand( time( NULL ) );
    cout << "Podaj liczbe elementow ";
    cin >> n;
    cout << "Jaka liczbe mam znalezc? ";
    cin >> szukana;
    wypelnij( tab, n );
    sortuj( tab, n );
    if( binarne( 0, n - 1, tab, szukana ) ==- 1 )
         cout << "Elementu nie ma";
    else
         cout << "Element jest na pozycji " << binarne( 0, n - 1, tab, szukana ) + 1;
   
   
    return 0;
}

Program ma na celu wypełnienie tablicy elementami losowymi, posortowaniu i znalezieniu elementu podanego przez użytkownika. Czytałem w internecie że jest to powodem przepełnienia stosu. Jednak potrzebne jest mi to na maturę, dlatego chce wiedzieć o co dokładnie z tym chodzi.
P-80680
Monika90
» 2013-04-16 22:10:03
W C++ rozmiar tablicy musi być znany w czasie kompilacji(*), tzn. musi być to stała, a u ciebie jest to zmienna, w dodatku niezainicjalizowana. Jeśli chcesz mieć tablicę dynamiczną, to użyj std::vector.

(*) Niektóre kompilatory (gcc) implementują tablice o zmiennym rozmiarze (tzw. VLA), ale jest  to niestandardowe rozszerzenie języka, więc lepiej użyć vectora.
P-80686
« 1 »
  Strona 1 z 1