Tin học 11‎ > ‎

Bài tập chương 4

Trường THCS-THPT ĐINH THIỆN LÝ                                                              TIN HỌC 11

 

 

 

BÀI TẬP PASCAL CHƯƠNG IV

 

KIỂU MẢNG, KIỂU XÂU, KIỂU BẢN GHI

ĐỀ BÀI:

Bài 1:

Để chuẩn bị cho Hội khỏe Phù Đổng, trường Đinh Thiện Lý tổ chức cuộc thi điền kinh chạy 100m, mọi học sinh đều có quyền đăng ký thi, mỗi người dự thi có 1 phiếu đăng ký gồm:

·        Họ tên: không quá 35 ký tự

·        Giới tính: 3 ký tự:nam hoặc nữ

·        Lớp: 4 ký tự

·        Thời gian chạy(giây): số thực

Sau khi chạy về đích, thời gian chạy sẽ được ghi vào phiếu và được nhập vào máy tính để xử lý.

a)     Hãy xây dựng kiểu dữ liệu và khai báo các biến thích hợp

b)     Viết chương trình nhập vào số thí sinh dự thi, thông tin và thành tích từng thí sinh, tính:

·        Xuất ra thông tin của tất cả các thí sinh

.   Số học sinh nam dự thi, số học sinh nữ dự thi

·        Danh sách các học sinh nam dự thi, bao gồm họ tên, lớp

·        Danh sách các học sinh nữ dự thi, bao gồm họ tên, lớp
 
. Tìm học sinh chạy nhanh nhất (không kể là nam hay nữ), thông báo ra màn hình họ tên, lớp và thành tích của thí sinh đó.

 


Bài 2: Kết quả kiểm tra sức khỏe học sinh trường Đinh Thiện Lý được ghi trên phiếu có dạng:

PHIẾU KIỂM TRA SỨC KHỎE

Lớp: …: tối đa 4 ký tự

Họ và tên:... tối đa 30 ký tự

Nam/Nữ:…tối đa 3 ký tự

Chiều cao: …cm (số thực)

Cân nặng:…kg (số thực)

 

Lập trình nhập từ bàn phím tên lớp và số học sinh trong lớp (số N), sau đó nhập kết quả của N phiếu kiểm tra sức khỏe, với mỗi phiếu chỉ cần nhập 4 trường cuối (Họ tên, Nam/nữ, chiều cao, cân nặng)

a)     Xác định kiểu dữ liệu và khai báo các biến thích hợp

b)     Viết chương trình tính và đưa ra màn hình các thông tin sau:

·        Chiều cao trung bình của học sinh trong lớp

·        Cân nặng trung bình của học sinh trong lớp

·        Số học sinh cao hơn chiều cao trung bình của toàn lớp

·        Số học sinh nhẹ hơn mức cân nặng trung bình của toàn lớp.

 

 

Bài 3: Viết chương trình quản lý sách ở thư viện trường Đinh Thiện Lý gồm các trường sau:

  • Mã số sách: tối đa 10 ký tự
  • Tựa sách: tối đa 50 ký tự
  • Tên Tác giả: tối đa 30 ký tự
  • Nhà Xuất bản: tối đa 30 ký tự
  • Năm xuất bản: số nguyên.

 

            a/ Nhập vào kho sách của thư viện (nhập số lượng sách, nhập thông tin cho từng sách gồm tất cả các trường).

            b/ In ra màn hình tất cả các cuốn sách có trong thư viện.

         c/ Tìm một cuốn sách có mã số được nhập vào từ bàn phím. Nếu tìm thấy thì in ra màn hình thông tin đầy đủ của cuốn sách đó (tất cả các trường), ngược lại thì thông báo không tìm thấy.

           d/ Nhập vào tên tác giả, tìm và in ra màn hình tất cả các cuốn sách có cùng tác giả đó.

            d/ Nhập vào một năm nào đó, t

ìm và in ra màn hình tất cả

 các cuốn sách được xuất bản trong cùng một năm đó.

 

HƯỚNG DẪN LƯU BÀI VÀ NỘP BÀI

Sau từ Program ghi BAITAPCHUONG4

Chú thích tên-mã số-lớp

Ví dụ:

{ Ho ten: Ho Ngoc An

Ma so: 01

Lop: 11A1

}

Lưu bài vào thư mục lớp mình trong ổ đĩa  D:\

Tên file: Tên lớp-Mã số HS-BTCHUONG4.PAS 

(Ví dụ: 11D-12-BTCHUONG4.PAS)

Nộp bài: copy file .PAS    Vào Start->Run \\192.168.1.9

Vào thư mục lsts0910-tinhoc\BAI TAP CUA HOC SINH\Lop...

Nộp vào thư mục tương ứng với đề bài, ví dụ HS nào làm bài 1 sẽ nộp vào thư mục BAI 1

GIẢI BÀI TẬP

BÀI 1


program baitapchuong4-bai1;

uses crt;

type Hocsinh=record

        Hoten:string[35];

        Gioitinh: string[3];

        Lop:string[4];

        Thoigian: real;

        end;


var     Truong:array[1..50] of Hocsinh;

        sohsnam,sohsnu,N,i, chisomin: byte;
        minthoigian: real;

       

begin

        clrscr;

        write('So luong hoc sinh tham gia du thi:'); readln(N);

        {nhap thong tin cho tung hoc sinh}

        for i:=1 to N do

                begin

                        writeln('Nhap so lieu ve hoc sinh thu ',i,':');

                        write('Ho va ten:');

                        readln(Truong[i].Hoten);

                        write('Gioi tinh:');

                        readln(Truong[i].Gioitinh);

                        truong[i].gioitinh:=upcase(truong[i].gioitinh);

                        write('Lop:');

                        readln(Truong[i].Lop);

                        write('Thoi gian chay:');

                        readln(Truong[i].Thoigian);

                end;

        writeln('Danh sach hoc sinh du thi');

        writeln('STT':5,'HO TEN':20, 'GIOI TINH':20, 'LOP':10, 'THOI GIAN':20);


        //xuat thong tin ra

        {tat ca thong tin}


        for i:=1 to N do

        begin

          write(i:5, '.' ,truong[i].hoten:20);

          write(truong[i].gioitinh:20);

          write(truong[i].lop:10);

          write(truong[i].thoigian:20:1);

          writeln;

        end;


        //dem so hs nam  va nu

        sohsnam:=0;

        sohsnu:=0;

        for i:=1 to n do

        if (truong[i].gioitinh='NAM') then

             sohsnam:=sohsnam+1

        else sohsnu:=sohsnu+1;

        writeln('So hs nam: ',sohsnam);

        writeln('So hoc sinh nu: ',sohsnu);


        //xuat danh sach cac hoc sinh nam du thi

        

 

        writeln('DANH SACH HOC SINH NAM DU THI: ');

        writeln('Ho ten:':20,'Lop':5);

        for i:=1 to N do

        if (truong[i].gioitinh='NAM') then

             begin

                write('Ho ten: ',truong[i].hoten:20);

                write('Lop: ',truong[i].Lop:5);

             end;


        //xuat danh sach cac hoc sinh nu du thi

        writeln('DANH SACH HOC SINH NU DU THI: ');

         for i:=1 to N do

           if (truong[i].gioitinh='NU') then

             begin

                write('Ho ten: ',truong[i].hoten:20);

                write('Lop: ',truong[i].Lop:5);

             end;
 
        //Tìm học sinh chạy nhanh nhất
Minthoigian:=Truong[1].thoigian;
chisomin:=1;
 
for i:=1 to n do
if truong[i].thoigian < minthoigian then
    Begin
    minthoigian:=truong[i].thoigian;
    chisomin:=i;
    end;
writeln('HOC SINH CHAY NHANH NHAT LA');
Writeln('ho ten' , truong[chisomin].hoten);
writeln('lop: ' , truong[chisomin].lop);
writeln('thanh tich ', truong[chisomin].thoigian:5:1);
 
 
 
 

readln;

end.


BÀI 2

program  baitapchuong4-bai2;

{Ho ten: CHAU YEN TRINH

Ma so: 25

Lop: 11a2}

uses crt;

type hocsinh = record

        hoten:string[30];

        lop:string[4];

        gioitinh:string[3];

        chieucao, cannang: real;

        end;

var suckhoe:array[1..60] of hocsinh;

    l:string;

    n,i,a,b:integer;

    s,caotrungbinh,nangtrungbinh,c:real;

begin

        clrscr;

        write('Nhap ten lop: '); readln(l);

        writeln('So hoc sinh trong lop: ');readln(n);

        for i:=1 to n do

                begin

                        writeln('Thong tin ve hoc sinh thu ',i,': ');

                        write('Ho ten: ');readln(suckhoe[i].hoten);

                        write('Gioi tinh: ');readln(suckhoe[i].gioitinh);

                        write('Chieu cao(cm): ');readln(suckhoe[i].chieucao);

                        write('Can nang(kg): ');readln(suckhoe[i].cannang);

                        readln;

                end;

        s:=suckhoe[1].chieucao;

        for i:=2 to n do s:=s+suckhoe[i].chieucao;

        caotrungbinh:=s/n;

        c:=suckhoe[1].cannang;

        for i:=2 to n do c:=c+suckhoe[i].cannang;

        nangtrungbinh:=c/n;

        writeln('PHIEU KIEM TRA SUC KHOE');

        for i:=1 to n do writeln(suckhoe[i].hoten:30,'   Gioi tinh:',suckhoe[i].gioitinh:3,'   Chieu cao:',

                         suckhoe[i].chieucao:4:2,'   Can nang:',suckhoe[i].cannang:4:2);

        writeln('Chieu cao trung binh cua hoc sinh trong lop: ',caotrungbinh:5:2);

        writeln('Can nang trung binh cua hoc sinh trong lop: ',nangtrungbinh:5:2);

        a:=0;

        for i:=1 to n do if suckhoe[i].chieucao> caotrungbinh then a:=a+1;

        writeln('So hoc sinh cao hon chieu cao trung binh cua toan lop: ',a);

        b:=0;

        for i:=1 to n do if suckhoe[i].cannang> nangtrungbinh then b:=b+1;

        writeln('So hoc sinh nang hon muc can nang trung binh cua toan lop: ',b);


        readln;

end.

Bài 3

program baitapchuong4-bai3;

{Ho ten: Bui Thai Minh Tuan

Ma so: 29

Lop: 11D

}

uses crt;

const max = 200;

type Sach = record

MaSoSach:string[10];

NhanDe:string[50];

TenTacGia:string[30];

NhaXuatBan:string[30];

NamXuatBan:real;

end;

var

Khosach: array[1..Max] of Sach;

N,i,x:Byte;

a,b,d:string[10];

c:real;

begin

clrscr;

write('So luong sach trong kho N = '); readln(N);

for i:=1 to N do

begin

writeln('Nhap so lieu ve quyen sach thu ',i,': ');

write('Ma so sach: '); readln(Khosach[i].MaSoSach);

write('Nhan de: '); readln(Khosach[i].NhanDe);

write('Ten tac gia: '); readln(Khosach[i].TenTacGia);

write('Nha xuat ban: '); readln(Khosach[i].NhaXuatBan);

write('Nam xuat ban: '); readln(Khosach[i].NamXuatBan);

end;

write('Nhap ma so sach muon tim: '); readln(a);

for i:=1 to N do

if Khosach[i].MaSoSach = a then writeln('Sach ne: ',Khosach[i].NhanDe:5, Khosach[i].TenTacGia:5, Khosach[i].NhaXuatBan:5, Khosach[i].NamXuatBan:5:0);

readln;

write('Nhap ten tac gia muon tim: '); readln(b);

for i:=1 to N do

if Khosach[i].TenTacGia = b then writeln('Nhung sach co cung tac gia: ',i:5, Khosach[i].NhanDe:5);

readln;

write('Nam Xuat Ban: '); readln(c);

for i:=1 to N do

if Khosach[i].NamXuatBan = c then writeln('Sach co cung nam sang tac: ',i:5, Khosach[i].NhanDe:5);

readln;

write('Nhap mot tu bat ki: '); readln(d);

for i:=1 to N do

if pos(d,Khosach[i].NhanDe)<>0 then write(i:1, Khosach[i].NhanDe:5);

readln;

end.

Comments