Problem z dwuwymiarową tablicą dynamiczną

robal94
2010-10-28 11:59
robal94
0

Witam! Chcę stworzyć dwuwymiarową tablicę dynamiczną. Jednak mój kod nie działa. Kompiluje się i w trakcie działania, po pobraniu n wyłącza się. oto ten kod:

main(){
       int n, *m; 
       int **k;
       cin >> n;
       *k = new int[n];
       for(int i = 1; i <= n; i++){
       k[i] = new int[n];
       }
       m = new int[n];
       for(int i = 1; i <= n; i++){
               cin >> m[i];
               for(int j = 1; j <= m[i]; j++)
               cin >> k[i][j];
               }

       for(int i = 0; i < n; i++){//pętla główna

               for(int j = 1; j <= m[i]; j++){//pętla właściwa

                       cout << k[i][j] << endl;

                       }

           }

       //cout << wynik/2;    
       system("PAUSE");
       return 0;
}

Pozostało 580 znaków

2010-10-28 12:22

Rejestracja: 12 lat temu

Ostatnio: 2 minuty temu

0

w C i C++ i w językach pochodnych, tablice indeksowane są od zera do n-1!


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2010-10-28 12:27

Rejestracja: 9 lat temu

Ostatnio: 7 lat temu

0
    int **wsk,n=4;
    wsk=new int*[n];
    for(int i=0;i<n;i++)
        wsk[i]=new int[n];
    for(int i=0;i<n;i++)
        delete wsk[i];
    delete [] wsk;

i see dead pixels..

Pozostało 580 znaków

robal94
2010-10-28 12:35
robal94
0

Dzięki wielkie!

Pozostało 580 znaków

2010-10-28 12:49

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

0

To i ja się podłącze do tematu, bo również mam problem z tablica dynamiczna czemu w mój program działa tylko wtedy jeśli zmienne w i k sa male albo kiedy ich wartosc zostaną okreslone w 2 i 3 linijce.

Ale wtedy nie jest to juz tablica dynamiczna. Kiedy wartosci w i k sa dopiero w mainie podane to po ilus wyrazach przy dodaniu kolejnego nagle srodek tablicy zmienia sie na dziwne liczby.

Jesli w 4 linijce wstawie jakas liczbe to oczywiscie dziala juz normalnie ale znow nie jest to wtedy tablica dynamiczna Gdzie popelniłem bład w implementacji tej tablicy ? ?

#include <iostream>
int w;
int k;
int **wspolrzedne = new int*[(w*k+1)];
int l=0;
int main()
{
    w=4;
    k=8;
    for(int i=0; i<w; i++)
    {
        for (int j=0; j<k; j++)
        {
            wspolrzedne[++l]=new int[2];
            wspolrzedne[l][0]=i;
            wspolrzedne[l][1]=j;
            for(int a=1; a<=l; a++)
            {
                std::cout<<wspolrzedne[a][0]<<" "<<wspolrzedne[a][1]<<"\n";
            }
            std::cout<<"\n";
        }
    }
}

Pozostało 580 znaków

2010-10-28 13:01

Rejestracja: 9 lat temu

Ostatnio: 7 lat temu

0

koniku polny przecież napisałem wyżej jak zaimplementować wielowymiarową tablice dynamiczną.. masz tam gotowca:)


i see dead pixels..

Pozostało 580 znaków

2010-10-28 13:19

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

0

Ok, masz racje moj kod powinien wygladac tak:

#include <iostream>
int w;
int k;
int **wspolrzedne; //TUTAJ ZMIANA
int l=0;
int main()
{
    w=4;
    k=8;
wspolrzedne = new int*[(w*k+1)]; // DOKONCZENIE ZMIANY
    for(int i=0; i<w; i++)
    {
        for (int j=0; j<k; j++)
        {
            wspolrzedne[++l]=new int[2];
            wspolrzedne[l][0]=i;
            wspolrzedne[l][1]=j;
            for(int a=1; a<=l; a++)
            {
                std::cout<<wspolrzedne[a][0]<<" "<<wspolrzedne[a][1]<<"\n";
            }
            std::cout<<"\n";
        }
    }

Dzieki!! ;)

Pozostało 580 znaków

robal94
2010-11-13 11:50
robal94
0

jaką wartość ma zdeklarowana zmienna do której nie została przypisana żadna wartość lub jak sprawdzić czy do zdeklarowanej zmiennej została przypisana jakaś wartość. Chodzi mi o zmienną int. Proszę o pomoc.

Pozostało 580 znaków

2010-11-13 12:13

Rejestracja: 16 lat temu

Ostatnio: 2 minuty temu

0

Zmienne globalne są zerowane na początku programu. Zmienne lokalne nie są, i zawierają śmieci.

Pozostało 580 znaków

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