الگوریتمی به صورت شبه کد می خواهم که عدد فردی را بگیره
و مربع جادویی اون رو تولید کنه
مثلا برای عدد 3داریم
8 1 6
3 5 7
4 9 2
اگه روش حلی برای تشکیل این مربع ها دارین برام بفرستین یا سایت معرفی کنید
Printable View
الگوریتمی به صورت شبه کد می خواهم که عدد فردی را بگیره
و مربع جادویی اون رو تولید کنه
مثلا برای عدد 3داریم
8 1 6
3 5 7
4 9 2
اگه روش حلی برای تشکیل این مربع ها دارین برام بفرستین یا سایت معرفی کنید
salam een Morabae Jadooeye be zabane Pascal
jaye semi colon hasho khodet dorost kon chon too mororgar man dorost nemishe
program msquare;
const
MAX_SIZE=15;
var
square:array[1..MAX_SIZE,1..MAX_SIZE] of integer;
i,j,row,column,sum:integer;
count:integer;
size:integer;
BEGIN
sum:=0;
writeln;
write('Enter the size of the square:');
readln(size);
if ((size<1) or (size>MAX_SIZE)) then
begin
writeln('Error! size is out of range.');
readln;
exit;
end;
if not ((size mod 2<>0)) then
begin
writeln('Error! size is even.');
readln;
exit;
end;
for i:=1 to size do
for j:=1 to size do
square[i,j]:=0 ;
square[1,trunc((size+1)/2)]:=1;
i:=1;
j:=trunc((size+1)/2);
for count:=2 to size*size do
begin
if (i-1=0) then
row:=size
else
row:=i-1;
if (j-1=0) then
column:=size
else
column:=j-1;
if (square[row,column]<>0) then
i:=i+1
else
begin
i:=row;
if (j-1=0) then
j:=size
else
j:=j-1;
end;
square[i,j]:=count;
end;
writeln('Magic square of size ',size,': ');
writeln;
for i:=1 to size do
begin
for j:=1 to size do
write(square[i,j]:4);
writeln;
writeln;
end;
writeln;
for i:=1 to size do
sum:=sum+square[i,1];
writeln('The sum of any ( row,column and diameter ) is : ',sum);
writeln;
write('Press Enter to Exit ...');
readln;
end.