Nie działa mi program!

0

Nie wiem czemu nie działa mi ten program. Testuję akurat jedną rzecz i nie mam pojęcia czemu on nie działa. Proszę nie pytać po co taki program, po prostu uczę się i chciałbym zrozumieć dlaczego mi to nie działa. Kompilator zwraca mi problem:

declaration of 't1' as multidimensional array must have bounds for all dimensions except the first
 void czy_dziala_2(int t1[][], int t2[][], int k){
#include <iostream>
using namespace std;

const int N = 5;
void czy_dziala_2(int t1[][], int t2[][], int k){
    cout << "Witam" << k << endl;}
}

int czy_dziala(int t[N][N] int k){
    int t2[k][k];
    czy_dziala_2(t, t2, k);
}

int main(){
    int t[N][N] = {{1,2,3,4,5},{1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}};
    czy_dziala(t, 2);
}

2

http://c-faq.com/aryptr/pass2dary.html

cztli musisz podac wielkosc jednego z wymiarow tablic t1 i t2 w argumentach funkcji

0

No to jak ten program niby mam poprawić bo nie do końca rozumiem.

0

Tak jak jest to opisane w linku w ktorym dalem, czyli wstawic jeden z wymiarow przy argumentach funkcji.
Mozna ew uzyc innych struktur danych do tego celu, albo zasymulowac tablice wielowymiarowa tablica jednowymiarowa, gdyz widze, ze w kodzie masz wiecej problemow, a tablice jako argumenty funkcji w C sa nieco ulomnie obslugiwane.

[EDIT] Nie zauwazylem, gdyz styl wskazywal na jezyk C, a tu masz C++ - tak wiec zamiast kompbinowac, uzyj vectora.

0

Pytanie brzmi: O co walczymy, dokąd zmierzamy? Czyli co Testujesz, co Chcesz osiągnąć?

0

Robie po prostu sobie testy bo muszę napisać program, ale chce go napisać sam i potrzebuję takie operacje przeprowadzić jak na powyższym kodzie ale kompilator na to nie pozwala za bardzo.

2

Już Ci @kaczus napisał dlaczego nie działa. Jeżeli chcesz się nauczyć przekazywać do funkcji dowolną tablicę to najlepiej przekazać przez referencje i użyć szablonów:

template <size_t rows, size_t cols>
void function(int (&array)[rows][cols])
{
   for (size_t i = 0; i < rows; ++i)
   {
        for (size_t j = 0; j < cols; ++j)
        {
        }
   }
}

A poza tym, int t[N][N] nie jest poprawne dopóty, dopóki N nie jest constexpr.

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