#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
/*
Napisz funkcje które tworzą macierz o wymiarze nxn wypełnioną wartościami i. Funkcja 'createNewMatrix' jako argument przyjmuje wskaźnik do tablicy dwuwymiarowej.
Program ma następnie wypisać zawartość zwróconej tablicy.
*/
int** createMatrix(int n, int i);
void createNewMatrix(int*** tab, int n, int i);
int main(int argc, char *argv[]) {
int m;
int k;
int n;
int i;
printf("Jak dużą tablicę utworzyć? ");
scanf("%d", &n);
printf("Podaj jakimi liczbami wypełnić obie tablice: ");
scanf("%d", &i);
printf("\n");
int **tab;
tab=createMatrix(n,i);
for(m=0;m<n;m++) {
for(k=0;k<n;k++) printf("%d ",tab[m][k]);
printf("\n");
}
printf("\n");
int **tab2;
createNewMatrix(&tab2,n,i);
for(m=0;m<n;m++) {
for(k=0;k<n;k++) printf("%d ",tab2[m][k]);
printf("\n");
}
return 0;
}
int** createMatrix(int n, int i) {
int m;
int k;
int **tab = (int**)malloc(n*sizeof(int*));
for(m=0;m<n;m++) tab[m]=(int*)malloc(n*sizeof(int));
for(m=0;m<n;m++) {
for(k=0;k<n;k++) tab[m][k]=i;
}
return tab;
}
void createNewMatrix(int*** tab, int n, int i) {
int m;
int k;
*tab=(int**)malloc(n*sizeof(int*));
for(m=0;m<n;m++) {
(*tab)[m]=(int*)malloc(n*sizeof(int));
}
for(m=0;m<n;m++) {
for(k=0;k<n;k++) (*tab)[m][k]=i;
}
}
druga funkcja przyjmuje wskaznik do tablicy dwuwymiarowej jako argument, ale czy daloby sie to zrobic, aby ta funkcja przyjmowala po prostu tablice dwuwymiarowa?
Jaki sens przysylac wskaznik do tablicy, nie mozna po prostu tablicy?