Програма за проверка на магически квадрат

Written By Software on неделя, 6 септември 2009 г. | 8:17



В този урок ще ви покажа как да напишете програма, която да проверява дали въведена квадратна таблица е магически квадрат или не.

Това е сорс кода на програмата:

#include
int check()
{
int a[20][20],n;
cout << "Molia vavedete n.";
cin >> n;
for (int i=0; i
{
for (int j=0; j
{
cin >> a[i][j];
}
}
int sum1=0, sum2=0;
for (i=0; i
{
sum1+=a[i][i];
sum2+=a[i][n-1-i];
}
if (sum1!=sum2) return 0;
for (i=0; i
{
sum2=0;
for (int j=0; j
{
sum2+=a[i][j];
}
if (sum1!=sum2) return 0;
}
for (int j=0; j
{
sum2=0;
for (i=0; i
{
sum2+=a[i][j];
}
if (sum1!=sum2) return 0;
}
return 1;
}

int main()
{
if (check())
{
cout << "Tova e magicheski kvadrat.";
}
else cout << "Tova ne e magicheski kvadrat.";
return 0;
}


Използваме функции, за да напишем програмата. Фонкцията "check" извършва всички действия. Първоначално в нея декларираме двумерен масив с максимални размери 20 на 20. След това потребителя, който използва програмата трябва да въведе страните на квадратната мрежа - това става само с едно число. След въвеждането на големината на мрежата, потребителят въвежда всички числа (желателно е след края на всеки ред да натиска Enter, за да си личи точната мрежа). След като се въведат всички числа от мрежата, програмата започва проверки на сумите по всички редове, колони и диагонали.

Първоначално се проверяват и сверяват двата диагонала, като техните суми се запазват в променливите "sum1" и "sum2". Ако двете суми НЕ съвпадат, функцията приключва работа и преминава към функцията "main", където се извежда съобщение, че мрежата не е магически квадрат. Но ако сумите по двата диагонала съвпадат, започва проверка по редовете и колоните. При първото несъвпадение, функцията прекъсва работа. Ако всички сравнения на сумите по всички редове, колони и диагонали са верни, функцията "main" ще изведе съобщение, че въведената мрежа от числа е магически квадрат.

0 коментара:

Публикуване на коментар