YOMEDIA
NONE

Nhập một mảng 2 chiều m dòng, n cột từ file BANGSO.TXT. Cấu trúc file như sau: dòng đầu là 2 số m và n, cách nhau bằng dấu cách, m dòng sau, mỗi dòng n số nguyên.

a) Hãy in ra những số là số nguyên tố của mảng.

b) Tìm vị trí phần tử lớn nhất trong mảng.

c) Sắp xếp mỗi dòng của mảng tăng dần và in ra mảng dạng ma trận.

 

Theo dõi Vi phạm
ATNETWORK

Trả lời (1)

  • Ta khai báo một mảng 2 chiều và nhập dữ liệu từ file vào mảng. Quá trình nhập từ file văn bản giống như nhập từ bàn phím, không cần thực hiện kiểm tra dữ liệu.

    Để sắp xếp mảng theo yêu cầu, ta thực hiện sắp xếp từng dòng của mảng bằng cách viết một thủ tục sắp xếp (kiểu đổi chỗ cho đơn giản) coi mỗi dòng của mảng như 1 mảng 1 chiều.

    Chương trình:

    var m,n : integer;

        a : array[1..100,1..100] of integer;

    (* Nhập dữ liệu *)

    procedure nhap;

    var f : text;

        i,j : integer;

    begin

         assign(f,'BANGSO.TXT'); reset(f);

         readln(f,m,n);

         for i := 1 to m do

             for j := 1 to n do read(f,a[i,j]);

         close(f);

    end;

     

    function ngto(k : integer): boolean;

    var i : integer;

    begin

         ngto := false;

         if k < 2 then exit;

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

             if k mod i = 0 then exit;

         ngto := true;

    end;

     

    procedure inngto;

    var i,j : integer;

    begin

         writeln('Cac phan tu nguyen to cua mang:');

         for i := 1 to m do

             for j := 1 to n do

                 if ngto(a[i,j]) then write(a[i,j],' ');

         writeln;

    end;

     

    procedure timmax;

    var max,i,j,im,jm : integer;

    begin

         max := a[1,1]; im := 1; jm := 1; {im, jm lưu toạ độ phần tử đạt max}

         for i := 1 to m do

             for j := 1 to n do

                 if max < a[i,j] then begin

                    max := a[i,j];   {mỗi lần gán max thì gán toạ độ luôn}

                    im := i; jm := j;

                 end;

         writeln('Phan tu lon nhat bang la A[',im,',',jm,']=',max);

    end;

    {Thủ tục thực hiện sắp xếp tăng dần dòng thứ k. Các phần từ dòng k có dạng a[k,i]}

    procedure xepdong(k: integer);

    var i,j, tg : integer;

    begin

         for i := 1 to n do

             for j := i+1 to n do

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

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

                 end;

    end;

     

    procedure sapxep;

    var i,j : integer;

    begin

         for i := 1 to m do xepdong(i); {sắp xếp từng dòng}

         writeln('Mang sau khi sap xep:');

         for i := 1 to m do begin      {in dạng ma trận}

             for j := 1 to n do write(a[i,j] : 5); {in các phần tử trên 1 dòng}

             writeln;      {in hết 1 dòng thì xuống dòng}

         end;

    end;

    BEGIN

         nhap;

         inngto;

         timmax;

         sapxep;

    END.

      bởi Sam sung 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