VD:
Nhập 3 số nguyên:
Viết hàm để nhập 3 số nguyên này vào 3 biến trong chương trình chính.
- Hàm có tên là nhapso,nhận 3 đối số truyền theo tham chiếu (by-reference).
- Hàm này mời người dùng nhập vào 3 số nguyên.
- Lưu 3 số đó vào 3 biến a, b, c trong chương trình chính để sử dụng cho các câu sau.
Ví dụ : Khi hàm được gọi sẽ hoạt động như sau:
Moi ban nhap so thu nhat : 6 (enter)
Moi ban nhap so thu hai : 21 (enter)
Moi ban nhap so thu hai : 15 (enter)
trên là code viết thử nhưng vẫn chết
Mời các giáo sư thử sờ tay vào vấn đề này xem , sửa code trên luôn nhé
-----------------------------------------------------------------------
đây là đoạn code này , mọi người xem để khỏi quên nhé
void nhapso(int *a,int *b,int *c)
{
printf("\n Moi ban nhap vao so thu nhat :");
scanf("%d",a);
printf("\n Moi ban nhap vao so thu hai :");
scanf("%d",b);
printf("\n Moi ban nhap vao so thu ba :");
scanf("%d",c);
}
Trong hàm main đổi thành
case 1:{nhapso(&a,&b,&c);break;}
{
printf("\n Moi ban nhap vao so thu nhat :");
scanf("%d",a);
printf("\n Moi ban nhap vao so thu hai :");
scanf("%d",b);
printf("\n Moi ban nhap vao so thu ba :");
scanf("%d",c);
}
Trong hàm main đổi thành
case 1:{nhapso(&a,&b,&c);break;}
http://pastebin.com/j6ezLV1Z
ReplyDeleteHải xem lại code đê có chạy được đâu
ReplyDeleteđừng chủ quan ,
phần này là 1 trong những phần khó cùng với pointer đó
lỗi j dell nói ai biết mà sửa
ReplyDeletechạy đc t mới post lên (t dùng c free 4.1)
di học cái kiểu shit j thế Chung.
ReplyDeleteint n,a,b,c,x,y,z;
nhapso(a,b,c);
chưa khởi tạo tham số cho a,b,c. a,b,c là tham số của hàm, nó phải được khởi tạo trước khi gọi hàm chứ không phải là trong hàm. Cái hàm này ko cần có tham số nếu mày scanf bên trong hàm !
dell hiểu Hưng nói j
ReplyDeletechưa khởi tạo giá trị cho tham số a,b,c :">
ReplyDeletevẫn dell hiểu Hưng nói j.
ReplyDeletecách m làm là khai báo biến toàn cục trước khi khởi tạo hàm, nhưng mà hình như nó đang học về tham trị với tham chiếu mà làm kiểu đấy thì nói chuyện giề
à ko, cái đoạn kia tao copy từ code của nó ra mà :))
ReplyDeleteChung xem cái này là ví dụ đơn giản về tham chiếu
http://pastebin.com/JsZVBXHa
nếu có ít lý thuyết thì càng tốt , cho nó bài bản
ReplyDeletehờ hờ
*x=1245008 *y=1245004
ReplyDeletex=70 y=50Press any key to continue . . .
Đấy là kết quả của đoạn của Hưng đấy
thế có đúng ý tưởng của Hưng không
sau khi nhìn mãi mới ra, tớ hiểu là cái phần tham chiếu này mấu chốt 1 phần là ở lúc khai báo tên hàm cùng với địa chỉ của tham số chứ ko phải là tham số đơn thuần .
ReplyDeletevd : phải là int minmax( &a, &b, &c )
chứ ko phải là int minmax ( int a, int b, int c)
đúng ko mọi người ?
dùng địa chỉ của biến để làm tham số cho hàm. Khi thay đổi các con trỏ(trỏ con này sang giá trị kia) thì in ra thấy các giá trị bị thay đổi. Thực chất ta chỉ đảo con trỏ thôi
ReplyDeletecháu hiểu rùi! nhưng trong 1 vài trường hợp phức tạp thì vẫn chưa thể sửa đc sao cho đúng ! :(
ReplyDeleteCode thằng Hưng viết kiểu khỉ j thế @@
ReplyDeleteDùng tham chiếu cần thiết cho hàm nào thay đổi giá trị của biến tham số truyền vào, bởi dùng tham trị thì sẽ ko có tác dụng, biến chỉ thay đổi giá trị trong hàm, ra khỏi hàm biến lại trở về giá trị ban đầu.
Hàm minmax kia thì ko cần phải sử dụng đến tham chiếu.
Bài thằng Chung t viết trên Geany thì đây (ko hiểu sao để .c chạy bt, .cpp toàn báo compile failed nhưng vẫn chạy). Lưu ý là trong C ko có tham chiếu nên phải dùng con trỏ (C++ mới có tham chiếuiếu)
http://pastebin.com/zgNP3wgE
Viết trên C++ thì đây (compile failed nhưng vẫn chạy :)))
http://pastebin.com/b5gnfAxp
Thằng Chung chạy lỗi chỗ nào thì phải nói, cứ bảo lỗi thì ai biết ở đâu mà sửaửa
http://pastebin.com/xYa2nwHX
ReplyDeletetrên là cả bài code , tao lấy phần chạy của Hải ghép vào ,
nhưng trên C-free vẫn chết ở cái hàm nhapso
mọi người chạy thử và cho ý kiến nhé
t vẫn chạy bt chả vấn đề j
ReplyDeleteđã bảo lỗi j thì nói ra cứ kêu chết chết ai mà biết @@
ô , thế thì sorry bạn Hải nhé , mình tưởng bạn không chạy được giống mình =))
ReplyDelete----------------------------------------------
Nhap vao 1 so de dua ra nua chon phu hop
Voi 1 la ;Nhap 3 so nguyen
Voi 2 la :so lon nhat va so lon nhat trong 3 so
Voi 3 la :uoc so chung cua 3 so do
Voi 4 la :Hieu binh phuong cua so lon nhat va so be nhat
Voi 5 la :Chuong trinh thoat
Nhap vao 1 lua chon di !
1
Moi ban nhap vao so thu nhat :2
Moi ban nhap vao so thu hai :3
Moi ban nhap vao so thu ba :4
Nhap vao 1 lua chon di !
2
Trong 3 so 256 , 1 va 4265820 :
So lon nhat : 4265820
So nho nhat : 1
Nhap vao 1 lua chon di !
---------------------------------------
Bạn Hải nhìn đoạn kết quả trên thì biết là lỗi gì rồi chứ nhỉ
M compile = j thế Chung
ReplyDeleteT dùng G++ chuẩn rồi vẫn thấy chạy bt chả lỗi liếc j
Nhìn bài m cũng dell hiểu lỗi j luôn
Viết lại hàm nhập chạy thử:
ReplyDeletevoid nhapso(int *a,int *b,int *c)
{
printf("\n Moi ban nhap vao so thu nhat :");
scanf("%d",a);
printf("\n Moi ban nhap vao so thu hai :");
scanf("%d",b);
printf("\n Moi ban nhap vao so thu ba :");
scanf("%d",c);
}
Trong hàm main đổi thành
case 1:{nhapso(&a,&b,&c);break;}
rất cảm ơn bạn Hiệp đã ra tay giúp đỡ , câu trả lời đã xong , mọi người nhớ tham khảo nhé
ReplyDeletehí hí
Hải dùng lại compile đê , sai mà vẫn chạy được thì hậu quả rất nguy hiểm
ReplyDeleteDm sao bảo ko đc dùng con trỏ, cái cách này t đã chỉ cho ở trên rồi còn j nữa, nó dell phải là tham chiếu đâu.
ReplyDeleteCòn compile t dùng là chuẩn rồi, cũng chỉ riêng thấy mỗi m chạy sai thôi.
Nhờ vả mà ăn nói khó nghe vãi Hùng, lần sau có ứt t thèm giúp nhé.
ối trời ơi
ReplyDeletesorry bạn Hải nhé , cái cm trên của mày có 2 bài code mà tao không để ý
------------------------
đính chính lại nhé , Hải cũng làm đúng và khác Hiệp
@@mà sao mày thiếu bình tĩnh thế , lâu không gặp ấy ấy hả =))