Начало Новини Маркет Проекти Форум ИТ Работа Уроци Скриптове WiFi точки Още Вход


Нечетен магически квадрат

От kat51 / 15.09.2011 13:05
Размер на шрифта: A | A | A

Що е магически квадрат? Колко вида са? Ето отговорите:
Разделяме един квадрат с успоредни на страните му прави на известен брой редове и също толкова колони и си поставяме следната задача:нека запълним тази фигура последователно с естествени числа така, че във всяко малко поле да попадне по едно число от 1 до броя на полетата на квадрат и сумата на числата във всеки ред, във всяка колона и по продължение на двата диагонала да бъде една и съща.Другото наименование на магическите квадрати е таблица с еднакъв брой редове и колони. Най-малкият магически квадрат е 3х3. Често пъти първокласниците се връщат в къщи и занимават роднините си с квадрат 3х3 ,който трябва да попълнят с цифрите от 1 до 9 и да проверят дали сумата по редове,колони и диагинали е една и съща. Това е една от първите задачки, която решават цялото семейство.
Магическите квадрати биват три вида:
а/нечетни 3,5,7,9,….
б/четно-четни–тези, които броят на полетата на един ред се дели на четири т.е. 4,8,12,16,20,…
в/четно-нечетни- тези, които броят на полетата на един ред се дели на четири и остава остатък две т.е. 6,10,14,18,…
Правило за нечетен магически квадрат:Винаги се почва от първи ред в средата и се записва първото число т.е. 1 и чрез броене по диагонал продължаваме да броим.Ако се излиза извън рамките на квадрата се връщаме или в началото или най-отдолу.Ако при броенето числото се дели на броя на полетата на един ред се минава с едно поле надолу.
Пример: магически квадрат 5х5
17    24     1     8    15
23     5     7    14    16
 4     6    13    20    22
10    12    19    21     3
11    18    25     2     9

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include<iostream.h>
#include
<iomanip.h>
int main()
{
int a[20][20];
int i,j,k,n;
do
{
cout<<"n=";cin>>n;
if(n%2==0||n>19)
{
   
cout<<"n trebwa da e nechetno chislo i po-malko ot 19"<<endl;
   
cout<<"  Input n "<<endl;
}
}
while(n%2==0||n>19);//zashita za chetnost
i=1;
j=n/2+1;
for (k=1;k<=n*n;k++)
  {
     
a[i][j]=k;
     
if(k%n==0)i++;
     
else
     
{
         
i--;
             
j++;
         
if(i<1)i=n;
         
if(j>n)j=1;
      
}
  }
//izwejdane elementite na magicheski kwadrat
for(i=1;i<=n;i++)
 {
    
for(j=1;j<=n;j++)
          
cout<<setw(4)<<a[i][j];
          
cout<<endl;
 
}
cout<<endl<<endl;
}

Очаквайте продължение !

Статистика
Погледнат: пъти
Гласове: --
Оценка:
Действие
 



myTech.bg © 2004 - 2011 | Контакти | За реклама