Problem z dwuwymiarową tablicą dynamiczną

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;
}
       
0

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

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;
0

Dzięki wielkie!

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";
        }
    }
}
0

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

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!! ;)

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.

0

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

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