em chiu ko hieu ,ai lam duoc bai nay lam on gui vao hom mail cua em ,em cam on nhieu
email:trongduck5d@gmail.com
em chiu ko hieu ,ai lam duoc bai nay lam on gui vao hom mail cua em ,em cam on nhieu
email:trongduck5d@gmail.com
Nè
Mình nghĩ vậy
1, Tạo cột đầu tiên : i:=1,j:=1--->n a[i,j]:=j
2, Dùng 2 vòng for xác định mảng như sau
For i:=1 to m do
For j:=2 to n do
a[i,j]:=a[i;j-1]+n
Nếu có ý kiến đóng góp xin các bạn post ngay lên để cùng thảo luận <thanks>
procedure dao(var a:matrix;n:integer;l:integer);
var j:integer;
begin
for j:=1 to n div 2 do
hv(a[l,j],a[l,n-j+1]);
end;
Mình không hiểu lắm, thuong giải thích kĩ hơn được không?
thả lòng cái thằng HÀng, cho cột chạy thôi(vì CT con mà) khi MAIN gọi nó thì phải để trong vòng FOR i:=.....
VD: voi l=1, n=4 ->n div 2=2;
gia su dang xet o hàng 1(l=1);
HV(a[1,1],a[1,4]);
HV(a[1,2],a[1,3])-->hết-->mảng đã đảo duoc 1 hàng .....
(bạn cứ thử vài cái TEST chạy bằng tay là OK mà)
Bạn xem bài này rồi tham khảo nhé!
chúc bạn thành công.
{chuong trinh tao mot vong xoan oc
tang dan}
uses crt;
var
a:array[1..5,1..5] of integer;
w,dong,cot,dtang,ctang,dgiam,cgiam,gt:integer;
i,j:integer;
begin
clrscr;
dtang:=5;dgiam:=1;ctang:=5;cgiam:=1;
dong:=1;cot:=1;
gt:=0;
for w:= 1 to 5 * 5 do
begin
a[dong,cot]:=w;
case gt of
0: begin {tang cot}
if cot < ctang then
cot:=cot+1
else
begin
gt:=1;
dong:=dong+1;ctang:=ctang-1;
end;
end;
1:begin {tang dong}
if dong< dtang then
dong:=dong+1
else
begin
gt:=2;{gam cot}
cot:=cot-1;dtang:=dtang-1;
end;
end;
2:begin
if cot>cgiam then
cot:=cot-1
else
begin
gt:=3;
dong:=dong-1;cgiam:=cgiam+1;
end;
end;
3:begin
if dong>dgiam+1 then
dong:=dong -1
else
begin
gt:=0;cot:=cot+1;dgiam:=dgiam+1;
end;
end;
end;
end;
for i:=1 to 5 do
begin
for j:=1 to 5 do
write(a[i,j]:4);
writeln;
end;
readln;
end.
[=========> Bổ sung bài viết <=========]
Xét các số nguyên từ 1-->N, các số này được sắp xếp theo thứ tự từ điển.
ví dụ: N=11 thì ta có dãy số sau:
1 10 11 2 3 4 5 6 7 8 9
kí hiệu Q(n,k) là vị trí số k trong dãy số được sắp xếp theo cách nói trên.
ví dụ:
Q(11,2) = 4
Bài toán:
Cho các số nguyên k và M
Nhiệm vụ:
Hãy tìm số nguyên n nhỏ nhất thỏa mãn Q(n,k)=M
ví dụ:
k=2; M=4 ---> N=11
Mời các cao thủ giúp mình nhé.
[=========> Bổ sung bài viết <=========]
Xét các số nguyên từ 1-->N, các số này được sắp xếp theo thứ tự từ điển.
ví dụ: N=11 thì ta có dãy số sau:
1 10 11 2 3 4 5 6 7 8 9
kí hiệu Q(n,k) là vị trí số k trong dãy số được sắp xếp theo cách nói trên.
ví dụ:
Q(11,2) = 4
Bài toán:
Cho các số nguyên k và M
Nhiệm vụ:
Hãy tìm số nguyên n nhỏ nhất thỏa mãn Q(n,k)=M
ví dụ:
k=2; M=4 ---> N=11
Mời các cao thủ giúp mình nhé.
[=========> Bổ sung bài viết <=========]
Các cao thủ hãy vào đây nè
http://hoanvu1133.blogtiengviet.net/
Được sửa bởi hoanvu1133 lúc 13:17 ngày 19-04-2008 Reason: Bổ sung bài viết
mấy ông lam` nhìu cách nhĩ
Program Mang;
Uses crt;
Const Max=100;
Var A,C: Array[1..Max,1..Max] of Integer;
..... B: Array[1..Max*Max] of Integer;
Procedure Nhap;
Var i,j:Integer;
Begin
.. Clrscr;
.. Write('Nhap so hang, so cot: ');
.. Readln(m,n);
.. For i:=1 to m do
..... Begin
........ Writeln('Nhap cac phan tu cua hang ',i)
........ For j:=1 to n do Read(A[i,j]);
..... End;
End;
Procedure Chuyen_2c_1c;
Var i,j,l:Integer;
Begin
.. l:=0;
.. For i:=1 to m do
..... For j:=1 to n do
........ Begin
........... l:=l+1;
........... B[l]:=A[i,j];
........ End;
End;
Procedure Chuyen_1c_2c;
Var i,j,l:Integer;
Begin
.. l:=0;
.. For j:=1 to n do
..... For i:=1 to m do
........ Begin
........... l:=l+1;
........... C[i,j]:=B[l];
........ End;
End;
Procedure Xuli;
Var i,j:Integer;
Begin
.. For j:=1 to n do
..... If j mod 2 = 0 then
........ For i:=1 to m div 2 do C[i,j]:=C[m-i+1,j];
End;
Procedure Xuat;
Var i,j:Integer;
Begin
.. Writeln('Mang kq:');
.. For i:=1 to m do
..... Begin
........ For j:=1 to n do Write(C[i,j]:8);
........ Writeln;
..... End;
.. Readln;
End;
BEGIN
.. Nhap;
.. Chuyen_2c_1c;
.. Chuyen_1c_2c;
.. Xuli;
.. Xuat;
END.
Giải thích tác dụng các thủ tục:
Nhap: Nhập dữ liệu từ bàn phím {Lưu trong mảng 2 chiều A}. VD:
........ 1 2 3
........ 4 5 6
........ 7 8 9
........ 10 11 12
Chuyen_2c_1c: Tạo mảng 1 chiều B lưu:
...... 1 2 3 4 5 6 7 8 9 10 11 12
Chuyen_1c_2c: Tạo mảng 2 chiều C lưu:
........ 1 5 9
........ 2 6 10
........ 3 7 11
........ 4 8 12
Xuli: Biến đổi mảng C thành
........ 1 8 9
........ 2 7 10
........ 3 6 11
........ 4 5 12
Xuat: In kq (mảng C) ra màn hình
[=========> Bổ sung bài viết <=========]
Program BT;
Uses crt;
Const max = 1000;
Var Q: Array[1..max] of Integer;
...... N,M,k:Integer;
{Kiểm tra x có nhỏ hơn y theo thứ tự từ điển không}
Function Nho_hon(x,y:Integer): Boolean;
Var c1,c2: String;
Begin
.. Str(x,c1); Str(y,c2);
.. If c1<c2 then Nho_hon:=True Else Nho_Hon:=False;
End;
{Tạo Dãy Q bằng đệ quy}
Procedure Tao_Q(N:Integer);
Var i:Integer;
Begin
.. If N=1 then Q[N]:=1
.. Else
..... Begin
........ Tao_Q(N-1);
{------------Chèn N vào dãy Q[N-1] cho đúng trật tự từ điển------------}
........ i:=N-1;
........ While (i>0) and (Nho_Hon(N,Q[i])) do
........... Begin
.............. Q[i+1]:=Q[i];
.............. i:=i-1;
........... End;
........ Q[i+1]:=N;
{----------------------------------------------------------------------}
..... End;
End;
BEGIN
.. Write('Nhap k,M: ');
.. Readln(k,M);
.. N:=0;
.. Repeat
..... N:=N+1;
..... Tao_Q(N);
..... If Q[k]=M then Writeln('N = ',N);
.. Until Q[k]=M;
END.
Được sửa bởi nhat_truong lúc 00:39 ngày 24-06-2009 Reason: Bổ sung bài viết
Làm thế nào để thêm cột và hàng vào mảng hai chiều? Giúp mình với, mình đang cần gấp.
Theo em thuat toan la the nay, cac pac tét xem;
var a,b:aray [1..100] of integer;
procedure nhap;
var i,j,n:integer;
begin
read(n);
for i:=1 to n do
[=========> Bổ sung bài viết <=========]
for j:=1 to n do
read(a[i,j]);
end;
procedure xuly;
var i,j:integer;
begin
i:=1;
repeat
for i:=1 to n do
b[i,j]:=a[i,j];
inc(j);
until j=n;
end;
procedure xuat;
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(b[i,j]);
writeln;
end;
begin
nhap;
xuly;
xuat;
end.
[=========> Bổ sung bài viết <=========]
the thoi ai co y kien cu bao voi em
Được sửa bởi Heroboss12 lúc 21:08 ngày 09-08-2009 Reason: Bổ sung bài viết
Bookmarks