Wypełnianie dwuwymiarowej tablicy

Odpowiedz Nowy wątek
2014-12-26 13:05
0

Witam. Mam problem z wypełnieniem tablicy dwuwymiarowej. Przy próbie wpisania wartości wyrzuca błąd:

"Unhandled exception at 0x00F0229D in rownania_liniowe.exe: 0xC0000005: Access violation writing location 0xCDCDCDCD"
Kod:

class Macierz
{
public:
    int k,l;
    double **tablica;
 
    Macierz (int k_, int l_)
    {
        k=k_;
        l=l_;
        tablica=new double *[k];
        for (int i=0; i<k; i++)
        {
            tablica[k]=new double [l];
            for (int j=0; j<l; j++)
                tablica[i][j]=0;
        }
    }
};

Obiekt tworzę następująco:

Macierz glowna (5,6);

Próbowałem też wypełniać tablicę poprzez metodę klasy macierz, jednak problem pozostaje taki sam.
Bardzo proszę o pomoc.

dodanie znacznika <code> - @furious programming

edytowany 1x, ostatnio: furious programming, 2014-12-26 19:35
Treści błędów wstawiaj w znaczniki &lt;code&gt;, bo mogą zawierać znaki służące do formatowania tekstu na forum; - furious programming 2014-12-26 19:35

Pozostało 580 znaków

2014-12-26 13:10
  1. To kara za bezsensowne nazywanie składowych i zmiennych:
    tablica[i]=new double [l];

    Nazwij składowe Y,X parametry konstruktora też Y,X zaś zmienne y,x czyli: class Macierz
    {
    public:
    size_t Y,X;
    double *tablica;
    Macierz(size_t Y,size_t X):Y(Y),X(X)
    {
    tablica=new double
    [Y];
    for(size_t y=0;y<Y;++y)
    {
    tablica[y]=new double [X];
    for(size_t x=0;x<X;++x) tablica[y][x]=0;
    }
    }
    };

Nie używaj i++ jeżeli możesz użyć ++i - ten brzydki nawyk się zemści</li> Zastanów się nad zastosowaniem vector'a</li> Zastanów się nad adaptacją jednowymiarowej tablicy:
class Matrix
{
public:
size_t Y,X;
double **data;
Macierz(size_t Y,size_t X):Y(Y),X(X),data(new double[Y*X]) { memset(data,0,Y*X*sizeof(double)); }
~Macierz() { delete[] data; }
double *operator[](size_t y) { return data+y*X; }
const double *operator[](size_t y)const { return data+y*X; }
};
</li> </ol>
Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2014-12-26 13:18

Pozostało 580 znaków

2014-12-26 13:17
0

Ale wstyd :D W każdym razie dzięki :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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