Pascal : Kiểu dữ liệu có cấu trúc

Pascal : Kiểu dữ liệu có cấu trúc

Một số bài tập lập trình Pascal

Vấn đề 5: Kiểu dữ liệu có cấu trúc

Bài toán số 5.1:

Viết chương trình thao tác trên các điểm trên mặt phẳng (có các thành phần X, Y) :

+ Nhập thông tin về 3 điểm A, B, C. Tính diện tích của Tam giá ABC.

+ Nhập danh sách n điểm, và điểm M. Hãy xác định điểm gần điểm M nhất.

Hướng dẫn:

-          Viết hàm tính khoảng cách giữa 2 điểm A, B theo công thức:

-          Viết hàm tính diện tích tam giác ABC thông qua chu vi của tam giác:

a = KhoangCach(B, C)

b = KhoangCach(A, C)

c = KhoangCach(A, B)

      p = ( a+b+c) / 2

-         Viết hàm tìm kiểm trong danh sách điểm nhậm vào, tìm điểm X có khoảng cách từ X đến M là nhỏ nhất.

Source code chương trình:

{ 1. Khai bao cac kieu du lieu va bien can thiet }

PROGRAM ThaoTacDiem;

Uses CRT;

Type    KDIEM = RECORD

X,Y : Integer;

End;

KDSDIEM = Array[1..50] of KDIEM;

Var

DS: KDSDIEM;

n: Integer;

A, B, C, M, X: KDIEM; 

{ 2. Thu tuc nhap 3 diem A, B, C}

Procedure NhapABC( Var A, B, C: KDIEM);

Begin

Write(‘Toa do A(X, Y):’);      Readln( A.X, A.Y );

Write(‘Toa do B(X, Y):’);       Readln( B.X, B.Y );

Write(‘Toa do C(X, Y):’);       Readln( C.X, C.Y );

       End;


{ 3. Thu tuc nhap du lieu cho danh sach diem }

Procedure NhapDSDiem( Var dsdiem : KDSDIEM; Var N:Integer);

Var i:Integer;

Begin

Repeat

Write(‘Nhap so diem = ‘);

Readln(N);

Until ( N>0 ) and ( N < 51);


      For i:=1 to N do  

Begin

Write(‘Toa do X, Y:’);       Readln(dsdiem[i].X, dsdiem[i].Y);

 End;

       End;

 

{ 4. Ham tinh khoang cach giua 2 diem A, B }

Function  KhoangCach( A, B: KDIEM) : Real;

Begin

KhoangCach := Sqrt( Sqr(A.X-B.X) + Sqr(A.Y-B.Y) );

       End;

{ 5. Ham tinh dien tich tam giac A, B, C }

Function  DienTichABC( A, B, C: KDIEM) : Real;

Var   ab, bc, ca, p: Real;

Begin

ab := KhoangCach ( A, B );

bc := KhoangCach ( B, C );

ca := KhoangCach ( C, A );

p := (ab + bc + ca) / 2;

DienTichABC := Sqrt( p * (p-ab) * (p-bc) * (p-ca) );

       End; 

{ 6. Xac dinh diem gan M nhat trong danh sach n diem   }

Function  DiemGanMnhat(ds : KDSDIEM; n:Integer;M:KDIEM): KDIEM;

Var   kcMin, kc: Real;

             X: KDIEM;

             I : Integer;

Begin

      KcMin := KhoangCach(M, ds[1]);

      For i:=1 to N do  

Begin

             Kc := KhoangCach(M, ds[i]);

             If (kc >= kcMin) Then

             Begin

                         KcMin := Kc;

                         X := ds[i];

             End;

DiemGanMnhat := X;

       End;   

{    Chương trình chính;      }

BEGIN

Clrscr;

NhapABC( A, B, C );

Writeln(‘Diem tich tam giac ABC= ‘, DienTichABC(A, B, C):6:2);

NhapDSDiem( ds, N );

Write(‘Toa do M(x, y):’);         Readln(M.X, M.Y);

X := DiemGanMnhat(ds, N, M);

Writeln(‘Diem gan M nhat la (‘, X.x,’ , ’ , X.y,’ ) trong cac diem nhap vao. ’);

Readln;

END.

Bài toán số 5.2:

Viết chương trình thao tác trên danh sách sinh viên (có các thông tin Hoten, Maso, Loai, Toan, Ly, DTB) :

+ Nhập / In danh sách sinh viên.

+ Sắp xếp danh sách sinh viên theo thứ tự tăng dần của điểm trung bình

+ Tìm điểm toán cao nhất trong danh sách, Số sinh viên có điểm toán = Max, Điểm bình quân môn toán của cả danh sách?

Hướng dẫn:

-          Xây dựng thủ tục nhập thông tin của danh sách sinh viên, trong đó sử dụng vòng lặp để nhập các thông tin của từng sinh viên thứ i.

Sử dụng Câu lệnh With để truy xuất đến thành phần của cấu trúc KSVIEN.

-          Quá trình sắp xếp bằng thuật toán sắp xếp đổi chổ trực tiếp. Xem bài hướng dẫn 3.4. Thuộc tính so sánh là dssv[i].DTB và dssv[j].DTB.

Không sử dụng phép gán thông thường mà phải sử dụng memcpy để tiến hành copy hai vùng nhớ  của các biến.

Source code chương trình:

{ 1. Khai bao cac kieu du lieu va bien can thiet }

PROGRAM Quan_Ly_SV;

Uses CRT;

Type    KSVIEN = RECORD

Hoten : String[18];

Maso, Loai: String[8];

Toan, Ly, DTB: Real;

End;

KDSSVIEN = Array[1..50] of KSVIEN;

Var

DS: KDSSVIEN;

N: Integer;


{ 2. Thu tuc nhap du lieu cho danh sach sinh vien }

Procedure NhapDSSV( Var dssv : KDSSVIEN; Var N:Integer);

Var i:Integer;

Begin

Repeat

Write(‘Nhap so sinh vien N= ‘);

Readln(N);

Until ( N>0) and ( N < 51);


      For i:=1 to N do  

With dssv[i] do

Begin

Write(‘Nhap ho ten :’);      Readln(Hoten);

Write(‘Ma so sv :’);            Readln(Maso);

Write(‘Toan, Ly :’);            Readln(Toan, Ly);

DTB := (Toan + Ly) / 2;

If DTB >=9 then

Loai:=‘Gioi’

Else if DTB >=7 then

Loai:=‘Kha’

Else if DTB >=5 then

Loai:=‘Binh’

Else

Loai:=‘Kem’;

 End;

       End;

      

{ 3. Thu tuc sap xep danh sach sinh vien tang dan theo diem trung binh  }

Procedure SapXepDSSV( Var dssv : KDSSVIEN; N : Integer);

Var i, j : Integer;

       Z : KSVIEN;

Begin

For i:=1 to N-1 do

For j:=i+1 to N do

     If dssv[i].DTB < dssv[j].DTB Then

     Begin

Z:= dssv [i];

dssv[i]:= dssv[j];

dssv[j]:=Z;

     End;

End;


{ 4. Thu tuc in danh sach sinh vien }

Procedure InDSSV( Var dssv : KDSSVIEN; N : Integer);

Var i : Integer;

Begin

      Writeln(‘In danh sach len man hinh ‘);

      Writeln(‘STT         HO VA TEN   MA SO',

‘TOAN  LY  DTB LOAI’);

For i:=1 to N do

     With dssv[i] do

    Writeln(i:2, #32, Hoten, #32:19-Length(Hoten),

            Maso:8, Toan:4:1, Ly:4:1, DTB:4:1, Loai:5);

       End;


{ 5. Cac bai toan nho lien quan danh sach sinh vien }

Procedure  CacBaiToan (dssv : KDSSVIEN; N : Integer);

Var      i , Dem: Integer;

TBToan, Max: Real;

Begin

{ Tim diem toan cao nhat}

      Max:=dssv[1].Toan;

      For i:=1 to N do

if Max< dssv[i].Toan then

Max:=dssv[i].Toan;

Writeln( ‘Diem Toan cao nhat =’, Max:4:1);

     

{ Dem so sv co diem Toan =Max}

      Dem:=0;

      For i:=1 to N do

if dssv[i].Toan =Max then

Dem := Dem+1;

Writeln(‘Co ‘, Dem, ‘em co diem Toan = ‘, Max:4:1);


      { Tinh diem binh quan mon Toan cua ca danh sach }

      TBToan:=0;

      For i:=1 to N do

TBToan := TBToan + dssv[i].Toan;

TBToan:=TBToan/N;

Writeln(‘Diem binh quan mon Toan= ‘, TBToan:6:2);

       End;


{    Chương trình chính;      }

BEGIN

Clrscr;

NhapDSSV( ds, N );

SapXepDSSV( ds, N );

InDSSV( ds, N );

CacBaiToan( ds, N );

Readln;

END.

Bài toán số 5.3:

Viết chương trình thao tác trên dữ liệu ngày giờ (có các thành phần Ngay, Thang, Nam, Gio, Phut, Giay):

-          Nhập vào các thông tin ngày, tháng, năm. Hãy kiểm tra các thông tin về ngày đó có hợp lệ không.

-          Xác địng số phút còn lại trong ngày của một thời điểm nào đó.

-          Xác định số thứ tự ngày hiện tại so với ngày đầu năm.

Bạn thấy bài viết này như thế nào?: 
Average: 10 (2 votes)
Ảnh của Binh Tran Thanh

Drupal Consultant

Started my career as a drupal8 developer in EM Solutions . I love learning Web technologies like HTML, CSS, PHP, Jquery Ajax and Drupal backend . Currently working as a drupal backend developer.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Hướng dẫn tối ưu Drupal 8 Performance năm 2020

Hướng dẫn tối ưu Drupal 8 Performance năm 2020

I have really enjoyed how much easier it is to make Drupal 8 performant compared to its predecessors. When I first started working with Drupal 8 performance, I was surprised how few of the tips and tricks I used from Drupal 7

Hướng dẫn sử dụng Sass Breakpoints 1 cách hiệu quả trong Drupal 7

Hướng dẫn sử dụng Sass Breakpoints 1 cách hiệu quả trong Drupal 7

There have been plenty of blog posts touting the reasons to use Sass as a CSS preprocessor, and if you've been doing responsive design for a while

5 cách để copywriter cần làm đối với Google

5 cách để copywriter cần làm đối với Google

Nội dung là phần không thể thiếu trong mỗi website, đặc biệt là khi thực hiện các chiến dịch SEO đòi hỏi lượng nội dung chất lượng.

Công ty diệt chuột T&C

 

Diet con trung