Tin học Viết chương trình

ĐứcNhật!

Học sinh tiêu biểu
Thành viên
17 Tháng mười một 2017
1,525
3,788
529
Quảng Nam
Trung Học Phổ Thông Chuyên Nguyễn Bỉnh Khiêm
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Câu 1: Cho ma trận M, N
- Nhập, xuất ma trận
- Tính tổng của ma trận
- Tính tích đường chéo của ma trận
- Tính tổng đường chéo chính, phụ
- Tính tổng tất cả các số nguyên tố
- Sắp xếp ma trận tăng dần
Câu 2: Tìm kí tự số lớn nhất và nhỏ nhất trong số tự nhiên N. In ra các số hoàn hảo từ 1 đến tích của 2 số đó
-------------
Giúp em với ạ, em cảm ơn!
@Trâm Nguyễn Thị Ngọc
@trà nguyễn hữu nghĩa
@bé nương nương
 

SRILU

Học sinh chăm học
Thành viên
30 Tháng tám 2018
56
438
51
An Giang
Bí mật
Câu 1: Cho ma trận M, N
- Nhập, xuất ma trận
- Tính tổng của ma trận
- Tính tích đường chéo của ma trận
- Tính tổng đường chéo chính, phụ
- Tính tổng tất cả các số nguyên tố
- Sắp xếp ma trận tăng dần
Câu 2: Tìm kí tự số lớn nhất và nhỏ nhất trong số tự nhiên N. In ra các số hoàn hảo từ 1 đến tích của 2 số đó
-------------
Giúp em với ạ, em cảm ơn!
@Trâm Nguyễn Thị Ngọc
@trà nguyễn hữu nghĩa
@bé nương nương
ma trận là gì, số hoàn hảo là gì bạn
 

Thủy Ling

Cựu Mod Sinh học
Thành viên Test
Thành viên
19 Tháng chín 2017
2,249
2,411
409
Phú Yên
trung học
Câu 1: Cho ma trận M, N
- Nhập, xuất ma trận
- Tính tổng của ma trận
- Tính tích đường chéo của ma trận
- Tính tổng đường chéo chính, phụ
- Tính tổng tất cả các số nguyên tố
- Sắp xếp ma trận tăng dần
Câu 2: Tìm kí tự số lớn nhất và nhỏ nhất trong số tự nhiên N. In ra các số hoàn hảo từ 1 đến tích của 2 số đó
-------------
Giúp em với ạ, em cảm ơn!
@Trâm Nguyễn Thị Ngọc
@trà nguyễn hữu nghĩa
@bé nương nương

Pascal hay C vậy ạ ?
 
  • Like
Reactions: Tín Phạm

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Câu 1: Cho ma trận M, N
- Nhập, xuất ma trận
- Tính tổng của ma trận
- Tính tích đường chéo của ma trận
- Tính tổng đường chéo chính, phụ
- Tính tổng tất cả các số nguyên tố
- Sắp xếp ma trận tăng dần
Câu 2: Tìm kí tự số lớn nhất và nhỏ nhất trong số tự nhiên N. In ra các số hoàn hảo từ 1 đến tích của 2 số đó
-------------
Giúp em với ạ, em cảm ơn!
@Trâm Nguyễn Thị Ngọc
@trà nguyễn hữu nghĩa
@bé nương nương

Câu 1: Đề khá dài nên code cũng dài luôn bạn ạ, mà ma trận này là ma trận vuông nha bạn, bạn đọc không hiểu chỗ nào thì báo với mình =))
Mã:
Var
     a:array[1..100,1..100] of integer;
     tg,tich,m,n,i,j,t,k:integer;
     b:array[1..100] of integer;
     Function snt(a:integer):boolean;
        Var  kt:boolean;i:integer;
           Begin
               kt:=true;
                For i:=2 to a-1 do
                   if (a mod i=0) then kt:=false;
               If a<>1 then snt:=kt else snt:=false;
           end;
Begin
     Write('nhap vao kich thuoc cua ma tran:');
     readln(m);t:=0;tich:=1;k:=1;
     For i:=1 to m do
       For j:=1 to m do
         begin
            write('a[',i,',',j,']=');
            readln(a[i,j]);
            t:=t+a[i,j];
            b[k]:=a[i,j];
            k:=k+1;
         end;
     Writeln('tong cac pt cua ma tran la:',t);t:=0;
     For i:=1 to m do
       For j:=1 to m do
         If i=j then
           begin
              tich:=tich*a[i,j];
              t:=t+a[i,j];
           end;
     Writeln('tich duong cheo chinh la:',tich);
     writeln('tong duong cheo chinh la:',t);
     t:=0;n:=m+1;
     For i:=1 to m do
       Begin
         n:=n-1;
         For j:=1 to m do
          If j=n then t:=t+a[i,j];
       end;
     Writeln('tong duong cheo phu la:',t);t:=0;
     For i:=1 to m do
      For j:=1 to m do
       If snt(a[i,j])=true then t:=t+a[i,j];
     Writeln('tong cac so nguyen to la:',t);
     For i:=1 to k-2 do
       For j:=i+1 to k-1 do
         if b[i]>b[j] then begin tg:=b[i];b[i]:=b[j];b[j]:=tg;end;
     k:=1;
     For i:=1 to m do
      For j:=1 to m do
        Begin
          a[i,j]:=b[k];
          k:=k+1;
        end;
     writeln('mang sau khi sap xep tang dan la:');
     For i:=1 to m do
       Begin
          For j:=1 to m do write(a[i,j],' ');
          writeln;
       end;
     readln
End.
Câu 2:
Mã:
Var
   n,tich,k,min,max,i,j,t:integer;
begin
     write('nhap vao mot so:');
     readln(n);
     min:=9;max:=1;
     While n<>0 do
       begin
         k:=n mod 10;
         if k<min then min:=k;
         if k>max then max:=k;
         n:=n div 10;
       end;
     tich:=min*max;i:=1;
     While i<=tich do
        begin
          t:=0;
          j:=1;
          While j<i do
             begin
               if i mod j=0 then t:=t+j;
               j:=j+1;
             end;
          if t=i then write(i,' ');
          i:=i+1;
         end;
     readln
END.
 
Last edited:
  • Like
Reactions: Sơn Nguyên 05

Sơn Nguyên 05

Banned
Banned
Thành viên
26 Tháng hai 2018
4,478
4,360
596
Hà Tĩnh
MT
Câu 1: Cho ma trận M, N
- Nhập, xuất ma trận
- Tính tổng của ma trận
- Tính tích đường chéo của ma trận
- Tính tổng đường chéo chính, phụ
- Tính tổng tất cả các số nguyên tố
- Sắp xếp ma trận tăng dần
Câu 2: Tìm kí tự số lớn nhất và nhỏ nhất trong số tự nhiên N. In ra các số hoàn hảo từ 1 đến tích của 2 số đó
-------------
Giúp em với ạ, em cảm ơn!
@Trâm Nguyễn Thị Ngọc
@trà nguyễn hữu nghĩa
@bé nương nương
Câu 1: Đề khá dài nên code cũng dài luôn bạn ạ, mà ma trận này là ma trận vuông nha bạn, bạn đọc không hiểu chỗ nào thì báo với mình =))
Mã:
Var
     a:array[1..100,1..100] of integer;
     tg,tich,m,n,i,j,t,k:integer;
     b:array[1..100] of integer;
     Function snt(a:integer):boolean;
        Var  kt:boolean;i:integer;
           Begin
               kt:=true;
                For i:=2 to a-1 do
                   if (a mod i=0) then kt:=false;
               snt:=kt;
           end;
Begin
     Write('nhap vao kich thuoc cua ma tran:');
     readln(m);t:=0;tich:=1;k:=1;
     For i:=1 to m do
       For j:=1 to m do
         begin
            write('a[',i,',',j,']=');
            readln(a[i,j]);
            t:=t+a[i,j];
            b[k]:=a[i,j];
            k:=k+1;
         end;
     Writeln('tong cac pt cua ma tran la:',t);t:=0;
     For i:=1 to m do
       For j:=1 to m do
         If i=j then
           begin
              tich:=tich*a[i,j];
              t:=t+a[i,j];
           end;
     Writeln('tich duong cheo chinh la:',tich);
     writeln('tong duong cheo chinh la:',t);
     t:=0;n:=m+1;
     For i:=1 to m do
       Begin
         n:=n-1;
         For j:=1 to m do
          If j=n then t:=t+a[i,j];
       end;
     Writeln('tong duong cheo phu la:',t);t:=0;
     For i:=1 to m do
      For j:=1 to m do
       If snt(a[i,j])=true then t:=t+a[i,j];
     Writeln('tong cac so nguyen to la:',t);
     For i:=1 to k-2 do
       For j:=i+1 to k-1 do
         if b[i]>b[j] then begin tg:=b[i];b[i]:=b[j];b[j]:=tg;end;
     k:=1;
     For i:=1 to m do
      For j:=1 to m do
        Begin
          a[i,j]:=b[k];
          k:=k+1;
        end;
     writeln('mang sau khi sap xep tang dan la:');
     For i:=1 to m do
       Begin
          For j:=1 to m do write(a[i,j],' ');
          writeln;
       end;
     readln
End.
Câu 2:
Mã:
Var
   n,tich,k,min,max,i,j,t:integer;
begin
     write('nhap vao mot so:');
     readln(n);
     min:=9;max:=1;
     While n<>0 do
       begin
         k:=k mod 10;
         if k<min then min:=k;
         if k>max then max:=k;
         n:=n div 10;
       end;
     tich:=min*max;i:=1;
     While i<=tich do
        begin
          t:=0;
          j:=1;
          While j<i do
             begin
               if i mod j=0 then t:=t+j;
               j:=j+1;
             end;
          if t=i then write(i,' ');
          i:=i+1;
         end;
     readln
END.
Bài này sau "Màn" khai báo và nhập mảng thì sử dụng Hàm và thủ tục có vẻ ngắn hơn và tối ưu hơn bạn Trâm nhỉ?
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Bài này sau "Màn" khai báo và nhập mảng thì sử dụng Hàm và thủ tục có vẻ ngắn hơn và tối ưu hơn bạn Trâm nhỉ?
Ý anh là sao ạ?
Em thấy nếu nhập mảng bằng thủ tục thì cũng khô g ngắn được mấy, còn khai báo ct chính thì không đưa vào được đâu ạ
Để em xem lại xem có thể sd hàm để tính tổng nhanh hơn không ạ
 
  • Like
Reactions: Sơn Nguyên 05

Sơn Nguyên 05

Banned
Banned
Thành viên
26 Tháng hai 2018
4,478
4,360
596
Hà Tĩnh
MT
Ý anh là sao ạ?
Em thấy nếu nhập mảng bằng thủ tục thì cũng khô g ngắn được mấy, còn khai báo ct chính thì không đưa vào được đâu ạ
Để em xem lại xem có thể sd hàm để tính tổng nhanh hơn không ạ
Tức là theo mình phần nhập, xuất ma trận thì nằm trong chương trình chính, còn các ý:
- Tính tổng của ma trận
- Tính tích đường chéo của ma trận
- Tính tổng đường chéo chính, phụ
- Tính tổng tất cả các số nguyên tố
- Sắp xếp ma trận tăng dần
thì mình sử dụng hàm hay thủ tục thì sẽ gọn và mượt hơn.
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Tức là theo mình phần nhập, xuất ma trận thì nằm trong chương trình chính, còn các ý:
- Tính tổng của ma trận
- Tính tích đường chéo của ma trận
- Tính tổng đường chéo chính, phụ
- Tính tổng tất cả các số nguyên tố
- Sắp xếp ma trận tăng dần
thì mình sử dụng hàm hay thủ tục thì sẽ gọn và mượt hơn.
Anh nói đúng rồi ạ.
Bạn @Đức Nhật có thể đưa các code tính tổng ma trận, đường chéo chính phụ vào cùng môt vào for, làm một cái hàm kt snt, rồi sắp xếp như mình cũng được
Đưa vào thủ tục hay không cũng được. Nhưng nếu đưa vào 1 vòng for thì sẽ tiện hơn
P/s: Có gì tối mình sẽ viết code cho bạn, bây giờ mình phải đi học, bạn thông cảm

Code này đã chỉnh sửa rồi bạn, mình đưa vào 1 vòng for cho dễ, nhưng vẫn còn dài lắm. Mình nghĩ nó đã tối ưu nhất có thể rồi bạn
Mã:
Var
   m,n,i,j,t,tong,tich,tp,tc,tg,k:integer;
   a:array[1..100,1..100] of integer;b:array[1..100] of integer;
   Function snt(a:integer):Boolean;
   Var kt:boolean;i:integer;
   Begin
        kt:=true;
        For i:=2 to a-1 do
            If a mod i=0 then kt:=false;
        If a<>1 then snt:=kt else snt:=false;
   End;
   Procedure nhap;
   Begin
        write('nhap kich thuoc cua ma tran:');readln(m);
        For i:=1 to m do
            For j:=1 to m do
                Begin
                     Write('a[',i,',',j,']=');
                     Readln(a[i,j]);
                End;
   End;
   Procedure xuly;
   Begin
        t:=0;tp:=0;tc:=0;tich:=1;k:=1;n:=m;
        For i:=1 to m do
        Begin
            n:=n-1;
            For j:=1 to m do
                Begin
                     t:=t+a[i,j];
                     If i=j then begin tc:=tc+a[i,j];tich:=tich*a[i,j];end;
                     If j=n then tp:=tp+a[i,j];
                     If snt(a[i,j])=true then tong:=tong+a[i,j];
                     b[k]:=a[i,j];k:=k+1;
                end;
        end;
        For i:=1 to k-2 do
            For j:=i+1 to k-1 do
                If b[i]>b[j] then begin tg:=b[i];b[i]:=b[j];b[j]:=tg;end;
        k:=1;
        For i:=1 to m do
            For j:=1 to m do
                Begin a[i,j]:=b[k];k:=k+1;end;
        writeln('tong cac pt la:',t);
        Writeln('tong duong cheo chinh la:',tc,' ','tong duong cheo phu la:',tp);
        Writeln('tich duong cheo chinh la:',tich,' ','tong cac snt la:',tong);
        Writeln('ma tran sau khi sap xep tang dan la:');
        For i:=1 to m do
            Begin
                 For j:=1 to m do write(a[i,j],' ');
                 writeln;
            end;
   End;
BEGIn
     nhap;
     xuly;
     readln
End.

p/s:Các mod gộp bài giúp em
 
Last edited by a moderator:
Top Bottom