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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
@ndreyk@
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 5
#1

Определить, является ли матрица магическим квадратом - C++

08.09.2011, 07:58. Просмотров 385. Ответов 1
Метки нет (Все метки)

Дана целая квадратная матрица 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 <stdio.h>
#include <stdlib.h>
 
int main()
{
int k,ki,kj,i,j,a[2][2];
ki=0; kj=0; k=0;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
printf("a[%d][%d]=",i,j); scanf("%d",&a[i][j]);
 
}}
 
for(i=0;i<5;i++){
for(j=0;j<5;j++){
k++;
printf("%d ",a[i][j]);
if (k%5==0) printf("\n");
}}
 
int ki0=a[0][0]+a[0][1]+a[0][2]+a[0][3]+a[0][4];
int ki1=a[1][0]+a[1][1]+a[1][2]+a[1][3]+a[1][4];
int ki2=a[2][0]+a[2][1]+a[2][2]+a[2][3]+a[2][4];
int ki3=a[3][0]+a[3][1]+a[3][2]+a[3][3]+a[3][4];
int ki4=a[4][0]+a[4][1]+a[4][2]+a[4][3]+a[4][4];
 
int kj0=a[0][0]+a[1][0]+a[2][0]+a[3][0]+a[4][0];
int kj1=a[0][1]+a[1][1]+a[2][1]+a[3][1]+a[4][1];
int kj2=a[0][2]+a[1][2]+a[2][2]+a[3][2]+a[4][2];
int kj3=a[0][3]+a[1][3]+a[2][3]+a[3][3]+a[4][3];
int kj4=a[0][4]+a[1][4]+a[2][4]+a[3][4]+a[4][4];
 
if (((kj0==kj1)&&(kj1==kj2)&&(kj2==kj3)&&(kj3==kj4))&&
((ki0==ki1)&&(ki1==ki2)&&(ki2==ki3)&&(ki3==ki4)))
{printf("Yavlyaetsy!");}
else printf("Ne Yavlyaetsy!");
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2011, 07:58     Определить, является ли матрица магическим квадратом
Посмотрите здесь:
C++ Определить, является ли матрица магическим квадратом
C++ Определить является ли матрица магическим квадратом
C++ Определить, является ли матрица магическим квадратом
Определить, является ли матрица магическим квадратом C++
Определить, является ли матрица магическим квадратом C++
C++ Определить является ли матрица магическим квадратом
Определить, является ли матрица магическим квадратом C++
C++ Определить является ли матрица магическим квадратом
C++ Определить, является ли матрица магическим квадратом
C++ Определить, является ли квадратная матрица магическим квадратом
C++ Определить, является ли заданная целочисленная матрица магическим квадратом
Определить, является ли заданная матрица N-го порядка магическим квадратом. C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
08.09.2011, 10:56     Определить, является ли матрица магическим квадратом #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от @ndreyk@ Посмотреть сообщение
Дана целая квадратная матрица 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
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <ctype.h> //toupper
#include <stdio.h> //i/o
#include <conio.h> //getch
 
#define N 3 //Поставь число столбцов и строк которое хочешь, 
                //я поставил 3 чтобы сэкономить на проверке
 
int getRowSum(int iRow, int n, int arr[][N]);
int getColSum(int iCol, int n, int arr[][N]);
 
int main()
{
    bool IsMagic = true;
    char ch;
    int i,j,a[N][N];
    int RowSum[N];
    int ColSum[N];
    do
    {
        IsMagic = true;
        printf("Enter matrix\r\n");
        for(i = 0; i < N; i++)
        {
            for(j = 0; j < N; j++)
            {
                printf("a[%d][%d] = ",i + 1,j + 1); 
                scanf("%d",&a[i][j]);
            }
            
        }
        for(i = 0; i < N; i++)
        {
            RowSum[i] = getRowSum(i,N,a);
            ColSum[i] = getColSum(i,N,a);
            //Проверям равенство сумм соответсвующих строк и столбцов
            if(RowSum[i] != ColSum[i])
            {
                IsMagic = false;
                break;
            }
 
        }
        //Если суммы всех строк равны между собой
        //то равны между собой и суммы всех столбцов
        //т.к. уже известно что RowSum[i] == ColSum[i]
        for(i = 1; i < N; i++)
        {
            if(RowSum[i] != RowSum[i - 1])
            {
                IsMagic = false;
                break;
            }
        }
        if(IsMagic)
            printf("Matrix is magic\r\n");
        else
            printf("Matrix is NOT magic\r\n");
        printf("Y - new input\r\n");
        ch = getch();
    }
    while(ch == 'Y' || ch == 'y');
    return 0;
}
 
int getRowSum(int iRow, int n, int arr[][N])
{
    int sum = 0;
    for(int j = 0; j < n; j++)
        sum += arr[iRow][j];
    return sum;
}
 
int getColSum(int iCol, int n, int arr[][N])
{
    int sum = 0;
    for(int i = 0; i < n; i++)
        sum += arr[i][iCol];
    return sum;
}
[Результат работы]
Enter matrix
a[1][1] = 1
a[1][2] = 1
a[1][3] = 1
a[2][1] = 1
a[2][2] = 1
a[2][3] = 1
a[3][1] = 1
a[3][2] = 1
a[3][3] = 1
Matrix is magic
Y - new input
Enter matrix
a[1][1] = 2
a[1][2] = 1
a[1][3] = 1
a[2][1] = 1
a[2][2] = 1
a[2][3] = 1
a[3][1] = 1
a[3][2] = 1
a[3][3] = 1
Matrix is NOT magic
Y - new input
Yandex
Объявления
08.09.2011, 10:56     Определить, является ли матрица магическим квадратом
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru