• 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)

Object Storage Arubacloud
0 głosów
69 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 (154,780 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ź 122 wizyt
0 głosów
3 odpowiedzi 549 wizyt
pytanie zadane 12 stycznia 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)
0 głosów
0 odpowiedzi 99 wizyt

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...