Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ridikyu
0 / 0 / 2
Регистрация: 24.10.2013
Сообщений: 83
#1

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

30.11.2014, 18:59. Просмотров 595. Ответов 5
Метки нет (Все метки)

Определите, является ли квадратная матрица размером N × N магическим квадратом. Магический квадрат — это такая матрица, в которой сумма всех элементов по любой горизонтали и вертикали, а так же по двум главным диагоналям одинаковы.

Входные данные
В первой строке вводится число N (1 ≤ N ≤ 20), в последующих N строках вводятся по N целых чисел, не превосходящих по модулю 10000.

Выходные данные
Вывести слово YES если заданная матрица является магическим квадратом и NO в противном случае.

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
#include <iostream>
 
int mas[10000][10000];
int s, s1, d, d1;
int main()
{
    int n;
    std::cin >> n;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0 ; j < n; ++j)
        {
            std::cin >> mas[i][j];
        }
    }
            
    for (int i = 0; i < n; ++i){
        s += mas[0][i];
    }
    
    for (int i = 0; i < n; ++i){
        s1 += mas[i][0];
    }
 
    for (int i = 0, j = 0; i<n; i++, j++)
    {
        d += mas[i][j];
    }
 
    for (int i = 0, j = n - 1; j >= 0; i++, j--)
    {
        d1 += mas[i][j];
    }
        
        if (s == s1 && d && d1) std::cout << "YES" << std::endl;
        else std::cout << "NO" << std::endl;
        return 0;
}
Опять не могу найти че не так.

Добавлено через 15 минут
добавил
C++
1
2
3
4
5
{for (int i = 0; i < n; ++i)
        for (int j = 0 ; j < n; ++j)
            sum += (mas[i][j]);
sum1 = sum / n;
    }
все равно ни как
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2014, 18:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить, является ли матрица магическим квадратом (C++):

Определить является ли матрица магическим квадратом
Имеется массив 3х3. определить является ли такая матрица магическим квадратом....

Определить, является ли матрица магическим квадратом
Разработать алгоритм и по нему составить два варианта программы для обработки...

Определить является ли матрица магическим квадратом
Дана целая квадратная матрица n-го порядка определить является ли она...

Определить, является ли матрица магическим квадратом
Дана целая квадратная матрица n-го порядка определить является ли она...

Определить, является ли матрица магическим квадратом
6. Дана целая квадратная матрица п-го порядка. Определить, является ли она...

Определить, является ли матрица магическим квадратом
Дана целая квадратная матрица n-го порядка. Определить, является ли она...

5
4unkur
16 / 16 / 10
Регистрация: 16.06.2014
Сообщений: 177
30.11.2014, 19:00 #2
ridikyu, это добавьте s= s1= d= d1 = 0; после их объявления
0
ridikyu
0 / 0 / 2
Регистрация: 24.10.2013
Сообщений: 83
30.11.2014, 19:03  [ТС] #3
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
#include <iostream>
 
int mas[10000][10000];
int s=0, s1=0, d=0, d1=0, sum=0, sum1=0;
int main()
{
    int n;
    std::cin >> n;
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0 ; j < n; ++j)
        {
            std::cin >> mas[i][j];
        }
    }
            
    for (int i = 0; i < n; ++i){
        s += mas[0][i];
    }
    
    for (int i = 0; i < n; ++i){
        s1 += mas[i][0];
    }
 
    for (int i = 0, j = 0; i<n; i++, j++)
    {
        d += mas[i][j];
    }
 
    for (int i = 0, j = n - 1; j >= 0; i++, j--)
    {
        d1 += mas[i][j];
    }
 
    {for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            sum += (mas[i][j]);
    }
 
    sum1 = sum / n;
        
        if (s == s1 && d && d1 && sum1) std::cout << "YES" << std::endl;
        else std::cout << "NO" << std::endl;
        return 0;
}
ни как
0
D_in_practice
331 / 331 / 331
Регистрация: 02.10.2014
Сообщений: 666
30.11.2014, 19:04 #4
Лучший ответ Сообщение было отмечено ridikyu как решение

Решение

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
#include <iostream>
 
int main(){
        
    const int N = 20;
    int mas[N][N], n;
    std::cin >> n;
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j)
            std::cin >> mas[i][j];
            
    int s = 0;
    for(int i = 0; i < n; ++i)
        s += mas[i][0];
        
    int flag = 1;
    int d = 0;
    int d1 = 0;
    for(int i = 0; i < n; ++i){//ГЁГ№ГҐГ¬ ñóììû ГўГ® ГўГ±ГҐГµ ñòîëáöГ*Гµ ГЁ ñòðîêГ*Гµ!!!
                               //Г* Г*ГҐ òîëüêî Г± ГЁГ*äåêñîì 0
        d += mas[i][i];
        d1 += mas[i][n - 1 - i];
        
        int sh = 0;
        int sw = 0;
        for(int j = 0; j < n; ++j){
            sh += mas[j][i];
            sw += mas[i][j];
        }
        
        if (sh != s || sw != s){
            flag = 0;
            break;
        }
    }
    
    if (d != s || d1 != s)
        flag = 0;
        
    if (flag == 1)
        std::cout << "YES" <<std::endl;
    else
        std::cout << "NO" <<std::endl;
    
    return 0;   
}
1
ridikyu
0 / 0 / 2
Регистрация: 24.10.2013
Сообщений: 83
30.11.2014, 19:10  [ТС] #5
D_in_practice, да спасибо я понял в чем косяк и добавил эту строчку
C++
1
2
3
4
5
6
{for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            sum += (mas[i][j]);
    }
 
    sum1 = sum / n;
подумал она меня этого косичка избавит))
0
ridikyu
0 / 0 / 2
Регистрация: 24.10.2013
Сообщений: 83
14.12.2014, 13:58  [ТС] #6
D_in_practice, привет помоги пожалуйста по этой теме http://www.cyberforum.ru/cpp-beginners/thread1329537.html#post6984685
0
14.12.2014, 13:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2014, 13:58
Привет! Вот еще темы с решениями:

Определить, является ли матрица магическим квадратом
Дана целочисленная квадратная матрица n-го порядка. Определить, является ли...

Определить, является ли матрица магическим квадратом
помогите решить :sorry: 1)Дана целая квадратная матрица n-го порядка....

Определить является ли матрица магическим квадратом
Здравствуйте. помогите написать программу на языке С++. Дана целая матрица n-го...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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