• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd w funkcji używającej tablic dwu-wymiarowych(cos z pamiecia ale nwm)

0 głosów
194 wizyt
pytanie zadane 2 grudnia 2020 w C i C++ przez cursedcat Początkujący (250 p.)

Witam mam pewnien problem, w ciele pierwszej z funkcji po przypisaniu wartości do danej komorki tablicy wywala mi blad. Linijka 14, 15 i 20. Co i w jaki sposob powininienem zmienic?? Ktos cos??

Unhandled exception at 0x00966338 in ConsoleApplication1.exe: 0xC0000005: Access violation writing location 0xCDCDCDD5. occurred

A tutaj moj kod

#include <iostream>
#include <time.h>

using namespace std;

void wypelnianie(int rozmiar_macierzy, int **tab)
{

    //maczierz symetryczna(rosnaca)
        for (int j = rozmiar_macierzy - 2; j >= 0; j--)
        {
        for (int i = rozmiar_macierzy - 2; i >= 0; i--)
            {
                tab[i][j] = 1;
                tab[j][i] = 1;
            }
        }
        for (int i = 0; i < rozmiar_macierzy; i++)
        {
            tab[i][i] = 2;
        }
}
void wypisywanie(int rozmiar_macierzy, int **tab)
{
        for (int j = rozmiar_macierzy - 1; j >= 0; j--)
        {
            for (int i = 0; i < rozmiar_macierzy; i++)
            {
                cout << i << j << " ";
            }
            cout << endl;
    }
}






int main()
{
    int rozmiar_macierzy;
    cout << "Podaj rozmiar macierzy (jedna liczba):";
    cin >> rozmiar_macierzy;

    int** tab = new int*[rozmiar_macierzy];
    wypelnianie(4,tab);
    wypisywanie(4,tab);

    return 0;
}

indecision

1 odpowiedź

+1 głos
odpowiedź 2 grudnia 2020 przez tangarr Mędrzec (155,120 p.)
wybrane 2 grudnia 2020 przez cursedcat
 
Najlepsza

Chciałeś zrobić tablicę dwuwymiarową, ale utworzyłeś tylko pierwszy wymiar. Teraz musisz utworzyć drugi.

int** tab = new int*[rozmiar_macierzy];
for (int i=0; i<rozmiar_macierzy; i++) {
    // tworzymy "drugi wymiar"
    tab[i] = new int [rozmiar_macierzy];
    // nowo powstały "wiersz" zawiera śmieciowe dane
    // zerujemy go
    for (int j=0; j<rozmiar_macierzy; j++)
        tab[i][j] = 0;
}

Pamiętaj, żeby przekazywać do swoich funkcji prawidłowy rozmiar macierzy. Wyjechanie poza zakres tablic może się źle skończyć.

komentarz 2 grudnia 2020 przez cursedcat Początkujący (250 p.)
Faktycznie... tyle nad tym siedzialem

Bardzo dziekuje jak utworzylem w kazdej komorce tablice to wszystko dziala.

Podobne pytania

0 głosów
1 odpowiedź 404 wizyt
0 głosów
3 odpowiedzi 950 wizyt
pytanie zadane 12 stycznia 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)
0 głosów
0 odpowiedzi 323 wizyt

93,766 zapytań

142,723 odpowiedzi

323,374 komentarzy

63,360 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...