Mam zadanie:
W głównym kodzie zadeklaruj dwuwymiarową tablicę [ 5 ][ 8 ]
(deklaracja w tej kolejności).
Zapisz funkcję ustawiającą, która ustawi poszczególne wartości komórek tablicy wg schematu (wartości maleją od 40 do 1).
Parametrami funkcji mają być dwa wskaźniki. Pierwszy wskazujący na pierwszy element tablicy, drugi wskazujący na ostatni element tablicy.
Wewnątrz tej funkcji może znajdować się tylko jedna pętla!
Zapisz funkcję drukującą, która wyświetli na ekranie tablicę. Parametrem funkcji ma być oryginalna tablica dwuwymiarowa, z modyfikatorem const
.
Tutaj już klasycznie, dwie pętle do wydruku.
W głównym kodzie:
• zadeklaruj tablicę dwuwymiarową, • wywołaj funkcję ustawiającą
• wywołaj funkcję drukującą
mój kod:
#include <stdio.h>
void set2(int *a, int *b)
{
int start = 40;
for(int *p = a; p < b; p++, start--)
{
*p = start;
}
}
void print3(const int tab[][])
{
for(int i = 0; i<5; i++)
{
for(int j = 0; j<8; j++)
{
printf("%3i", tab[i][j]);
}
putchar('\n');
}
}
int main()
{
int tab[5][8] = {0};
set2(tab, &tab[4][7]);
print3(tab);
return 0;
}
oraz wyświetlane błędy:
main.c:13:23: error: array type has incomplete element type ‘int[]’
13 | void print3(const int tab[][])
| ^~~
main.c:13:23: note: declaration of ‘tab’ as multidimensional array must have bounds for all dimensions except the first
main.c: In function ‘main’:
main.c:28:10: warning: passing argument 1 of ‘set2’ from incompatible pointer type [-Wincompatible-pointer-types]
28 | set2(tab, &tab[4][7]);
| ^~~
| |
| int (*)[8]
main.c:4:16: note: expected ‘int *’ but argument is of type ‘int (*)[8]’
4 | void set2(int *a, int *b)
| ~~~~~^
main.c:29:12: error: type of formal parameter 1 is incomplete
29 | print3(tab);
nie potrafię tego naprawić, jakieś sugestie co powinno zostać zmienione?