مریع جادویی

اذهب الى الأسفل

مریع جادویی

پست  david2007 في السبت 13 ديسمبر 2008 - 17:25

با سلام خدمت دوستان عزیز
مربع جادویی چیست : مربعی که در آن جمع سطرها وستون ها و قطرها یکسان شود
ینی
اگر مریع ما 3*3 بود
2----9----4
7----5----3
6----1----8
که جمع همگی میشود 15
این بنده خدا (خودم) برنامه رو برای اعداد فرد نوشتم .. چون برای اعداد زوج نتونستم فرمولی گیر بیارم...در کتاب گسسته دبیرستان هم اشاره ایی به ان شده بود .
امیدوارم برنامه درست کار کنه
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

void main()
{

int i,j,n,m,p,d,l,max;
int a [40][40];

cout<<"plz enter your length of your martix (x<=11)and your num must be ODD: ";
cin>>n;
if(n%2==0 || n>13)
{
cout<<"\nERROR ";
getch();
exit(0);
}

m=n/2;
max=n+(m*2);
for (i=1;i<=max;i++)
for (j=1; j<=max ;j++)
a[i-1][j-1]=0;

i=n;
d=l=0;
p=0;
while (l<n)
{
while (i<=max-l)
{
p++;
a[d][i-1]=p;
i++;
d++;
}
l++;
i=n-l;
d=l;
}
clrscr();
for (i=0;i<max;i++ )
{
for (j=0;j<max;j++)
{
gotoxy(3*j+4,2*i+2);
if(a[i][j]!=0)
{
textcolor(12);
cprintf("%d",a[i][j]);
}
else
cout<<a[i][j];
}
cout<<endl<<endl;
}
for (i=1;i<=max;i++ )
for (j=1;j<=max ;j++)
{
int x=i-1;
int y=j-1;
if(a[x][y]!=0)
{
if (x<=m-1) a[x+n][y]=a[x][y];
if (x>=n+m) a[x-n][y]=a[x][y];
}

if(a[y][x]!=0)
{
if(x<=m-1) a[y][x+n]=a[y][x];
if(x>m+n-1) a[y][x-n]=a[y][x];
}
}


getch();
clrscr();
gotoxy(1,1);
cout<<" the sum of row and column is "<<(((n*n)+1)*n)/2;
for (i=m ;i<max-m ;i++)
for (j=m;j<max-m ;j++)
{
gotoxy(4*(j-m)+4,3*(i-m)+5);
textcolor(6);
cprintf("%d",a[i][j]);
}
getch();
clrscr();
textcolor(10);
cprintf("\nTHis PROGRAM is Written by");
textcolor(11);
cprintf(" alireza sh");
textcolor(10);
cprintf("\n\n\r\t thanks alot for Runnig it ");
cout<<endl<<"\n\nhave a good dream .. bye";

getch();
}

david2007

تعداد پستها : 126
تاريخ التسجيل : 2008-12-02

خواندن مشخصات فردي http://haminazdki.blogfa.com

بازگشت به بالاي صفحه اذهب الى الأسفل

رد: مریع جادویی

پست  Zamanian في الأحد 14 ديسمبر 2008 - 15:14

سلام
این برنامه کار میکنه؟؟به نظر می آد در حلقه ی for آن یک مشکلی وجود دارد :آن قسمت که در این for داریم : a[d][i-1]=p در این for،
i زیاد میشود درحالی که مثلا برای n=3 داریم i=4!! و اصلا سطر چهارمی نداریم.
avatar
Zamanian

تعداد پستها : 60
تاريخ التسجيل : 2008-11-27

خواندن مشخصات فردي

بازگشت به بالاي صفحه اذهب الى الأسفل

رد: مریع جادویی

پست  david2007 في الأحد 14 ديسمبر 2008 - 15:45

منظور تون حلقه ی while است ؟

david2007

تعداد پستها : 126
تاريخ التسجيل : 2008-12-02

خواندن مشخصات فردي http://haminazdki.blogfa.com

بازگشت به بالاي صفحه اذهب الى الأسفل

رد: مریع جادویی

پست  Zamanian في الأحد 14 ديسمبر 2008 - 16:15

david2007 نوشته است:منظور تون حلقه ی while است ؟

بله درست است while
avatar
Zamanian

تعداد پستها : 60
تاريخ التسجيل : 2008-11-27

خواندن مشخصات فردي

بازگشت به بالاي صفحه اذهب الى الأسفل

؟/؟

پست  david2007 في الأحد 14 ديسمبر 2008 - 16:25

خوب درست است . اما این به رابطه ریاضی حل این مساله بر می گردد
این مسله فقط برای اعداد فرد کار میکند
راه حل ریاضی این مسله برای 3*3 بدین گونه است
ابتدا مربعی به ضلع 5*5 میگریم سپس شروع میکنیم از اولین قطر اصلی ، قرار دادن اعداد ا تا 9
مثلا

* * * * *
* + + + *
* + + + *
* + + + *
* * * * *
علامت های مثبت خانه های اصلی ما وجواب حل مسله ما می باشند
>>

* * 1 * *
* 2 + 4 *
3 + 5 + 7
* 6 + 8 *
* * 9 * *


سپس اعدا 1 و 9 را که در یک ستون قرار دارند در جاهای خالی این ستون میگزاریم
وهمچینی 7 و 3 را که در یک سطر قرار دارند

که :

* * * * *
* 2 9 4 *
* 7 5 3 *
* 6 1 8 *
* * * * *

؟؟؟؟؟/
درسته دیگه ؟

david2007

تعداد پستها : 126
تاريخ التسجيل : 2008-12-02

خواندن مشخصات فردي http://haminazdki.blogfa.com

بازگشت به بالاي صفحه اذهب الى الأسفل

بازگشت به بالاي صفحه


 
صلاحيات هذا المنتدى:
شما نمي توانيد در اين بخش به موضوعها پاسخ دهيد