OPTADS360
AANETWORK
AMBIENT
YOMEDIA
Banner-Video
IN_IMAGE

Viết chương trình quản lí sách. Mỗi cuốn sách gồm tên sách, tên nhà xuất bản, năm xuất bản, giá tiền, số lượng:

a) Đưa ra danh sách các cuốn sách của nhà xuất bản Giáo dục.

b) Tính tổng số tiền sách.

c) Sắp xếp danh sách theo năm xuất bản giảm dần và ghi kết quả ra màn hình.

d) In ra màn hình các cuốn sách có giá tiền<=10.000đ và xuất bản sau năm 2000.

  bởi Thùy Trang 30/11/2021
ADSENSE/lession_isads=0
QUẢNG CÁO
 

Câu trả lời (1)

  • Mô tả mỗi cuốn sách là một bản ghi, các thông tin về nó (tên sách, tên tác giả,…) là các trường. Danh sách cuốn sách sẽ là một mảng các bản ghi.

    Khai báo kiểu dữ liệu mô tả sách như sau:

    type

        sach = record

             ten : string[30];      {tên sách}

             nxb  : string[20];      {tên Nhà xuất bản}

             namxb   : integer;   {năm xuất bản}

             soluong : integer;   {số lượng}

             gia : real;      {giá tiền}

        end;

    Thông tin của tất cả các cuốn sách ta lưu trong một mảng các bản ghi kiểu sach:

    var

       ds : array[1..100] of sach;

       n : integer;

    Nhập dữ liệu: ta nhập tên sách trước. Nếu tên sách là xâu rỗng thì đừng nhập, ngược lại lần lượt nhập các thông tin khác:

       procedure nhap;

       var t : string;

       begin

            ClrScr;

            writeln('NHAP THONG TIN VE CAC CUON SACH');

            writeln('(nhap ten sach la xau rong neu muon dung)');

            repeat

                  write('Ten sach:  ');

                  readln(t);

                  if t='' then break;

                  n := n + 1;

                  with ds[n] do begin

                     ten := t;

                     write('NXB:  ');readln(nxb);

                     write('Nam xuat ban:  ');readln(namxb);

                     write('So luong:  ');readln(soluong);

                     write('Gia tien:  ');readln(gia);

                  end;

            until false;

       end;

    Câu a: ta sẽ duyệt qua toàn bộ danh sách các cuốn sách, kiểm tra nếu tên nhà xuất bản là Giáo dục thì in ra tất cả các thông tin của cuốn sách tương ứng:

       procedure insach;

       var

          i   : integer;

       begin

            Clrscr;

            writeln('CAC CUON SACH CUA NXB GIAO DUC:');

            for i:=1 to n do

                with ds[i] do

                     if nxb='Giao duc' then begin

                        writeln('Ten:',ten);

                        writeln('Nam xuat ban:',namxb);

                        writeln('So luong:',soluong);

                        writeln('Gia tien:',gia);

                     end;

            readln;

       end;

    Câu b: ta cũng duyệt qua toàn bộ các cuốn sách, nhân số lượng và giá tiền rồi cộng dồn vào một biến tổng. Sau đó in ra biến tổng đó:

    procedure tinh;

    var i : integer;

        tong : real;

    begin

         tong := 0;

         for i := 1 to n do

             with ds[i] do tong := tong + gia * soluong;

         writeln('TONG GIA TRI CUA TAT CA CAC CUON SACH:', tong:0:3);

    end;

    Câu c: Sắp xếp danh sách giảm dần theo năm xuất bản bằng phương pháp nổi bọt (2 vòng for). Chú ý biến trung gian trong đổi chỗ phải có kiểu sach thì mới gán được.

    procedure sxep;

    var i,j : integer;

        tg : sach;

    begin

         for i := 1 to n do

             for j := i + 1 to n do

                 if ds[i].namxb < ds[j].namxb then begin

                    tg := ds[i]; ds[i] := ds[j]; ds[j] := tg;

                 end;

         for i:=1 to n do

            with ds[i] do begin

                 writeln('Ten:',ten);

                 writeln('Nam xuat ban:',namxb);

                 writeln('So luong:',soluong);

                 writeln('Gia tien:',gia);

            end;

         readln;

    end;

    Câu d: ta làm tương tự việc in danh sách các sách của NXB Giáo dục:

    procedure inds;

    var i : integer;

    begin

         writeln('CAC CUON SACH GIA RE HON 10000 VA XUAT BAN TU NAM 2000:');

         for i := 1 to n do

             with ds[i] do

                  if (gia <= 10000) and (namxb >= 2000) then writeln(ten);

    end;

     

    Chương trình chính: Lần lượt gọi các chương trình con theo thứ tự:

    BEGIN

         nhap;

         insach;

         tinh;

         sxep;

         inds;

         readln;

    END.

      bởi Phung Meo 30/11/2021
    Like (0) Báo cáo sai phạm

Nếu bạn hỏi, bạn chỉ thu về một câu trả lời.
Nhưng khi bạn suy nghĩ trả lời, bạn sẽ thu về gấp bội!

Lưu ý: Các trường hợp cố tình spam câu trả lời hoặc bị báo xấu trên 5 lần sẽ bị khóa tài khoản

Gửi câu trả lời Hủy
 
 

Các câu hỏi mới

NONE
OFF