PDA

View Full Version : [Q] Cần giúp đỡ, GẤP !



nightmare
19-12-2002, 13:04
Mọi người xem dùm chương trình rất đơn giản này đi
Cho người dùng nhập vào tọa độ 4 đỉnh của 1 tứ giác (các điểm nhập vào không theo thứ tự), sắp xếp lại theo thứ tự đã cho.
Hàm sắp xếp có sai chỗ nào không mà nó không sắp xếp được.
Bài tập này gấp lắm, các bạn giúp dùm nha.


typedef struct
{
DIEM point;
int x;
int y;
}Strt;
Strt S[4];

//Nhap vao 4 dinh bat ky cua tu giac
void Nhap_toado(DIEM &pp1,DIEM &pp2,DIEM &pp3,DIEM &pp4)
{
cout<<"Nhap toa do 4 dinh cua tu giac:"<<endl;
cout<<"Dinh thu 1:"<<endl;
pp1.Nhap();
cout<<"Dinh thu 2:"<<endl;
pp2.Nhap();
cout<<"Dinh thu 3:"<<endl;
pp3.Nhap();
cout<<"Dinh thu 4:"<<endl;
pp4.Nhap();
}

//Ham dao vi tri 2 phan tu trong mang S
void Swap(Strt &S1,Strt &S2) //???
{
Strt Tam;

Tam.point=S1.point;
Tam.x=S1.x;
Tam.y=S1.y;

S1.point=S2.point;
S1.x=S2.x;
S1.y=S2.y;

S2.point=Tam.point;
S2.x=Tam.x;
S2.y=Tam.y;

}

//ham sap thu tu cac phan tu trong mang S
void Sort(Strt S[4])
{
for(int i=0;i<3;i++)
for(int j=i+1;j<4;j++)
if(S[i].x>S[j].x)
Swap(S[i],S[j]);
}


//Sap xep thu tu cac dinh
void Sap_xep(DIEM &pp1,DIEM &pp2,DIEM &pp3,DIEM &pp4)
{
S[0].x=pp1.Get_x();
S[0].y=pp1.Get_y();
S[0].point=pp1; // gia su da co operator =

S[1].x=pp2.Get_x();
S[1].y=pp2.Get_y();
S[1].point=pp1;

S[2].x=pp3.Get_x();
S[2].y=pp3.Get_y();
S[2].point=pp1;

S[3].x=pp4.Get_x();
S[3].y=pp4.Get_y();
S[3].point=pp1;

//sap xep theo thu tu tang dan cua hoanh do
Sort(S);

/*trong 2 dinh co hoanh nho hon chon dinh co tung nho hon la dinh thu 1
trong 2 dinh co hoanh lon hon chon dinh co tung nho hon la dinh thu 4*/

//dinh co tung do nho hon la dinh thu 1
if(S[0].y>S[1].y) Swap(S[0],S[1]);
//dinh co tung do nho hon la dinh thu 4
if(S[3].y>S[2].y) Swap(S[3],S[4]);

//gan tro lai cho 4 dinh cua tu giac
pp1=S[0].point; //gia su da co operator =
pp2=S[1].point;
pp3=S[2].point;
pp4=S[3].point;
}


void main()
{
DIEM pp1,pp2,pp3,pp4;
//Nhap toa do 4 dinh bat ky cua tu giac
Nhap_toado(pp1,pp2,pp3,pp4);

/* ???? */
//Sap xep thu tu cac dinh
Sap_xep(pp1,pp2,pp3,pp4);

//Xuat ra man hinh ket qua sau khi sap xep
pp1.Xuat();
pp2.Xuat();
pp3.Xuat();
pp4.Xuat();
getch();
}

nightmare
19-12-2002, 13:10
nếu muốn biên dịch thì sử dụng thêm hàm thư viện DIEM được gửi kèm theo đây