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

Ograniczenia tablic wielowymiarowych

Ostatnio zmodyfikowano 2017-03-05 07:42
Autor Wiadomość
Rainbow
Temat założony przez niniejszego użytkownika
Ograniczenia tablic wielowymiarowych
» 2017-03-04 22:33:29
Wie ktoś może czy tablica wielowymiarowa przywołana przez int może mieć ograniczenia dotyczące ilości komórek? Bo używałam już dwuwymiarowych i trójwymiarowych tablic w kodach, które nadają im podaną przez użytkownika liczbę parametrów i powiem szczerze, nie wiem czy robię coś źle, ale 125 komórek wydaje się być magiczną liczbą, przy której coś się psuje, największa dwuwymiarowa, która nie wykazywała problemów to 11x11, a trójwymiarowa zaczęła pokazywać bardzo dziwne wyniki przy 5x5x5 (już nie mówiąc o 10x10x10, bo wtedy program przestawał w ogóle odpowiadać). Zatem, wie ktoś co to może oznaczać i czy jest jakiś sposób, aby można było tworzyć większe tabele wielowymiarowe bez błędów?

I jeszcze jedno, nie do końca jeszcze rozumiem podział tematów na tym forum, więc jeśli powinien się ten temat znajdować gdzie indziej, to proszę o przeniesienie.
P-158526
michal11
» 2017-03-04 22:58:38
Zły kod.

Normalnie nawet 1 mln intów w tablicy nie powinien być problemem.
P-158529
Rainbow
Temat założony przez niniejszego użytkownika
» 2017-03-04 23:22:02
W takim razie, jeśli można się spytać, jest coś źle z tym fragmentem kodu?

C/C++
int wysokosc, niskosc, sredniosc;
cout << "Podaj wysokosc:" << endl;
cin >> wysokosc;
cout << "Podaj szerokosc:" << endl;
cin >> niskosc;
cout << "Podaj glebokosc:" << endl;
cin >> sredniosc;
int tablica[ wysokosc ][ niskosc ][ sredniosc ];
srand( time( NULL ) );
for( int i = 0; i <= wysokosc; ++i )
{
    for( int j = 0; j <= niskosc; ++j )
    {
        for( int k = 0; k <= niskosc; ++k )
        {
            tablica[ i ][ j ][ k ] =( rand() % 10 );
        }
    }
}
P-158530
Rainbow
Temat założony przez niniejszego użytkownika
» 2017-03-04 23:27:13
Możliwe też, że to przy wyświetlaniu dopiero coś jest nie tak, ale strona mi w ogóle nie pozwala wysłać tego kodu, więc niestety chyba nie wkleję...
P-158531
maly7
» 2017-03-04 23:28:50
To jest tablica statyczna, nie możesz ustawiać jej rozmiaru za pomocą zmiennej. Możesz wykorzystać np. const, #define lub tablicę dynamiczną.
P-158532
mateczek
» 2017-03-04 23:34:30
raz tablice statyczne deklaruje się jeśli ich rozmiar jest znany w czasie kompilacji
dwa
for( int i = 0; i <= wysokosc; ++i )
ten kod wychodzi poza zakres!!! tablice indeksujemy od zera do (rozmiar-1)
A trzy dlaczego lubisz sobie komplikować życie durnymi nazwami. niskość, średniość. Napisz sobie kod rotujący elementy po obwodzie tak nazwanej tablicy!!!
P-158533
Rainbow
Temat założony przez niniejszego użytkownika
» 2017-03-04 23:37:20
Co do tego fora, to wygląda on tak, bo jest jeszcze pozostałością z kodu tablicy dwuwymiarowej, gdzie kiedy było "i<wysokosc" zamiast "i<=wysokosc" to ostatni wiersz tabelki miał losowe liczby, ale nie wszystkie były jednocyfrowe, a ten znak równości to naprawił. Tak szczerze mówiąc, to nie do końca to jeszcze rozumiem...
P-158534
mateczek
» 2017-03-04 23:41:00
http://cpp0x.pl/forum/temat/​?id=24770
C/C++
#include <iostream>
using namespace std;
int main()
{
    int ** tablica2d;
    int ileWierszy, ileKolumn;
    cin >> ileWierszy >> ileKolumn;
    tablica2d = new int *[ ileWierszy ];
    for( int i = 0; i < ileKolumn; i++ ) {
        tablica2d[ i ] = new int[ ileKolumn ];
    }
   
   
    //tablica dynamiczna wypełnienie
    for( int i = 0; i < ileWierszy; i++ ) {
        for( int j = 0; j < ileKolumn; j++ ) {
            tablica2d[ i ][ j ] = i * ileKolumn + j;
        }
    }
    //tablica dynamiczna wypisanie
    for( int i = 0; i < ileWierszy; i++ ) {
        for( int j = 0; j < ileKolumn; j++ ) {
            cout << tablica2d[ i ][ j ] << "    ";
        }
        cout << endl;
    }
}
P-158535
« 1 » 2
  Strona 1 z 2 Następna strona