PDA

View Full Version : matrix



AsgharDasTala
سه شنبه 09 تیر 1383, 00:09 صبح
لطفاً نظرتان را در مورد چگونگی حل سؤال زیر بیان کنید:
" برنامه ای بنویسید که عدد صحیح و مثبت n را بخواند( n عددی است بین 3و31 ) آنگاه اعداد از یک تا n^2 را در ماتریس n×n طوری قرار دهد که جمع عناصر کلیه ی سطرها و ستونها و دو قطر با یکدیگر برابر باشند."

امیر-نا
چهارشنبه 10 تیر 1383, 23:29 عصر
با سلام
می تونین راه حل این مسپله را در کتاب ساختمان داده ها در ++C نوشته عین الله جعفر نژاد قمی مشاهده کنین(در تمرین های آخر فصل 1 یا 2)
یا می تونین در Google سرچی به نام Magic Squere جستجو کنید یعنی مربع جادویی یا مر بع وفقی.
اگه مر جع ریاضی می خواهین کتاب : اعداد طبیعی نوشته قلزم از انتشارات فاطمی .




اگه پیدا نکردین خبرم کنین

امیر

رضا جاسبی
یک شنبه 25 بهمن 1383, 18:23 عصر
من دو روش برای این کار بلدم البته اگر درست یادم مونده باشه نکته مهم اینه که اگر اشتباه نکنم تعداد سطر ها باید فرد باشه.
1- عدد 1 رو در سطر اول و ستون وسط قرار می دهیم
2- برای اعداد بعدی یک ستون به راست و دو سطر به پایین می رویم
3- اگر از سطر یا ستون خارچ شدیم از طرف دیگر جدول وارد می شویم
4- در مضربهای n به خانه ای می رسیم که قبلا پر شده است. در این حالت فقط یک سطر پایین می رویم یعنی مثلا اگر n برابر 5 باشد 5 در سطر 4 و ستون 2 و 6 در سطر 5 ستون 2 است.

روش دوم مانند همین است با این تفاوت که حرکت اسبی ( یک ستون و دو سطر ) نداریم بلکه یک ستون به راست و یک خانه به بالا داریم و در حالت تکرار فقط یک خانه به بالا می رویم.

لطفا حالت تکرار را دقت کنید . ممکنه من اشتباه کنم و درست یادم نمونده باشه. مطمئنم که با چند مثال و Try & Error می تونی به جواب برسی

AsgharDasTala
چهارشنبه 28 بهمن 1383, 09:46 صبح
با تشکر؛
ابتدا عدد 1 را در سطر اول وستون وسط قرار می دهیم سپس یک سطر به راست و یک سنون به بالا رفته و عدد بعدی را می گذاریم وبه همین ترتیب ادامه می دهیم.
هرگاه به یک خانه ی پر رسیدیم یک سطر به پایین آمده و عدد بعدی را می گذاریم و دوباره به ترتیب بالا عمل می کنیم.

aghaee
شنبه 04 آذر 1385, 07:12 صبح
امیر جان سلام
من برای پرو‍ژه دانشگاهیم نیاز به سورس این برنامه دارم اگه امکانش هست در این رابطه راهنماییم کنید متشکرم

setare2007
جمعه 14 اردیبهشت 1386, 08:34 صبح
سلام
دیدم همگی به این برنامه نیاز دارید منم اونو در اختیارتون میزارم
البته با پاسکاله

uses
crt;
var
a:array[1..10,1..10]of byte;
row,col,i,j,n,x,y:integer;
begin
clrscr;
write('Enter number(odd): ');
readln(n);
writeln;
row:=1;
col:=n div 2+1;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=0;
a[row,col]:=1;
for i:=2 to n*n do
begin
row:=row-1;
col:=col-1;
if(row=0) then
row:=n;
if(col=0) then
col:=n;
if(a[row,col]=0) then
a[row,col]:=i
else
begin
if (row>=n) and (col>=n) then
begin
row:=row-n;
col:=col-n;
end;
row:=row+2;
col:=col+1;
a[row,col]:=i;
end;
end;
for x:=1 to n do
begin
for y:=1 to n do
begin
if (a[x,y]>=1) and (a[x,y]<=9) then
write(' ');
write(' ',a[x,y]);
end;
writeln;
end;
readln;
end.