You are on page 1of 11

Con tr v mng hai chiu trn C++?

Cc anh ch gip em bi tp ny vi. Bi tp khi to v s dng mng 2 chiu dng con tr ca con tr. C++ Code: #include #include #include #include <iostream.h> <conio.h> <string.h> <ctype.h> La chn code | n/Hin code

// Khai bao nguyen mau ham. void InitArray(int **A, int rows, int cols); void AddArray(int **A, int **B, int rows, int cols); void DisplayArray(int **A, int rows, int cols); void DeleteArray(int **A, int rows); // Ket thuc khai bao nguyen mau ham. void InitArray(int **A, int rows, int cols) { A = new int*[rows]; for (int i = 0; i < rows; i++) { A[i] = new int[cols]; for (int j = 0; j < cols; j++) { cout << "Nhap A[" << i << "][" << j << "]: "; cin >> A[i][j]; } } return; } void AddArray(int **A, int **B, int rows, int cols) { for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) A[i][j] = B[i][j]; return; } void DisplayArray(int **A, int rows, int cols) { for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) { cout << "A[" << i << "][" << j << "] = " << A[i][j] << endl; } return; } void DeleteArray(int **A, int rows) { for (int i = 0; i < rows; i++) delete [] A[i];

delete [] A; return; } // Ham main() void main() { clrscr(); int **A, **B, rows, cols; cout << "So dong : "; cin >> rows; cout << "So cot : "; cin >> cols; // Khoi tao cac ma tran cout << "Khoi tao mang A:" << endl; InitArray(A,rows,cols); cout << "Khoi tao mang B:" << endl; InitArray(B,rows,cols); // Cong hai ma tran AddArray(A,B,rows,cols); // Hien thi ket qua DisplayArray(A,rows,cols); // Giai phong bo nho DeleteArray(A,rows); DeleteArray(B,rows); return;

N c bo li l : "Thread 1 stoped: path/contro_va_mang.exe: fault: access violation at 0x4011: read of address 0x0."
vuongngocnam Xem H s cng khai Gi mt tin nhn ti vuongngocnam Tm ton b bi vit bi vuongngocnam #2 04-10-2010, 12:34 AM

tauit_dnmd
Thnh vin nhit tnh

Ngy gia nhp: 10 2009 Ni : Close All Bi vit: 1,002

Li l do hm
PHP Code:

void InitArray(int **A, int rows, int cols) { A = new int*[rows];

for (int i = 0; i < rows; i++) { A[i] = new int[cols]; for (int j = 0; j < cols; j++) { cout << "Nhap A[" << i << "][" << j << "]: "; cin >> A[i][j]; } } return;

V khi bn gi InitArray(A,rows,cols); cp pht b nh cho con tr A , nhng hm bn ch truyn vo bn sao ca A cho hm thi.Nn hm cp pht b nh cho bn sao ,ch khng fai cp cho A. Nen khi kt thc hm A vn cha c cp pht b nh. M sau bn gi hm Cng v Xut ma trn th truy xut s b li. khc phc bn sa li hm InitArray(....); nh sau: + cch 1 dng tham chiu + cch 2 dng con tr cp 3 (gi nm na l th) VD: Dng tham chiu
PHP Code:

void InitArray(int ** &A, int rows, int cols) { A = new int*[rows]; for (int i = 0; i < rows; i++) { A[i] = new int[cols]; for (int j = 0; j < cols; j++) { cout << "Nhap A[" << i << "][" << j << "]: "; cin >> A[i][j]; } } return; } Dng con tr cp 3
PHP Code:

void InitArray(int *** A, int rows, int cols) { (*A) = new int*[rows]; for (int i = 0; i < rows; i++) { (*A)[i] = new int[cols]; for (int j = 0; j < cols; j++) { cout << "Nhap A[" << i << "][" << j << "]: "; cin >> (*A)[i][j]; } } return; } __________________

http://freelancer.com

tauit_dnmd Xem H s cng khai Gi mt tin nhn ti tauit_dnmd Tm ton b bi vit bi tauit_dnmd #3 04-10-2010, 07:02 AM

vuongngocnam
Thnh vin chnh thc

Ngy gia nhp: 04 2009 Ni : H Ch Minh Bi vit: 59

cm m mod, em lng nghe v thu hiu. Cm n mod nhiu nh. Em chy li v mi th OK.
c chnh sa ln cui bi vuongngocnam : 04-10-2010 lc 10:53 AM. vuongngocnam Xem H s cng khai Gi mt tin nhn ti vuongngocnam Tm ton b bi vit bi vuongngocnam #4 04-10-2010, 11:16 AM

vuongngocnam
Thnh vin chnh thc

Ngy gia nhp: 04 2009 Ni : H Ch Minh Bi vit: 59

T lng nghe v thu hiu em c vn mun gii trnh. Em sa code theo cch ca Mode tauit_dnmd v chung trnh chy ng hon ton. Nhng thot u em vn tht mc l: - A l con tr, th khi truyn A vo hm th truyn a ch ca n ri. Cn bn sao g y na??? .

Nhng khi ngm cu mt lt em mi nhn ra chn l: - Nu nh cp pht b nh cho con tr bng ton t NEW hm main() (khng cp pht trong hm Init() ) th cch lm nh ca em trn cng l ng. - Nu nh cp pht b nh bng ton t new bn trong hm Init() th khi kt thc hm ny vng nh cho con tr cng kt thc theo. n. . V th ta phi p a ch cho

y l code em sa. C++ Code: #include #include #include #include <iostream.h> <conio.h> <string.h> <ctype.h> La chn code | n/Hin code

// Khai bao nguyen mau ham. void InitArray(int **&A, int rows, int cols); void AddArray(int **A, int **B, int rows, int cols); void DisplayArray(int **A, int rows, int cols); void DeleteArray(int **A, int rows); // Ket thuc khai bao nguyen mau ham. void InitArray(int **&A, int rows, int cols) { A = new int*[rows]; for (int i = 0; i < rows; i++) { A[i] = new int[cols]; for (int j = 0; j < cols; j++) { cout << "Nhap A[" << i << "][" << j << "]: "; cin >> A[i][j]; } } return; } void AddArray(int **A, int **B, int rows, int cols) { for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) A[i][j] += B[i][j]; return; } void DisplayArray(int **A, int rows, int cols) { for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) { cout << "A[" << i << "][" << j << "] = " << A[i][j] << endl; } return; } void DeleteArray(int **A, int rows) { for (int i = 0; i < rows; i++) delete [] A[i]; delete [] A; return; }

// Ham main() void main() { clrscr(); int **A, **B, rows, cols; cout << "So dong : "; cin >> rows; cout << "So cot : "; cin >> cols; // Khoi tao cac ma tran cout << "Khoi tao mang A:" << endl; InitArray(A,rows,cols); cout << "Khoi tao mang B:" << endl; InitArray(B,rows,cols); // Cong hai ma tran AddArray(A,B,rows,cols); // Hien thi ket qua DisplayArray(A,rows,cols); // Giai phong bo nho DeleteArray(A,rows); DeleteArray(B,rows); getch();

Bi vit hi vng gip c cc NEWBie nh em.


vuongngocnam Xem H s cng khai Gi mt tin nhn ti vuongngocnam Tm ton b bi vit bi vuongngocnam #5 04-10-2010, 01:05 PM

athena_hip
Awaiting Email Confirmation

Ngy gia nhp: 09 2010 Bi vit: 11

Chy ci ny l hiu bn cht ny: C Code: La chn code | n/Hin code #include <conio.h> #include <stdio.h> int init(int* &a) { printf("init(): address of a : 0x%0.8x\n", &a); return 0; }

int initialize(int* a) { printf("initialize(): address of a: 0x%0.8x\n", &a); return 0; } int main() { int* a = 0; printf("main(): address of a: 0x%0.8x\n", &a); init(a); initialize(a); getch(); return 0; }
athena_hip Xem H s cng khai Gi mt tin nhn ti athena_hip Tm ton b bi vit bi athena_hip #6 04-10-2010, 01:21 PM

tauit_dnmd
Thnh vin nhit tnh

Ngy gia nhp: 10 2009 Ni : Close All Bi vit: 1,002

Trch dn:

Nguyn bn c gi bi vuongngocnam T lng nghe v thu hiu em c vn mun gii trnh. Em sa code theo cch ca Mode tauit_dnmd v chung trnh chy ng hon ton. Nhng thot u em vn tht mc l: - A l con tr, th khi truyn A vo hm th truyn a ch ca n ri. Cn bn sao g y na??? . -->Xt v c ch truyn bin vo hm th ch c 2 cch truyn trong C++ -Tham tr v tham chiu. Th l s c bn thc mc rng " ,th truyn vo bng con tr l ci j ?" Mnh xin tr li rng ch c cch truyn no gi l truyn bng con tr c(cch hiu ca mnh thi nha).V: V d ta c hm:
PHP Code:

void Fx(int *a){.............} th c ch l truyn tham tr,ngha l complier s to ra 1 vng nh tm mi c cng kiu vi i s truyn vo ( y l int* ) sau copy gi tr trong i s sang cho vng nh tm ny(M y ch khc l gi tr trong i s truyn cho hm l 1 a ch ,do n s copy a ch ny sang cho vng nh tm.) .Sau hm u thao tc vi vng nh tm ny.Ch khng lm vic vi bn thn i s truyn vo.

Do khi lm vic vi con tr th nn ch rng c 2 ci khc: +Tthay i gi tr ca vng nh m con tr ang tr ti . +Hay thay i gi tr ca con tr. __________________

http://freelancer.com
tauit_dnmd Xem H s cng khai Gi mt tin nhn ti tauit_dnmd Tm ton b bi vit bi tauit_dnmd #7 04-10-2010, 03:51 PM

vuongngocnam
Thnh vin chnh thc

Ngy gia nhp: 04 2009 Ni : H Ch Minh Bi vit: 59

Cng c cng nghim ra nhiu iu. Theo em c th tm li hai iu khi truyn tham s kiu con tr vo hm: TH 1: C++ Code: La chn code | n/Hin code void Fx(int *a) { ... } Hm trn c hai kha cnh (lm c 2 vic) - Truyn tham chiu ca bin m con tr a (int *a) tr ti. - Truyn tham tr ca a ch ca con tr a. C th ni TH ny khng th thay i a ch con tr a bn trong hm m ch c th thay i gi tr ca bin m con tr a tr ti bn trong hm. Bn trong hm, nu mun thay i a ch con tr a th ta dng TH2: C++ Code: La chn code | n/Hin code void Fx(int* &a) { ... } Vic truyn tham s trong trng hp ny c ngha l truyn mt tham chiu n a ch ca con tr a. Vic ny gip ta c th thao tc bn thn con tr a bn trong hm. End
vuongngocnam

Xem H s cng khai Gi mt tin nhn ti vuongngocnam Tm ton b bi vit bi vuongngocnam #8 04-10-2010, 08:08 PM

tamthientai

Ngy gia nhp: 02 2010 Bi vit: 69

Thnh vin chnh thc

Trch dn:

Nguyn bn c gi bi vuongngocnam Cng c cng nghim ra nhiu iu. Theo em c th tm li hai iu khi truyn tham s kiu con tr vo hm: TH 1: C++ Code:

La chn code | n/Hin code void Fx(int *a) { ... } Hm trn c hai kha cnh (lm c 2 vic) - Truyn tham chiu ca bin m con tr a (int *a) tr ti. - Truyn tham tr ca a ch ca con tr a. hnh nh khng truyn tham tr ca a ch con tr a. Mun truyn a ch con tr a phi dng C++ Code: La chn code | n/Hin code void Fx(int **a) { ... } hoc C++ Code: La chn code | n/Hin code void Fx(int *&a) { ... }
Trch dn:

Nguyn bn c gi bi athena_hip Chy ci ny l hiu bn cht ny: C Code: #include <conio.h> #include <stdio.h> La chn code | n/Hin code

int init(int* &a) { printf("init(): address of a : 0x%0.8x\n", &a); return 0; } int initialize(int* a) { printf("initialize(): address of a: 0x%0.8x\n", &a); return 0; } int main() { int* a = 0; printf("main(): address of a: 0x%0.8x\n", &a); init(a); initialize(a); getch(); return 0; } => Cch vit ca bc em nhn khng wen lm em thc mc ,sao trong hm printf() bc khng dng %p in ra a ch m vit kh hiu qu :( ---Thn-- c chnh sa ln cui bi tamthientai : 04-10-2010 lc 08:43 PM. tamthientai Xem H s cng khai Gi mt tin nhn ti tamthientai Tm ton b bi vit bi tamthientai #9 04-10-2010, 08:48 PM

tauit_dnmd

Thnh vin nhit tnh

Ngy gia nhp: 10 2009 Ni : Close All Bi vit: 1,002

Ko c j ni . __________________

http://freelancer.com
tauit_dnmd Xem H s cng khai Gi mt tin nhn ti tauit_dnmd Tm ton b bi vit bi tauit_dnmd #10 05-10-2010, 07:50 PM

Banned

Ngy gia nhp: 01 2010 Ni : ! Bi vit: 1,829

Trch dn:

Nguyn bn c gi bi tamthientai => Cch vit ca bc em nhn khng wen lm em thc mc ,sao trong hm printf() bc khng dng %p in ra a ch m vit kh hiu qu :( ---Thn--ng vy; cc bn khc c th qua Topic ny: http://forums.congdongcviet.com/showthread.php?t=36528 tham kho thm v vn ny!

You might also like