30/09/2018, 19:19

Vấn đề về chương trình con trong C

Mình có code chương trình đổi độ sang radian với Sin (write with c) như sau:
Code C:
//INPUT DATA
void INPUT_DATA1(int x)
{
printf(“Nhap vao so Do: “);
scanf(”%d”,&x);
}
//CHANGE CERIUS TO RADIAN WITH SIN
double CONVERT_CERIUS_TO_RADIAN_SIN(double x)
{
double sin0 = 0,
sin30 = .5,
sin45 = sqrt(2)/2,
sin60 = sqrt(3)/2,
sin90 = 1,
sin180 = 0,
sin270 = -1,
sin360 = 0;
if(x == 0 || x == 30 || x == 45 || x == 60 || x == 90 || x == 180 || x == 270 || x == 360)
{
if(x == 0)
printf(“RADIAN CUA SIN_0 la: %.lf ”,sin0);
else if(x == 30)
printf(“RADIAN CUA SIN_30 la: %lf ”,sin30);
else if(x == 45)
printf(“RADIAN CUA SIN_45 la: %lf ”,sin45);
else if(x == 60)
printf(“RADIAN CUA SIN_60 la: %lf ”,sin60);
else if(x == 90)
printf(“RADIAN CUA SIN_90 la: %.lf ”,sin90);
else if(x == 180)
printf(“RADIAN CUA SIN_180 la: %.lf ”,sin180);
else if(x == 270)
printf(“RADIAN CUA SIN_270 la: %.lf ”,sin270);
else if(x == 360)
printf(“RADIAN CUA SIN_360 la: %.lf ”,sin360);
}
}
int main()
{
double x;
INPUT_DATA1(x);
CONVERT_CERIUS_TO_RADIAN_SIN(x);
getch();
}

Cho mình hỏi tại sao khi gọi INPUT_DATA1(x);CONVERT_CERIUS_TO_RADIAN_SIN(x); với tham số truyền vào là x thì khi thực thi chương trình và cho nhập vào số độ thì nó không view kết quả.Có ai biết tại sao ko?

Quân viết 21:32 ngày 30/09/2018

Xem lại về reference trong c nhé

kien tran viết 21:27 ngày 30/09/2018

bài tập kinh điển Bạn thử viết hàm đổi chỗ 2 số trong C rồi gọi lại trong hàm main xem
Khí giải quyết được bài này thì tự nhiên bạn sẽ hiểu

Quốc Lê viết 21:35 ngày 30/09/2018

Hỏi ngu một chút nha #kien8995. Viết hàm đổi chỗ hai số trong C tức là hoán vị 2 số sao?

Quốc Lê viết 21:33 ngày 30/09/2018

Bạn có thể giải thích rõ được ko? Mình học trong giáo trình Aptech rồi tự lên ý tưởng nhưng còn non lắm khi sử dụng hàm…

kien tran viết 21:22 ngày 30/09/2018

đúng rồi bạn, viết hàm hoán vị 2 số a.b

ví dụ:

int main() {
   int a = 3, b = 5;
   printf("%d%d", a, b);
   HoanVi(a,b); 
   printf("%d%d", a, b);
   return 0;
}
Quốc Lê viết 21:24 ngày 30/09/2018

Cảm ơn bạn! Mình sẽ thử xem sau.

Bui Tien Loc viết 21:32 ngày 30/09/2018

thực ra vấn đề này là do truyền tham trị chứ không phải tham số. nghĩa là khi ra khỏi hàm con thì giá trị nó lại như cũ.
truyền tham số trong c thì phải dùng con trỏ, và thầy mình không chơi vậy, thầy mình chuyển thành bên c++ luôn
bằng cách sửa 1 chút cho hàm : vd hàm đổi 2 chữ số đi
mình sẽ đổi :
void Swap(int a, int b )
thành :
void Swap(int &a, int &b )
2 cái này nó sẽ cho ra 2 kết quả khác nhau

Quốc Lê viết 21:30 ngày 30/09/2018

Hiểu rồi.Cảm ơn bạn!

kien tran viết 21:32 ngày 30/09/2018

void Swap(int &a, int &b )

đây là truyền theo tham chiếu chứ không phải truyền theo con trỏ nhé bạn

Quốc Lê viết 21:24 ngày 30/09/2018

Đoạn code ở trên chỉ là 1 phần nằm trong projects của mình. Còn có phần giải phương trình lượng giác nữa.Dù sao cảm ơn 2 bạn đã giúp mình giải quyết được 1 vấn đề đơn giản mà suốt 1 tháng mình không giải quyết được.

Bài liên quan
0