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

Tablica dwuwymiarowa z określonym jednym wymiarem

Ostatnio zmodyfikowano 2014-02-28 19:04
Autor Wiadomość
domin568
Temat założony przez niniejszego użytkownika
Tablica dwuwymiarowa z określonym jednym wymiarem
» 2014-02-28 15:08:21
Witam, piszę zadanie na SPOJ i stwierdziłem że potrzebna mi będzie tablica dwuwymiarowa, z jednym wymiarem, który będzie znany od początku. Próbowałem takiego kodu :
C/C++
while( true )
{
    std::cin >> liczbaPrzypadkow;
   
    if( liczbaPrzypadkow > 0 && liczbaPrzypadkow < 30 )
    {
        break;
    }
   
}
int * tablica = new int[ liczbaPrzypadkow ][ 2 ];
 Ale kompilator nie zgadza się z tym :)
Wiem że rozmiar tablicy powinien być znany w czasie jej inicjalizacji. Jednak nie wiem jak to poprawnie rozwiązać. Myślałem o
std::vector
 ale ta tablica ma tylko jeden wymiar, proszę o pomoc :)
P-105401
Adik80
» 2014-02-28 15:31:25
moze jakos tak:
C/C++
int * tablica[ 2 ];
for( int i = 0; i < 2; ++i )
     tablica[ i ] = new int[ iloscPrzypadkow ];

albo z uzyciem tablicy vektorow:
C/C++
std::vector < int > tablica[ 2 ];
tablica[ 0 ].push_back( 0 );

P-105402
michal11
» 2014-02-28 16:19:42
Mozesz stworzyc vector vectorow,

C/C++
vector < vector < int > > tablica

albo dynamicznie zaalokowac obydwa wymiary. Tylko musisz pamiętac o odpowiednim zwolnieniu pamięci.

C/C++
int ** tab = new int *[ 2 ];

for( int i = 0; i < 2; i++ )
{
    tab[ i ] = new int[ liczbaPrzypadkow ];
}

//kod


for( int i = 0; i < 2; i++ )
{
    delete[] tab[ i ];
}
delete[] tab;
P-105410
Monika90
» 2014-02-28 17:22:16
int * tablica = new int[ liczbaPrzypadkow ][ 2 ];
Masz zły typ, powinno być
int( * tablica )[ 2 ] = new int[ liczbaPrzypadkow ][ 2 ];


A zresztą, jeżeli liczba przypadków jest mniejsza od 30, to możesz zwyczajnie zadeklarować:
int tablica[ 30 ][ 2 ];
 i już.
P-105412
domin568
Temat założony przez niniejszego użytkownika
» 2014-02-28 19:04:10
@Adik80 i @michal11 bardzo dziękuję za odpowiedzi, na pewno spróbuje waszej metody :) @Monika nie chce tracić pamięci, bo zawsze około 70 bajtów (np. jeżeli są tylko 2 pomiary) to jest coś, czy nie przejmować się za bardzo tym ? (chce przyzwyczaić się do dobrych metod :))
P-105428
« 1 »
  Strona 1 z 1