[ create a new paste ] login | about

Link: http://codepad.org/EdEjXoPN    [ raw code | output | fork | 1 comment ]

C, pasted on Dec 12:
#include<stdio.h>
#include<conio.h>
#include<math.h>

struct Diem
{
	float x;
	float y;
};
typedef struct Diem DIEM;

void NhapDiem(DIEM &);
void XuatDiem(DIEM);

float TinhKhoangCachGiua2Diem(DIEM, DIEM);

void NhapDiem(DIEM &a)
{
	printf("\nNhap x: ");
	scanf("%f", &a.x);

	printf("\nNhap y: ");
	scanf("%f", &a.y);
}

void XuatDiem(DIEM a)
{
	printf("<%.2f, %.2f>", a.x, a.y);
}

float TinhKhoangCachGiua2Diem(DIEM a, DIEM b)
{
	return sqrt(pow((b.x - a.x), 2) + pow((b.y - a.y), 2));
}

struct TamGiac 
{
	DIEM A;
	DIEM B;
	DIEM C;
};
typedef struct TamGiac TAMGIAC;
void NhapTamGiac(TAMGIAC &);
void XuatTamGiac(TAMGIAC);

bool KiemTraCoPhaiTamGiac(TAMGIAC);
float TinhChuViTamGiac(TAMGIAC);
float TinhDienTichTamGiac(TAMGIAC);

DIEM TimToaDoTrongTamTamGiac(TAMGIAC);

DIEM TimDinhCoHoanhDoLonNhat(TAMGIAC);
DIEM TimDinhCoTungDoNhoNhat(TAMGIAC);

float TinhKhoangCachTuPToi3Dinh(TAMGIAC, DIEM);
bool KiemTra1DiemCoNamTrongTamGiac(TAMGIAC, DIEM);

int ChoBietDangTamGiac(TAMGIAC);

bool KiemTraCoPhaiTamGiac(TAMGIAC a)
{
	float AB = TinhKhoangCachGiua2Diem(a.A, a.B);
	float BC = TinhKhoangCachGiua2Diem(a.B, a.C);
	float AC = TinhKhoangCachGiua2Diem(a.A, a.C);

	if(AB + BC <= AC || AB + AC <= BC || AC + BC <= AB)
		return false;
	return true;
}
void NhapTamGiac(TAMGIAC &a)
{
	int Check;
	do{
		printf("\nNhap dinh A: ");
		NhapDiem(a.A);

		printf("\nNhap dinh B: ");
		NhapDiem(a.B);

		printf("\nNhap dinh C: ");
		NhapDiem(a.C);
		Check = KiemTraCoPhaiTamGiac(a);

		if(Check == false)
		{
			printf("\n3 diem khong tao thanh tam giac. Xin kiem tra lai !");
		}

	}while(Check == false);

}

void XuatTamGiac(TAMGIAC a)
{
	printf("(<%.2f, %.2f>, <%.2f, %.2f>, <%.2f, %.2f>)", a.A.x, a.A.y, a.B.x, a.B.y, a.C.x, a.C.y);
}

float TinhChuViTamGiac(TAMGIAC a)
{
	float AB = TinhKhoangCachGiua2Diem(a.A, a.B);
	float BC = TinhKhoangCachGiua2Diem(a.B, a.C);
	float AC = TinhKhoangCachGiua2Diem(a.A, a.C);

	return AB + BC + AC;
}

float TinhDienTichTamGiac(TAMGIAC a)
{
	float AB = TinhKhoangCachGiua2Diem(a.A, a.B);
	float BC = TinhKhoangCachGiua2Diem(a.B, a.C);
	float AC = TinhKhoangCachGiua2Diem(a.A, a.C);
	float P = TinhChuViTamGiac(a) / 2;

	return sqrt(P * (P - AB) * (P - AC) * (P - BC));
}

DIEM TimToaDoTrongTamTamGiac(TAMGIAC a)
{
	DIEM G;
	G.x = (a.A.x + a.B.x + a.C.x) / 3;
	G.y = (a.A.y + a.B.y + a.C.y) / 3;

	return G;
}

DIEM TimDinhCoHoanhDoLonNhat(TAMGIAC a)
{
	DIEM I; // Điểm có hoành độ lớn nhất 
	I.x = a.A.x > a.B.x ? a.A.x : a.B.x;
	I.x = I.x > a.C.x ? I.x : a.C.x;

	if(I.x == a.A.x)
		I.y = a.A.y;
	else if(I.x == a.B.x)
		I.y = a.B.y;
	else if(I.x = a.C.x)
		I.y = a.C.y;
	return I;
}

DIEM TimDinhCoTungDoNhoNhat(TAMGIAC a)
{
	DIEM J;
	J.y = a.A.y < a.B.y ? a.A.y : a.B.y;
	J.y = J.y < a.C.y ? J.y : a.C.y;

	if(J.y == a.A.y)
		J.x = a.A.x;
	else if(J.y = a.B.y)
		J.x = a.B.x;
	else if(J.y = a.C.y)
		J.x = a.C.x;
	return J;
}

float TinhKhoangCachTuPToi3Dinh(TAMGIAC a, DIEM P)
{
	float PA = TinhKhoangCachGiua2Diem(a.A, P);
	float PB = TinhKhoangCachGiua2Diem(a.B, P);
	float PC = TinhKhoangCachGiua2Diem(a.C, P);
	return PA + PB + PC;
}

/*
dùng phương pháp xét vị trí điểm D so với 3 cạnh.
Điểm D nếu nằm trong tam giác nếu nó thuộc 
1 trong ba cạnh hoặc ở trên(hay bên trái) 2 cạnh và dưới (hay bên phải) 1 cạnh hoặc dưới hai cạnh và trên 1 cạnh.

Để xét điểm nằm trên hay dưới đường thẳng qua hai điểm (x1,y1), (x2,y2) ta dùng công thức sau:
Vector v1 = {x2-x1, y2-y1}
Vector v2 = {x2-xA, y2-yA}  
Tính xp = v1.x*v2.y - v1.y*v2.x  // Cross product
Nếu xp > 0  bên trên
Ngược lại Nếu xp < 0 bên dưới
Ngược lại thuộc đường thẳng
*/

float XetViTriTuongDoiGiuaDiemVaDuongThang(DIEM d1, DIEM d2, DIEM d3)
{
	return (d1.x - d3.x) * (d2.y - d3.y) - (d2.x - d3.x) * (d1.y - d3.y);
}
bool KiemTra1DiemCoNamTrongTamGiac(TAMGIAC a, DIEM D)
{
	DIEM v1 = a.A;
	DIEM v2 = a.B;
	DIEM v3 = a.C;
	bool b1, b2, b3;

	b1 = XetViTriTuongDoiGiuaDiemVaDuongThang(D, v1, v2) < 0.0f;
	b2 = XetViTriTuongDoiGiuaDiemVaDuongThang(D, v2, v3) < 0.0f;
	b3 = XetViTriTuongDoiGiuaDiemVaDuongThang(D, v3, v1) < 0.0f;

	return ((b1 == b2) && (b2 == b3));
}

int ChoBietDangTamGiac(TAMGIAC a)
{
	float AB = TinhKhoangCachGiua2Diem(a.A, a.B);
	float BC = TinhKhoangCachGiua2Diem(a.B, a.C);
	float AC = TinhKhoangCachGiua2Diem(a.A, a.C);

	int flag;
	if(AB == BC && AC == BC)
	{
		flag = 1;  // đều
	}
	else 
	{
		if(AB * AB + BC * BC == AC * AC || AC * AC + BC * BC == AB * AB || AB * AB + AC * AC == BC * BC)
		{
			flag = 2;  // vuông
		}
		if(AB == BC || AC == BC || AB == AC)
		{
			flag = 3;   // cân
		}
		else
		{
			flag = 4;   // thường
		}
	}
	return flag;
}

int main()
{
	TAMGIAC a, b;

	NhapTamGiac(a);
	XuatTamGiac(a);

	float ChuVi = TinhChuViTamGiac(a);
	float DienTich = TinhDienTichTamGiac(a);

	DIEM G = TimToaDoTrongTamTamGiac(a);

	printf("\nChu vi tam giac = %.2f", ChuVi);
	printf("\nDien tich tam giac = %.2f", DienTich);
	printf("\nToa do trong tam tam giac la <%.2f, %.2f>", G.x, G.y);


	DIEM I = TimDinhCoHoanhDoLonNhat(a);
	printf("\nDinh co hoanh do lon nhat la: ");
	XuatDiem(I);

	DIEM J = TimDinhCoTungDoNhoNhat(a);
	printf("\nDinh tung do nho nhat la: ");
	XuatDiem(J);

	float KhoangCach = TinhKhoangCachTuPToi3Dinh(a, G);
	printf("\nkhoang cach = %.2f", KhoangCach);

	int flag = ChoBietDangTamGiac(a);

	if(flag == 1)
	{
		printf("\nTam giac thuong");
	}
	else 
	{
		if(flag == 2)
		{
			printf("\nTam giac vuong ");
		}
		if(flag == 3)
		{
			printf("\nTam giac can");
		}
		else 
		{
			printf("\nTam giac thuong");
		}
	}
	
	if(KiemTra1DiemCoNamTrongTamGiac(a, G))
	{
		printf("\nDiem nam trong tam giac");
	}
	else
	{
		printf("\nDiem KHONG nam trong tam giac");
	}
	getch();
	return 0;
}


Output:
1
2
3
4
5
6
7
8
9
Line 17: error: conio.h: No such file or directory
Line 12: error: expected ';', ',' or ')' before '&' token
Line 17: error: expected ';', ',' or ')' before '&' token
Line 43: error: expected ';', ',' or ')' before '&' token
Line 46: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'KiemTraCoPhaiTamGiac'
Line 56: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'KiemTra1DiemCoNamTrongTamGiac'
Line 60: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'KiemTraCoPhaiTamGiac'
Line 70: error: expected ';', ',' or ')' before '&' token
Line 182: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'KiemTra1DiemCoNamTrongTamGiac'


Create a new paste based on this one


Comments:
posted by minh222 on Feb 3
bai 592 e thu tam giac vuong can thi khong dc vay a. Neu dung diem binh thuong thi khong sao nhung neu la goc toa do la no chuyen thanh tam giac can

reply