Titlul: alocare dinamica Scris de: dragu stelian din Ianuarie 15, 2014, 10:18:50 Buna ziua ! In codul de mai jos am incercat sa afisez o matrice alocata dinamic.
Totul merge bine pentru matrice patratice 2*2, 3*3, 4*4, samd. Cand numarul de linii difera de numarul de coloane spre exemplu pt matricea 2*3 elementul a10 (inceputul liniei a doua) este acelasi cu elementul a02 (sfarsitul primei linii). Asemenea eroare se intampla si pt matricii mai mari. Nu inteleg de ce ? Daca ma poate ajuta cineva astept sugestii. Multumesc ! #include <iostream> #include <stdlib.h> using namespace std; int main() { int n, m; cout <<"\n Numarul de linii : "; cin >>n; cout <<"\n Numarul de coloane : "; cin >>m; int (*p)[n] = (int (*)[n])malloc(m*n*sizeof(int)); for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { cout <<"\n A["<<i<<"]["<<j<<"] = "; cin >>*(*(p+i)+j); } } for (int i=0; i<n; i++) { for (int j=0; j<m; j++) cout <<"\t\t"<<*(*(p+i)+j); cout <<"\n"; } free (p); return 0; } Titlul: Răspuns: alocare dinamica Scris de: Prehari Romica din Ianuarie 15, 2014, 11:09:22 unde ai *(*(p+i)+j) scrie *(*(p+j)+i)
Titlul: Răspuns: alocare dinamica Scris de: dragu stelian din Ianuarie 15, 2014, 11:35:13 Da ai dreptate.
Multumesc de raspuns, dar imi poti spune de ce codul ruleaza cu *(*(p+j)+i) si nu cu *(*(p+i)+j) ? |