Tính khoảng cách 2 điểm trong không gian

    
#include <stdio.h>
#include <math.h>

typedef struct Diem
{
	int x, y, z;
} diem;

void nhap(diem N)
{
	printf("Nhap toa do cua diem %c", N);
	printf("Toa do x: ");
	scanf("%d", &N.x);
	printf("Toa do y: ");
	scanf("%d", &N.y);
	printf("Toa do z: ");
	scanf("%d", &N.z);
}

double tinhKhoangCach(diem X, diem Y)
{
	double kc;
	kc = sqrt(pow((X.x - Y.x), 2) + pow((X.y - Y.y), 2) + pow((X.z - Y.z), 2));
	return kc;
}

int main()
{
	diem A, B;
	nhap(A);
	nhap(B);
	printf("Khoang cach giua A va B = %lf", tinhKhoangCach(A, B));
	return 0;
}

mọi người ghé qua cho e hỏi bài e làm tính khoảng cách 2 điểm trong không gian code như e tại sao kết quả lại sai? mà cái chỗ

printf("Nhap toa do cua diem %c", N);

tại sao lại không in ra được Điểm A, hay B và dùng như thế nào để hiển thị ra

    nhap(A);
    nhap(B);

e dùng hàm nhap va hàm tinhKhoangCach để nếu mà tính khoảng cách 2 điểm khác thì không phải viết lại! Mọi người giúp với! tks

Ý bạn là sao? Sai như thế nào, không in ra được điểm A hay B nghĩa là sao?

2 Likes

Cái này phải nạp &N.

1 Like

mình làm &N như bạn thì DEV C++ báo lỗi, làm như mình thì lại ok

void nhap(diem N)

bạn thử chạy xem, rồi reply lại mình nha! tks

bạn chạy thử xem, mình chạy được nhưng kết quả ra thì sai!
chỗ

printf("Nhap toa do cua diem %c", N);

chỗ này thì nó ra như này

Nhap toa do cua diem [ký tự lằng nhằng]

Xem lại đang dùng compiler C hay C++.
Sửa thành tham biến con trỏ là được:

void nhap(diem *N)
2 Likes

e dùng complier là TDM-GCC 4.9.2 64-bit Release
cái này có ổn k a? nếu k ổn a cho ý kiến ạ
mà cho e xin link fb của a, có gì e tiện liên lạc

Không đúng kiểu dữ liệu thì nó chả ra linh tinh. Bạn nên xem lại kiến thức cơ bản

2 Likes

là sao bạn chỉ dẫn kĩ hơn xem nào! Hướng dẫn sửa code cho mình với. Lý do tại sao lại sửa như vậy!

Bạn dùng GCC thì lúc gọi compiler thêm tag
-std=c++11 vào, nếu không nó sẽ mặc định project là C và build C, trong C không có tham chiếu nên sẽ lỗi

1 Like

mình code trên Dev C++ sử dụng Windows sao lại có cái -std=c++11[quote=“Dark.Hades, post:10, topic:56633”]
-std=c++11 vào, nếu không nó sẽ mặc định project là C và build C, trong C không có tham chiếu nên sẽ lỗi
[/quote]
mình k hiểu cho mình xin link fb được k? code mình vẫn chạy được nhưng lỗi kết quả ý bạn là như thế à?
mà tham chiếu trong C như thế nào? bạn sửa code lại cho mình xem nào. để mình dễ so sánh và học hơn!

void fun(int &N); // cái này là tham chiếu, dùng trong C sẽ báo lỗi

Góp ý nhỏ cho bạn: không hiểu thì cmt hỏi tiếp vào đây cũng được mà, sao phải xin fb :v

Bạn đọc lại kiến thức cơ bản ở phần %c rồi ngẫm lại sẽ tự thấy sai ở đâu

1 Like

void nhap(diem &N) thêm & như này là được.
còn cái này diem %c, N thì sai. N là struct chứ không phải là char mà dùng %c. dòng printf này bỏ đi. Hoặc là tạo thêm 1 dòng #define trong struct để lưu tên (A,B) rồi printf theo tên :slight_smile:

void nhap(diem &N,char name)
{
printf(“Nhap toa do cua diem %c: \r\n”, name);
printf(“Toa do x: “);
scanf(”%d”, &N.x);
printf(“Toa do y: “);
scanf(”%d”, &N.y);
printf(“Toa do z: “);
scanf(”%d”, &N.z);
}
int main()
{
diem A, B;
nhap(A,‘A’);
nhap(B,‘B’);
printf(“Khoang cach giua A va B = %lf”, tinhKhoangCach(A, B));
return 0;
}

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?