Wiem że większość używa new i delete i może utrudniam sobie życie ale chciałem to zrobić właśnie w taki sposób. Tworzę tablice dynamiczne jedno i dwuwymiarowe. Chciałbym uprościć maina - dlatego tworzenie tablic, usuwanie ich oraz wypisywanie chciałem wyciągnąć do osobnych funkcji. Już myślałem że to pójdzie ale coś mi się krzaczy.
#include <stdio.h>
#include <stdlib.h>
double * stworz_macierz(int wymiar){
int i;
double *macierz = (double *) malloc (wymiar *sizeof(double));
for (i=0; i<wymiar; i++);
macierz[i]=0;
return macierz;
}
double ** stworz_macierz_2(int wymiar_1, int wymiar_2){
int i,j;
double **macierz;
macierz = (double **) malloc (wymiar_1*sizeof(double *));
for(i=0; i<wymiar_1; i++){
macierz[i] = (double *) malloc (wymiar_2*sizeof(double));
}
for (i=0; i<wymiar_1;i++){
for (j=0; j<wymiar_2; j++){
macierz[i][j]=0;
}
}
return macierz;
}
void wypisz(double *macierz, int wymiar,char znak);
void wypisz_2(double **macierz, int wymiar_1, int wymiar_2, char znak);
void usun(double *macierz){
free(macierz);
}
void usun_2(double **macierz, int wymiar){
int i;
for(i=0; i<wymiar; i++){
free(macierz[i]);
}
free(macierz);
}
int main(){
double **A,*B;
int n,j;
printf("Podaj n - wymiar.\n");
scanf("%d", &n);
A = stworz_macierz_2(n,n);
B = stworz_macierz(n);
wypisz_2(A,n,n,'A');
wypisz(B,n,'B');
usun_2(A,n);
usun(B);
return 0;
}
Wypisanie chodzi, tworzenie połowicznie (działało jak tworzyłem tablice, ale jak dodałem kod wypełniający zerami to o dziwo tablice jednowymiarowe mi się krzaczą) ale usuwanie chyba w ogóle nie usuwa bo komp mi zmula. Pewnie zamiast usuwać daną tablicę to wykonuję free na jej kopii czy coś takiego. Podejrzewam że problem to zamiana * na & czy coś tego typu ale google zasypuje mnie czym innym bo pewnie źle szukam. Help głównie odnośnie tego usuwania tablicy dynamicznej przez funkcję.