Tin học Tây Sơn

Ma trận xoán ốc

Go down

Ma trận xoán ốc

Bài gửi by Admin on Thu Nov 29, 2018 9:07 pm

Cho ma trận các số nguyên A[m,n], hãy sắp xếp lại ma trận sao cho các phần tử của chúng có giá trị tăng dần theo đường xoắn óc từ ngoài vào trong
xoanoc.inpXoanoc.out
4 5
15 34 91 45 94
55 47 69 12 65
76 16 26 37 41
50 19 71 24 27
34 37 41 45 47  
27 76 91 94 50         
26 71 69 65 55
24 19 16 15 12


Được sửa bởi Admin ngày Thu Nov 29, 2018 9:33 pm; sửa lần 3.
avatar
Admin
Admin
Admin

Posts : 658
Reputation : -39
Join date : 16/11/2015
Age : 29

Xem lý lịch thành viên http://tinhocts.forumvi.com

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by Nguyễn Văn Biên on Thu Nov 29, 2018 9:16 pm

Admin đã viết:
                                 Xoanoc.inp
Xoanoc.out
4 5
15 34 91 45 94
55 47 69 12 65
76 15 26 37 41
50 19 71 24 27
 

Question Question Question
avatar
Nguyễn Văn Biên
S-mod
S-mod

Posts : 186
Reputation : 21
Join date : 18/06/2018
Age : 14
Location : ?

Xem lý lịch thành viên https://bien2004official.blogspot.com

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by nguyen77 on Fri Nov 30, 2018 8:05 pm

Code:
program bt;
uses crt;
var m,n,i,j,s,tg,x,y,d,l:integer;
 fi,fo:text;
 a:array[1..100,1..100] of integer;
 b:array[1..100] of integer;

begin
clrscr;
 assign(fi,'xoanoc.inp');
reset(fi);
        readln(fi,n,m);
        for i:=1 to n do
        for j:=1 to m do
        read(fi,A[i,j]);
close(fi);
assign(fo,'xoanoc.out');
rewrite(fo);
x:=n; y:=m; d:=0;
for i:=1 to n do
for j:=1 to m do
        begin
                inc(d);
                b[d]:=a[i,j];
        end;
for i:=1 to d-1 do
for j:=i+1 to d do
        if b[i]>b[j] then
                begin
                        tg:=b[i];
                        b[i]:=b[j];
                        b[j]:=tg;
                end;

l:=d; s:=1; d:=0;
while d<>l do
        begin
                for i:=m downto s do
                        begin
                                inc(d);
                                a[n,i]:=b[d];
                        end;
n:=n-1;
for i:=n downto s do
        begin
                inc(d);
                a[i,s]:=b[d];
        end;
inc(s);
for i:=s to m do
        begin
                inc(d);
                a[s-1,i]:=b[d];
        end;
for i:=s to n do
        begin
                inc(d);
                a[i,m]:=b[d];
        end;
m:=m-1;
end;
for i:=1 to x do
        begin
                for j:=1 to y do
                write(fo,a[i,j],#32);
        writeln(fo);
end;
close(fo);
readln;
end.


Được sửa bởi nguyen77 ngày Sat Dec 01, 2018 4:52 am; sửa lần 1.
avatar
nguyen77
Năng động
Năng động

Posts : 68
Reputation : -22
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by Nguyễn Văn Biên on Fri Nov 30, 2018 9:26 pm

Spoiler:
Code:
program xoanoc;
var fi,fo:text;
    m,n,i,j,s,t,m1,n1,d,d1:integer;
    A:array[1..1000,1..1000] of integer;
    B:array[1..1000] of integer;
begin
        assign(fi,'xoanoc.inp'); reset(fi);
        readln(fi,n,m); n1:=n; m1:=m;
        for i:=1 to n do
        for j:=1 to m do
        read(fi,A[i,j]); close(fi);
        d:=0;
        for i:=1 to n do
        for j:=1 to m do
        begin inc(d); B[d]:=A[i,j] end;
        for i:=1 to d-1 do
        for j:=i+1 to d do
        if B[i]>B[j] then
        begin t:=B[i]; B[i]:=B[j]; B[j]:=t; end;
        d1:=d; s:=1; d:=0;
        while d<>d1 do
        begin
                for i:=m downto s do
                begin inc(d); A[n,i]:=B[d] end;
                dec(n);
                for i:=n downto s do
                begin inc(d); A[i,s]:=B[d] end;
                inc(s);
                for i:=s to m do
                begin inc(d); A[s-1,i]:=B[d] end;
                for i:=s to n do
                begin inc(d); A[i,m]:=B[d] end;
                dec(m)
        end;
        assign(fo,'xoanoc.out'); rewrite(fo);
        for i:=1 to n1 do
        begin
                for j:=1 to m1 do
                write(fo,a[i,j],#32);
                writeln(fo)
        end;
        close(fo)
end.
avatar
Nguyễn Văn Biên
S-mod
S-mod

Posts : 186
Reputation : 21
Join date : 18/06/2018
Age : 14
Location : ?

Xem lý lịch thành viên https://bien2004official.blogspot.com

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by mainhatthong2004 on Sat Dec 08, 2018 4:07 pm

Code:
program bai7;
uses crt;
var
fi,fo:text;
a:array[1..50,1..50] of integer;
b:array[1..10000] of integer;
var t,i,j,h,c,n,m,tg,k:integer;
begin
clrscr;
assign(fi,'mtxo.inp');
reset(fi);
t:=1;
readln(fi,n,m);
for i:=1 to n do
begin
for j:=1 to m do
begin
read(fi,a[i,j]);
b[t]:=a[i,j];
inc(t);
end;
readln(fi);
end;
close(fi);
assign(fo,'mtxo.out');
rewrite(fo);
for i:=1 to t-1 do
for j:=i+1 to t do
if b[i]>b[j] then
begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
i:=n; h:=1;
j:=m; c:=1;
k:=t; t:=2;
while t<=k do
        begin
                for tg:=j downto c do
                        begin
                                a[i,tg]:=b[t];
                                inc(t);
                        end;
                dec(i);
                for tg:=i downto h do
                        begin
                                a[tg,c]:=b[t];
                                inc(t);
                        end;
                inc(c);
                for tg:=c to j do
                        begin
                                a[h,tg]:=b[t];
                                inc(t);
                        end;
                inc(h);
                for tg:=h to i do
                        begin
                                a[tg,j]:=b[t];
                                inc(t);
                        end;
                dec(j);
        end;
for i:=1 to n do
begin
for j:=1  to m do
write(fo,a[i,j],#32);
writeln(fo);
end;
close(fo);
readln;
end.
avatar
mainhatthong2004
Teen cá tính
Teen cá tính

Posts : 76
Reputation : -25
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by Tạ Thúy Phượng on Sat Dec 08, 2018 4:28 pm

CODE:
program bt;
uses crt;
var
m,n,i,j,tg,dem,p,tr,t,d:integer;
fi,fo:text;
a:array[1..100,1..100] of integer;
b:array[1..100] of integer;
begin
clrscr;
assign(fi,'xoanoc.inp');
reset(fi);
readln(fi,n,m);
for i:=1 to n do
for j:=1 to m do
read(fi,A[i,j]);
close(fi);
assign(fo,'xoanoc.out');
rewrite(fo);
dem:=0;
for i:=1 to n do
for j:=1 to m do
begin
inc(dem);
b[dem]:=a[i,j];
end;
for i:=1 to dem-1 do
for j:=i+1 to dem do
if b[i]>b[j] then
begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
t:=1;
j:=m;
p:=m;
i:=n;
tr:=1;
d:=m;
dem:=0;
while dem<>(n*m) do
begin
for j:=p downto t do
begin
inc(dem);
a[i,j]:=b[dem];
end;
dec(d);
for i:=d downto tr do
begin
inc(dem);
a[i,j]:=b[dem];
end;
inc(t);
for j:=t to p do
begin
inc(dem);
a[i,j]:=b[dem];
end;
inc(tr);
for i:=tr to d do
begin
inc(dem);
a[i,j]:=b[dem];
end;
dec(P);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(fo,a[i,j],#32);
writeln(fo);
end;
close(fo);
readln;
end.
avatar
Tạ Thúy Phượng
Năng động
Năng động

Posts : 63
Reputation : -19
Join date : 18/06/2018
Location : Binh Thuan-Tay Son-Binh Dinh

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by Nguyễn Hoàng Nam on Sat Dec 08, 2018 4:30 pm

Code:
program bt;
uses crt;
var
m,n,i,j,tg,dem,p,tr,t,d:integer;
fi,fo:text;
a:array[1..100,1..100] of integer;
b:array[1..100] of integer;
begin
clrscr;
assign(fi,'xoanoc.inp');
reset(fi);
readln(fi,n,m);
for i:=1 to n do
for j:=1 to m do
read(fi,A[i,j]);
close(fi);
assign(fo,'xoanoc.out');
rewrite(fo);
dem:=0;
for i:=1 to n do
for j:=1 to m do
begin
inc(dem);
b[dem]:=a[i,j];
end;
for i:=1 to dem-1 do
for j:=i+1 to dem do
if b[i]>b[j] then
begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
t:=1;
j:=m;
p:=m;
i:=n;
tr:=1;
d:=m;
dem:=0;
while dem<>(n*m) do
begin
for j:=p downto t do
begin
inc(dem);
a[i,j]:=b[dem];
end;
dec(d);
for i:=d downto tr do
begin
inc(dem);
a[i,j]:=b[dem];
end;
inc(t);
for j:=t to p do
begin
inc(dem);
a[i,j]:=b[dem];
end;
inc(tr);
for i:=tr to d do
begin
inc(dem);
a[i,j]:=b[dem];
end;
dec(P);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(fo,a[i,j],#32);
writeln(fo);
end;
close(fo);
readln;
end.
avatar
Nguyễn Hoàng Nam
Teen Chính hiệu
Teen Chính hiệu

Posts : 16
Reputation : -2
Join date : 06/11/2018
Age : 14

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by tonguyengiahan237 on Sat Dec 08, 2018 8:06 pm

Code:
Program Ma_tran_xoan_oc;
Uses crt;
Type Mang2c=array[1..50,1..50] of longint;
Var
 A:Mang2c;
 dem,n,m,i,j,T,P,Tr,Di,k,d,tg:longint;
 b:array[1..100] of longint;
 fi,fo:text;
//--------------------------------------------------
Procedure Docdl;
Begin
Assign(fi,'xoanoc.inp');
reset(fi);
Readln(fi,n,m);
For i:=1 to n do
begin
For j:=1 to m do
Read(fi,A[i,j]);
end;
close(fi);
End;
//--------------------------------------------------
Procedure Xuli;
Begin
Assign(fo,'xoanoc.out');
Rewrite(fo);
k:=1;
d:=0;
For i:=1 to n do
For j:=1 to m do
begin
B[k]:=A[i,j];
inc(k);
inc(d);
end;
for i:=1 to d-1 do
for j:=i+1 to d do
if b[i]>b[j] then
begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
T:=1;
P:=m;
Tr:=1; Di:=n;
dem:=1;
While dem<=n*m do
begin
        for j:=P downto T do
                begin
                a[Di,j]:=b[dem];
                inc(dem);
                end;
                dec(Di);
        for i:=Di downto Tr do
                begin
                a[i,T]:=b[dem];
                inc(dem);
                end;
                inc(T);
        for j:=T to P do
                begin
                a[Tr,j]:=b[dem];
                inc(dem);
                end;
                inc(Tr);
        for i:=Tr to Di do
                begin
                a[i,P]:=b[dem];
                inc(dem);
                end;
                dec(P);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(fo,a[i,j]:4);
writeln(fo);
end;
close(fo);
End;
//-----------------------------------
Begin
Clrscr;
Docdl;
Xuli;
Readln;
End.
avatar
tonguyengiahan237
Teen Chính hiệu
Teen Chính hiệu

Posts : 28
Reputation : -2
Join date : 06/11/2018
Age : 14
Location : TT Phú Phong Huyện Tây Sơn Tỉnh Bình Định

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by Admin on Sat Dec 08, 2018 9:34 pm

tonguyengiahan237 đã viết:
Code:
Program Ma_tran_xoan_oc;
Uses crt;
Type Mang2c=array[1..50,1..50] of longint;
Var
 A:Mang2c;
 dem,n,m,i,j,T,P,Tr,Di,k,d,tg:longint;
 b:array[1..100] of longint;
 fi,fo:text;
//--------------------------------------------------
Procedure Docdl;
Begin
Assign(fi,'xoanoc.inp');
reset(fi);
Readln(fi,n,m);
For i:=1 to n do
begin
For j:=1 to m do
Read(fi,A[i,j]);
end;
close(fi);
End;
//--------------------------------------------------
Procedure Xuli;
Begin
Assign(fo,'xoanoc.out');
Rewrite(fo);
k:=1;
d:=0;
For i:=1 to n do
For j:=1 to m do
begin
B[k]:=A[i,j];
inc(k);
inc(d);
end;
for i:=1 to d-1 do
for j:=i+1 to d do
if b[i]>b[j] then
begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
T:=1;
P:=m;
Tr:=1; Di:=n;
dem:=1;
While dem<=n*m do
begin
        for j:=P downto T do
                begin
                a[Di,j]:=b[dem];
                inc(dem);
                end;
                dec(Di);
        for i:=Di downto Tr do
                begin
                a[i,T]:=b[dem];
                inc(dem);
                end;
                inc(T);
        for j:=T to P do
                begin
                a[Tr,j]:=b[dem];
                inc(dem);
                end;
                inc(Tr);
        for i:=Tr to Di do
                begin
                a[i,P]:=b[dem];
                inc(dem);
                end;
                dec(P);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(fo,a[i,j]:4);
writeln(fo);
end;
close(fo);
End;
//-----------------------------------
Begin
Clrscr;
Docdl;
Xuli;
Readln;
End.
code lại các bài khác nữa nhé Hân
avatar
Admin
Admin
Admin

Posts : 658
Reputation : -39
Join date : 16/11/2015
Age : 29

Xem lý lịch thành viên http://tinhocts.forumvi.com

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by tonguyengiahan237 on Sat Dec 08, 2018 10:01 pm

Admin đã viết:
tonguyengiahan237 đã viết:
Code:
Program Ma_tran_xoan_oc;
Uses crt;
Type Mang2c=array[1..50,1..50] of longint;
Var
 A:Mang2c;
 dem,n,m,i,j,T,P,Tr,Di,k,d,tg:longint;
 b:array[1..100] of longint;
 fi,fo:text;
//--------------------------------------------------
Procedure Docdl;
Begin
Assign(fi,'xoanoc.inp');
reset(fi);
Readln(fi,n,m);
For i:=1 to n do
begin
For j:=1 to m do
Read(fi,A[i,j]);
end;
close(fi);
End;
//--------------------------------------------------
Procedure Xuli;
Begin
Assign(fo,'xoanoc.out');
Rewrite(fo);
k:=1;
d:=0;
For i:=1 to n do
For j:=1 to m do
begin
B[k]:=A[i,j];
inc(k);
inc(d);
end;
for i:=1 to d-1 do
for j:=i+1 to d do
if b[i]>b[j] then
begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
T:=1;
P:=m;
Tr:=1; Di:=n;
dem:=1;
While dem<=n*m do
begin
        for j:=P downto T do
                begin
                a[Di,j]:=b[dem];
                inc(dem);
                end;
                dec(Di);
        for i:=Di downto Tr do
                begin
                a[i,T]:=b[dem];
                inc(dem);
                end;
                inc(T);
        for j:=T to P do
                begin
                a[Tr,j]:=b[dem];
                inc(dem);
                end;
                inc(Tr);
        for i:=Tr to Di do
                begin
                a[i,P]:=b[dem];
                inc(dem);
                end;
                dec(P);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(fo,a[i,j]:4);
writeln(fo);
end;
close(fo);
End;
//-----------------------------------
Begin
Clrscr;
Docdl;
Xuli;
Readln;
End.
code lại các bài khác nữa nhé Hân
Dạ thầy
avatar
tonguyengiahan237
Teen Chính hiệu
Teen Chính hiệu

Posts : 28
Reputation : -2
Join date : 06/11/2018
Age : 14
Location : TT Phú Phong Huyện Tây Sơn Tỉnh Bình Định

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by nganvonhat123 on Sun Dec 09, 2018 11:24 am

Code:
uses crt;
var
      fi,fo:text;
      n,m,i,j,ph,ta,tr,du,d,tg:integer;
      A:array[1..10000,1..10000]of integer;
      b:array[1..100]of integer;

              procedure sx;
              begin
                      assign(fi,'xoanoc.inp');
                      reset(fi);
                      readln(fi,n,m);
                      for i:=1 to n do
                              begin
                              for j:=1 to m do
                                      read(fi,a[i,j]);
                                      writeln;
                              end;
                              close(fi);
                      for i:=1 to n do
                              for j:=1 to m do
                              begin inc(d);b[d]:=a[i,j];end;
                      for i:=1 to  d-1 do
                              for j:=i+1 to d do
                              if b[i]>b[j] then
                              begin tg:=b[i];b[i]:=b[j];b[j]:=tg;end;

              end;


              procedure xoanoc;
              begin
                      assign(fo,'xoanoc.out');
                      rewrite(fo);
                      du:=n;ph:=m;tr:=1;ta:=1;d:=0;
                      while d<=n*m do
                      begin
                      for j:=ph downto ta do
                      begin
                      inc(d);
                      a[du,j]:=b[d];
                      end;
                      dec(du);

                      for j:=du downto tr do
                      begin
                      inc(d);
                      a[j,ta]:=b[d];

                      end;
                      inc(ta);

                      for i:=ta to ph do
                      begin
                      inc(d);
                      a[tr,i]:=b[d];

                      end;
                      inc(tr);

                      for j:=tr to du do
                      begin
                      inc(d);
                      a[j,ph]:=b[d];
                      end;
                      dec(ph);

              end;
              for i:=1 to n do
              begin
                      for j:=1 to m do
                      write(fo,a[i,j],#32);
                      writeln(fo);
              end;
              close(fo);
      end;





begin
clrscr;
sx;
xoanoc;
readln;
end.

avatar
nganvonhat123
Begin
Begin

Posts : 9
Reputation : -2
Join date : 24/11/2018
Age : 14

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by quantran on Mon Dec 10, 2018 1:20 pm

code::
Program Ma_tran_xoan_oc;
Uses crt;
Type Mang2c=array[1..50,1..50] of longint;
Var
 A:Mang2c;
 dem,n,m,i,j,T,P,Tr,Di,k,d,tg:longint;
 b:array[1..100] of longint;
 fi,fo:text;
//--------------------------------------------------
Procedure Docdl;
Begin
Assign(fi,'xoanoc.inp');
reset(fi);
Readln(fi,n,m);
For i:=1 to n do
begin
For j:=1 to m do
Read(fi,A[i,j]);
end;
close(fi);
End;
//--------------------------------------------------
Procedure Xuli;
Begin
Assign(fo,'xoanoc.out');
Rewrite(fo);
k:=1;
d:=0;
For i:=1 to n do
For j:=1 to m do
begin
B[k]:=A[i,j];
inc(k);
inc(d);
end;
for i:=1 to d-1 do
for j:=i+1 to d do
if b[i]>b[j] then
begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
T:=1;
P:=m;
Tr:=1; Di:=n;
dem:=1;
While dem<=n*m do
begin
        for j:=P downto T do
                begin
                a[Di,j]:=b[dem];
                inc(dem);
                end;
                dec(Di);
        for i:=Di downto Tr do
                begin
                a[i,T]:=b[dem];
                inc(dem);
                end;
                inc(T);
        for j:=T to P do
                begin
                a[Tr,j]:=b[dem];
                inc(dem);
                end;
                inc(Tr);
        for i:=Tr to Di do
                begin
                a[i,P]:=b[dem];
                inc(dem);
                end;
                dec(P);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(fo,a[i,j]:4);
writeln(fo);
end;
close(fo);
End;
//-----------------------------------
Begin
Clrscr;
Docdl;
Xuli;
Readln;
End.
avatar
quantran
Teen cá tính
Teen cá tính

Posts : 73
Reputation : -20
Join date : 18/06/2018
Age : 14
Location : Binh Thuan-Tay Son-Binh Dinh

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ma trận xoán ốc

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết