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

Klasy i macierze

Ostatnio zmodyfikowano 2019-04-04 07:32
Autor Wiadomość
tomekrx
Temat założony przez niniejszego użytkownika
Klasy i macierze
» 2019-04-03 23:59:49
Witam,
mam do zrobienia zadanie, które w klasie private zawiera podwojny wskaznik na tablice oraz rozmiar tablicy, public ktory ma konstruktor w ktorym przydzielam dynamicznie pamiec na tablice 3x3, destruktor oraz funkcje ktora wczytuje dane macierzy i funkcje ktora je wypisuje, ale jakoś nie chce działać.

C/C++
class Macierz {
private:
    int rozmiar;
    float ** tab = new float *[ rozmiar ];
public:
    Macierz() {
        rozmiar = 3;
        * tab = new float[ rozmiar ];
        tab[ rozmiar ][ rozmiar ];
    }
    void wczytaj_dane() {
        cout << "Wprowadz dane do tablicy 3x3:";
        float x;
        for( int i = 0; i < 3; i++ ) {
            for( int j = 0; j < 3; j++ ) {
                tab[ i ][ j ] = x;
            }
        }
    }
    void wypisz() {
        for( int i = 0; i < 3; i++ ) {
            for( int j = 0; j < 3; j++ ) {
                tab[ i ][ j ] = i * 3 + j;
                cout << tab[ i ][ j ] << " ";
            }
        }
    }
    ~Macierz() {
        delete[] tab;
    }
};
int main()
{
    Macierz m1;
    m1.wczytaj_dane();
    m1.wypisz();
}
P-174323
pekfos
» 2019-04-04 00:13:02
Tablica dwuwymiarowa NxM to N+1 alokacji pamięci. Masz dwie i sprzątasz tylko po jednej z nich.
P-174324
tomekrx
Temat założony przez niniejszego użytkownika
» 2019-04-04 00:23:09
W sensie, wpisuje 4 cyfry (nie wiem czemu nie 3) po czym mi wywala konsole i wyskakuje: Nieobsłużony wyjątek w lokalizacji 0x00972AE7 w ConsoleApplication27.exe: 0xC0000005: Naruszenie zasad dostępu podczas zapisywania w lokalizacji 0xDDDDDDDD.
P-174325
pekfos
» 2019-04-04 07:32:34
Żeby mieć tablicę dwuwymiarową, najpierw musisz utworzyć tablicę wskaźników i potem każdy wskaźnik musi wskazywać na poprawny obszar pamięci. Ty przypisujesz cokolwiek tylko do pierwszego wskaźnika, reszta jest niezainicjalizowana.
P-174326
« 1 »
  Strona 1 z 1