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

zwracanie tablicy dwuwymiarowej z funkcji.

0 głosów
853 wizyt
pytanie zadane 12 stycznia 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)

Siema mam problem z tym kodem nie wiem czy dobrze zwracam ta tablice czy w zly sposob chce wypisac jej elementy. Co robie zle?

int *tabliczka_mnozenia(int rozmiar)
{   int **tablica = new int *[rozmiar];
    int i,k;
    for(i=0;i<=rozmiar;i++)
    {
        tablica[i] = new int [rozmiar];
    }
    for(i=0;i<rozmiar;i++)
    {
        for(k=0;k<rozmiar;k++)
        {
            tablica[i][k]=i*k;

        }

        return *tablica;
}


}
int main ()
{   cout << tabliczka_mnozenia(3)[2][1];
    return 0;
}

 

3 odpowiedzi

0 głosów
odpowiedź 12 stycznia 2020 przez maselo93 Użytkownik (880 p.)
22: {   cout << tabliczka_mnozenia(3)[2][1];
co chcesz wysłać do funkcji?

Opisz problem, bo nie jest wiadomo co ten program ma robić.
0 głosów
odpowiedź 12 stycznia 2020 przez criss Mędrzec (172,570 p.)
Powinieneś zwracać tablica a nie *tablica. W związku z tym typem zwracanym musi być int**.

Pierwsza pętla powinna mieć warunek <rozmiar a nie <=rozmiar.

Masz return wewnątrz pętli, to nie ma żadnego sensu. Wyrzuć return na koniec funkcji.

Pamięć zablokowana funkcji tabliczka_mnozenia nigdy nie zostaje zwolniona. Memleak
0 głosów
odpowiedź 12 stycznia 2020 przez Scheduler Mądrala (6,950 p.)

W kodzie było kilka błędów, głównie wynikające z niezrozumienia tablic i wskaźników. Zaczyna się w linii 1:

int *tabliczka_mnozenia(int rozmiar)
//powinno być
int **tabliczka_mnożenia(int rozmiar)

Następnie lina 4, nie równy lub mniejszy niż rozmiar, tylko mniejszy niż rozmiar.

Z błędu w linii 1 wynikł błąd w linii 16, aby go usunać wystarczy skasować gwiazdkę.

To chyba już wszystko. Masz cały poprawiony kod.

using namespace std;

int** tabliczka_mnozenia(int rozmiar)
{
    int ** tablica = new int * [rozmiar];
    int i, k;
    for (i = 0; i < rozmiar; i++)
    {
        tablica[i] = new int[rozmiar];
    }
    for (i = 0; i < rozmiar; i++)
    {
        for (k = 0; k < rozmiar; k++)
        {
            tablica[i][k] = i*k;

        }

        
    }
    return tablica;
}
int main()
{
    cout << tabliczka_mnozenia(3)[2][1];
    return 0;
}

 

komentarz 12 stycznia 2020 przez dominik195k Obywatel (1,030 p.)
dzieki

Podobne pytania

0 głosów
1 odpowiedź 832 wizyt
pytanie zadane 22 marca 2021 w C i C++ przez Rainbow99 Początkujący (430 p.)
0 głosów
0 odpowiedzi 266 wizyt
pytanie zadane 9 maja 2020 w C i C++ przez pati2234 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 202 wizyt

93,604 zapytań

142,529 odpowiedzi

322,996 komentarzy

63,092 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

Kursy INF.02 i INF.03
...