YOMEDIA
NONE

Nhập vào một số n (5

a)   In ra các phần tử là số nguyên tố của dãy.

b)   Tính ước chung lớn nhất của tất cả các phần tử của dãy.

c)   Tính biểu thức sau:

d)   Sắp xếp dãy tăng dần và in ra dãy sau sắp xếp.

 

Theo dõi Vi phạm
ATNETWORK

Trả lời (1)

  • Ta nên chia chương trình thành các chương trình con, mỗi chương trình thực hiện một yêu cầu. Ngoài ra ta cũng viết thêm các hàm kiểm tra nguyên tố, hàm mũ, hàm UCLN để thực hiện các yêu cầu đó.

    Chương trình như sau:

    Khai báo dữ liệu:

    uses crt;

    var n : integer;

          a : array[1..10] of integer; {n<=10 nên mảng có tối đa 10 phần tử}

    Thủ tục nhập dữ liệu, có kiểm tra khi nhập.

    procedure nhap;

    var i : integer;

    begin

       clrscr;

       write('NHAP VAO SO PHAN TU N = ');

       repeat

          readln(n);

          if (5<=n) and (n<=10) then break; {nếu thoã mãn thì dừng vòng lặp}

          writeln('Khong hop le (5<=n<=10). Nhap lai!!!'); {ngược lại thì báo lỗi}

       until false;

     

       writeln('NHAP VAO N PHAN TU (1<ai<100)');

       for i := 1 to n do begin

          write('a',i,'=');

          repeat

             readln(a[i]);

             if (1<a[i]) and (a[i]<100) then break;

             writeln('Khong hop le. Nhap lai!!!');

          until false;

       end;

    end;

     

    function ngto(n : integer): boolean; {hàm kiểm tra nguyên tố, xem giải thích ở phần trên}

    var i : integer;

    begin

       ngto := false;

       if n < 2 then exit;

       for i := 2 to round(sqrt(n)) do

          if n mod i = 0 then exit;

       ngto := true;

    end;

    Thủ tục in các số nguyên tố   của một mảng

    procedure inngto;

    var i :integer;

    begin

       writeln('CAC PHAN TU NGUYEN TO TRONG DAY:');

       for i := 1 to n do            {duyệt qua mọi phần tử từ 1 đến n}

          if ngto(a[i]) then writeln(a[i]);      {nếu ai là nguyên tố thì in ra}

    end;

     

    function UCLN(a,b: integer): integer;

    var r : integer;

    begin

       while b<>0 do begin

          r := a mod b;

          a := b;

          b := r;

       end;

       UCLN := a;

    end;

     

    Thủ tục tính UCLN của các phần tử của một mảng

    procedure TinhUC;

    var i,u : integer;

    begin

       u := a[1];            {u là UCLN của các phần tử từ 1 đến i}

       for i := 2 to n do u := UCLN(u,a[i]);    {là UCLN của các phần tử từ 1 đến i-1 và ai}

       writeln('UCLN cua ca day la:',u);       

    end;

     

    function hammu(a : real; n : integer): real; {hàm mũ tính an}

    var s : real; i : integer;

    begin

       s := 1;

       for i := 1 to n do s := s * a;

       hammu := s;

    end;

    Thủ tục tính tổng các phần tử có lấy mũ:

    procedure tong;

    var s : real; i : integer; {s phải khai báo là số thực để tránh tràn số}

    begin

       s := 0;

       for i := 1 to n do s := s + hammu(a[i],i); {s := s + (ai)i}

       writeln('Tong can tinh:',s:10:0);

    end;

    Thủ tục sắp xếp tăng dần các phần tử của một mảng:

    procedure sxep;

    var i,j,tg : integer;

    begin

       for i := 1 to n-1 do

          for j := i + 1 to n do

             if a[i] > a[j] then begin

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

             end;

       writeln('DAY SAU KHI SAP XEP TANG DAN:');

       for i := 1 to n do writeln(a[i]);

    end;

    Chương trình chính: lần lượt gọi từng thủ tục

    BEGIN

       nhap;

       inngto;

       tinhuc;

       tong;

       sxep;

    END.

      bởi Anh Nguyễn 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
 
NONE

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

AANETWORK
 

 

YOMEDIA
ATNETWORK
ON