matematykaszkolna.pl
Programming Początkujacy: Jak zaalokować tablicę dwuwymiarowa dynamicznie za pomocą Funkcji Bez funkcji
13 sty 22:52
Początkujacy: Może też być macierz
13 sty 22:53
Początkujacy: W języku C
13 sty 23:00
Początkujacy: Czy mozna nadać tej tablicy jakieś wartości np. 1 2 3 5
13 sty 23:14
14 sty 01:50
Mariusz: typ **A; int m,n,k; scanf("%d %d",&n,&m); A=(typ **)malloc(n*sizeof(typ)) for(k=0;k<n;k++) A[k]=(typ *)malloc(m*sizeof(typ));
14 sty 02:37
Pytający: Mariusz, w pierwszym wywołaniu malloca powinno być malloc(n*sizeof(typ*)), alokujesz tablicę wskaźników.
14 sty 02:43
Dziadek Mróz: #include <stdio.h> #include <stdlib.h> #define X 3 #define Y 3 void matrix(int **tab, int x, int y) { tab = (int **)malloc(X * sizeof(int *)); for (size_t x=0; x<X; x++) { tab[x] = (int *)malloc(Y * sizeof(int)); for (size_t y=0; y<Y; y++) { scanf("%d", &tab[x][y]); // 0 1 2 ... 9 } } } void free_matrix(int **tab, int x) { for (size_t x=0; x<X;x++) { free(tab[x]); } free(tab); } void print_matrix(int **tab, int x, int y) { for (size_t x=0; x<X; x++) { for (size_t y=0; y<Y; y++) { printf(" %d", tab[x][y]); } printf("\n"); } /* 0 1 2 3 4 5 6 7 8 */ } int main() { int **tab; tab = (int **)malloc(X * sizeof(int *)); for (size_t x=0; x<X; x++) { tab[x] = (int *)malloc(Y * sizeof(int)); for (size_t y=0; y<Y; y++) { scanf("%d", &tab[x][y]); // 0 1 2 3 4 5 6 7 8 } } print_matrix(tab, X, Y); free_matrix(tab, X); matrix(tab, X, Y); print_matrix(tab, X, Y); free_matrix(tab, X); return 0; }
14 sty 03:48
Początkujacy: #include <stdio.h> #include <stdlib.h> void matrix(float **p,int n) { int i,j; p = (float **)malloc(n*sizeof(float *)); for(i=0;i<n;i++) { p[i]=(float *)malloc(n*sizeof(float )); for(j=0;j<n;j++) { scanf("%f",&p[i][j]); } } } void printmatrix(float **p,int n) { int i,j; p = (float **)malloc(n*sizeof(float *)); printf("Elem tablicy X:\n"); for(i=0;i<n;i++) { p[i]=(float *)malloc(n*sizeof(float )); for(j=0;j<n;j++){ printf("X[%d][%d]=%2.2f\t",i,j,p[i][j]); } printf("\n"); } } void freematrix(float **p,int n) { int i; for(i=0;i<n;i++){ free(p[i]); } free(p); } int main() { float **p; int n; printf("Podaj elem. tab: "); scanf("%d ",&n); p=(float **)malloc(n*sizeof(float *)); matrix(p,n); printmatrix(p,n); freematrix(p,n); return 0; } Chcialem zbudować z tego macierz i mi nie działa.. program prosi o podanie wartości przykładowo 1 2 3 4 a pokazuje X[0][0]=0.00 X[0][1]=0.00 X[1][0]=0.00 X[1][1]=0.00
14 sty 11:38
g: float *tab, x; int N=20, M=30; //wymiary tablicy 2D − to mogą być zmienne, stałe, parametry funkcji //alokacja tablicy N x M tab = (float*)malloc(N*M*sizeof(float)); //zakladam ze elementy w pamieci to [0,0], [0,1],..,[0,M−1],[1,0],...,[N−1,M−1] //odwolanie do elementu [i,j] x = tab[i*M+j]; //gdy tablica tab juz niepotrzebna to free(tab);
14 sty 11:52
Początkujacy: Zrobilem podobne zadanie z dynamiczna tablica jednowymiarowa, które wychodzi w funkcji main, natomiast , gdy tworze program przy pomocy 3 funkcji tworz, drukuj, freee program ten się odpala i nie zgłasza bledu, ale tablica ta nie przyjmuje wartości podanych przez użytkownika. #include <stdio.h> #include <stdlib.h> void tworz(float *p,int n) { int i; p=(float *)malloc(n*sizeof(float)); printf("Podaj elem. tablicy p:\n"); for(i=0;i<n;i++) { scanf("%f",&p[i]); } } void drukuj(float *p,int n) { int i; p=(float *)malloc(n*sizeof(float)); for(i=0;i<n;i++) { printf("X[%d]=%2.2f",i,p[i]); } } void freee(float *p,int n) { free(p); } int main() { float *p; int n; printf("Podaj liczbe el. tablicy dynamicznej: "); scanf("%d",&n); p=(float *)malloc(n*sizeof(float)); tworz(p,n); drukuj(p,n); freee(p,n); return 0; } przykładowo dla n=2 X[0]=0.00 X[1]=0.00
14 sty 12:42
Początkujacy: Będę wdzięczny za pomoc
14 sty 12:42
Początkujacy: float* tworz(float *p,int n) { int i; p=(float *)malloc(n*sizeof(float)); printf("Podaj elem. tablicy p:\n"); for(i=0;i<n;i++) { scanf("%f",&p[i]); } return p; } To jedyny sposób aby zwrocic tablice dynamiczna?
14 sty 15:57