Bài tập Pascal – Biến có Cấu trúc
Biến có cấu trúc - Records
TD: Mỗi ñiểm trong hình học 2 chiều có toạ ñộ (x, y)
Khai báo biến trong Pascal như sau:
Type Diem = Record
x, y: Integer;
End;
Var
A, B: Diem;
Bài tập 01 – Tìm ñộ dài của một ñoạn thẳng AB:
Độ dài của ñoạn thẳng AB với ñiểm A có toạ ñộ xA, yA và ñiểm B có toạ ñộ xB, yB ñược tính như sau:
തതതത = ඥሺݔ െ ݔ ሻଶ ሺݕ െ ݕ ሻଶ
ܤܣ
Chương trình tìm ñộ dài của ñoạn thẳng AB ñược viết như sau:
Type Diem = Record
x, y: Integer; {Nếu các toạ ñộ chỉ là số nguyên}
End;
Var
A, B: Diem;
DoDai: Real;
Begin
WriteLn('Ban hay nhap toa do cua diem thu nhat');
ReadLn(A.x, A.y);
WriteLn('Ban hay nhap toa do cua diem thu hai');
ReadLn(B.x, B.y);
DoDai := SQRT(SQR(A.x - B.x) + SQR(A.y - B.y));
{SQRT = Căn bậc 2, SQR = Bình phương}
WriteLn('Do dai doan thang AB la ', DoDai:5:2);
ReadLn;
End.
Bài tập 02 – Tìm toạ ñộ trung ñiểm của một ñoạn thẳng AB:
Toạ ñộ trung ñiểm I của ñoạn thẳng AB là xI, yI ñược tính như sau:
xI =
ሺ௫ಲ ା௫ಳ ሻ
ଶ
và
yI =
ሺ௬ಲ ା௬ಳ ሻ
ଶ
Type Diem = Record
x, y: Real; {Toạ ñộ trung ñiểm là kết quả phép /2 nên có thể là số thực}
End;
Var
Biên soạn: Th.s Nguyễn Anh Việt
Trang 1
Bài tập Pascal – Biến có Cấu trúc
A, B, I: Diem;
Begin
WriteLn('Ban hay nhap toa do cua diem thu nhat');
ReadLn(A.x, A.y);
WriteLn('Ban hay nhap toa do cua diem thu hai');
ReadLn(B.x, B.y);
I.x := (A.x + B.x) / 2;
I.y := (A.y + B.y) / 2;
WriteLn('Toa do trung diem doan AB la (', I.x:5:2, ', ', I.y:5:2, ')');
ReadLn;
End.
Bài tập 03 – Danh sách học sinh:
Nhập vào danh sách học sinh gồm có Họ, Tên, Điểm TB.
* Sắp thứ tự danh sách theo ñiểm TB của học sinh
* In ra danh sách các học sinh có Điểm TB >= 5
* In ra danh sách các học sinh có Điểm TB < 5 (tự làm bài)
* In ra danh sách các học sinh có ñiểm TB cao nhất
* In ra danh sách các học sinh có ñiểm TB thấp nhất (tự làm bài)
Type HocSinh = Record
Ho, Ten: String;
DiemTB: Real;
End;
Var
n, i, j: Integer;
HS: Array [1..10] of HocSinh;
t1, Max: Real;
t2: String;
Begin
WriteLn('Danh sach co bao nhieu hoc sinh');
ReadLn(n);
{Nhap DS}
For i:=1 to n do begin
WriteLn('Hoc sinh thu ', i);
Write('Ho : ');
ReadLn(HS[i].Ho);
Write('Ten : ');
ReadLn(HS[i].Ten);
Write('Diem TB: '); ReadLn(HS[i].DiemTB);
Biên soạn: Th.s Nguyễn Anh Việt
Trang 2
Bài tập Pascal – Biến có Cấu trúc
WriteLn;
End;
{In DS}
WriteLn('DS Hoc sinh');
For i:=1 to n do begin
Write(HS[i].Ho, ' ');
Write(HS[i].Ten, ' ');
Write(HS[i].DiemTB:3:2);
WriteLn;
End;
{Sap thu tu}
For i:=1 to n-1 do
For j:=i+1 to n do
If HS[i].DiemTB > HS[j].DiemTB then begin
t2 := HS[i].Ho;
{Hoan chuyen Ho}
HS[i].Ho := HS[j].Ho;
HS[j].Ho := t2;
t2 := HS[i].Ten;
HS[i].Ten := HS[j].Ten;
HS[j].Ten := t2;
{Hoan chuyen Ten}
t1 := HS[i].DiemTB;
{Hoan chuyen Diem TB}
HS[i].DiemTB := HS[j].DiemTB;
HS[j].DiemTB := t1;
End;
{In DS da sap thu tu}
WriteLn('DS Hoc sinh da sap thu tu');
For i:=1 to n do begin
Write(HS[i].Ho, ' ');
Write(HS[i].Ten, ' ');
Write(HS[i].DiemTB:3:2);
WriteLn;
End;
{In DS HS co diem TB >= 5}
WriteLn('DS Hoc sinh co diem TB >= 5');
For i:=1 to n do begin
If HS[i].DiemTB < 5 then Continue;
Write(HS[i].Ho, ' ');
Write(HS[i].Ten, ' ');
Write(HS[i].DiemTB:3:2);
WriteLn;
End;
Biên soạn: Th.s Nguyễn Anh Việt
Trang 3
Bài tập Pascal – Biến có Cấu trúc
{Tim diem TB cao nhat}
Max := HS[1].DiemTB;
For i:=2 to n do
If Max < HS[i].DiemTB then Max := HS[i].DiemTB;
{In DS HS co diem TB cao nhat}
WriteLn('DS Hoc sinh co diem TB cao nhat');
For i:=1 to n do
If HS[i].DiemTB = Max then begin
Write(HS[i].Ho, ' ');
Write(HS[i].Ten, ' ');
Write(HS[i].DiemTB:3:2);
WriteLn;
End;
ReadLn;
End.
Biên soạn: Th.s Nguyễn Anh Việt
Trang 4