01/10/2018, 12:06

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

Lương Thế Hải viết 14:18 ngày 01/10/2018

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

HK boy viết 14:22 ngày 01/10/2018

void nhap(diem N)

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

vn5chau.com viết 14:18 ngày 01/10/2018

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

vn5chau.com viết 14:09 ngày 01/10/2018

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]
Dark.Hades viết 14:21 ngày 01/10/2018

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)
vn5chau.com viết 14:17 ngày 01/10/2018

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

Lương Thế Hải viết 14:20 ngày 01/10/2018

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

vn5chau.com viết 14:20 ngày 01/10/2018

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!

Dark.Hades viết 14:12 ngày 01/10/2018

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

vn5chau.com viết 14:11 ngày 01/10/2018

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!

HK boy viết 14:13 ngày 01/10/2018
void fun(int &N); // cái này là tham chiếu, dùng trong C sẽ báo lỗi

mình k hiểu cho mình xin link fb được k?

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

Lương Thế Hải viết 14:18 ngày 01/10/2018

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

Hoàng Đào Huy viết 14:18 ngày 01/10/2018

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

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;
}

Bài liên quan
0