Форум программистов, компьютерный форум CyberForum.ru

Проверить является ли квадратная матрица " магическим квадратом" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.90
rita_0705
1 / 1 / 0
Регистрация: 30.04.2012
Сообщений: 125
29.05.2012, 18:25     Проверить является ли квадратная матрица " магическим квадратом" #1
Дан двумерный массив размером n х n , заполненный целыми числами. Выяснить, является ли массив магическим квадратом. В магическом квадрате суммы элементов по всем строкам, столбцам и двум диагоналям равны. Значение , которому должны быть равны указанные суммы, определить самостоятельно.

Вот код программы, программа запускается, но не зависимо от того какую именно матрицу я ввожу, выходит сообщение " не магический квадрат". какое то из условий не выполняется, пожалуйста под скажите в чем может быть ошибка.
C++
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
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <math.h>
main()
{int sum,n,i,j,k,g; float a[15][15], b[15];
cout <<"vvedite  razmernost matricy"<<"\n";
cin>>n;
for (i=1;i<=n;i++)
for (j=1; j<=n;j++)
{cout<<"vvedite element"<<"a"<<i<<j<<"\n";
cin>>a[j][j];}
b[i]=0;
for (i=1;i<=n;i++)
for (j=1; j<=n;j++)
{b[i]=b[i]+a[i][j];}
for (i=1;i<=n;i++)
for (j=1; j<=n;j++)
{b[n+i]=b[n+i]+a[i][j];}
k=n+i;
b[k+1]=0;
for (i=1;i<=n;i++)
for (j=1; j<=n;j++)
if (i==j) b[k+1]=b[k+1]+a[i][j];
b[k+2]=0;
for (i=1;i<=n;i++)
for (j=1; j<=n;j++)
if (i+j==n+1) b[k+2]=b[k+2]+a[i][j];
sum=b[1];g=0;
for (i=1;i<=k+2;i++)
{if (sum==b[i])g++;}
if (k+2==g)
cout<<"Magicheskii kvadrat";
else cout<<"ne magicheskii kvadrat";
getch();
return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2012, 18:25     Проверить является ли квадратная матрица " магическим квадратом"
Посмотрите здесь:

квадратная матрица магическим квадратом C++
является ли введенная с клавиатуры квадратная матрица "магическим" квадратом C++
Является ли матрица магическим квадратом C++
Определить ,является ли заданная квадратная матрица магическим квадратом C++
C++ Является ли матрица магическим квадратом
C++ Проверить, является ли введенная с клавиатуры квадратная матрица "Магическим квадратом"
C++ Определить, является ли матрица магическим квадратом
Является ли матрица "магическим квадратом" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
29.05.2012, 19:00     Проверить является ли квадратная матрица " магическим квадратом" #2
Держи мой вариант:
C++
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <conio.h> 
using namespace std;
const int n=3;
int main()
{
    setlocale(LC_CTYPE, "rus");
    int mas[n][n]={3,4,2,
                   2,3,4,
                   4,2,3}; // наш квадрат
    int mas1[8]={0,0,0,0,0,0,0,0}; // массив хранит суммы 
    int pos=0;
    //сумма по строкам
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            mas1[pos]+=mas[i][j];
        }
        pos++;
    }
    cout<<mas1[pos-1]<<endl;
    // сумма по столбцам
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            mas1[pos]+=mas[j][i];
        }
        pos++;
    }
    cout<<mas1[pos-1]<<endl;
    //сумма побочной диагонали
    for(int i=n;i>-1;i--)
    {
        for(int j=0;j<n;j++)
        {
            if(i==j)
            mas1[pos]+=mas[i][j];
        }
    }
    cout<<mas1[pos-1]<<endl;
 
    //сумма по главной диагонали
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(i==j)
            mas1[pos]+=mas[i][j];
        }
    }
    cout<<mas1[pos-1]<<endl;
 
    int value=mas1[0],count=0;
    for(int i=0;i<pos;i++)
    {
        if(mas1[i]==value) count++;
    }
    if(count==pos) cout<<"Магический квадрат."<<endl;
    else cout<<"Не является магическим квадратом."<<endl;
    getch();
    return 0;
}
Yandex
Объявления
29.05.2012, 19:00     Проверить является ли квадратная матрица " магическим квадратом"
Ответ Создать тему
Опции темы

Текущее время: 19:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru