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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Копирование памяти под std::string http://www.cyberforum.ru/cpp-beginners/thread1203607.html
Есть код: const int N = 3; string* pstr = (string*)malloc(sizeof(string) * N); string arrstr; memcpy(pstr, arrstr, sizeof(string) * N); pstr = "string0"; pstr = "string1";
C++ Записать всю информацию из файла в другой файл в файл нужно записывать информацию , которая хранится после чисел -1 -1 55, ниже указан пример информации в файле -1 -1 55 ufkahfku rhkauhkakhra hu ara aa raw raw aw -1 -1 http://www.cyberforum.ru/cpp-beginners/thread1203606.html
C++ Как записать все числа из файла в вектор?
Числа хранятся в таком формате, слово Fail потом идет набор чисел и заканчивается двумя пустыми строчками и потом повторяется ниже указан пример bla bla blal fail 9.755 0 2 55 25 2 52 52 2 2.525 2.2 52.5. dahkja ai a aia fail 1515.153315 5151.5 5 44 и так далее
Файлы: вывести информацию об абитуриентах, проживающих в деревнях с населением выше 30 человек C++
9. Ведомость абитуриентов содержит ФИО, населенный пункт проживания, суммарный балл. Информация о населенном пункте включает в себя население, тип пункта, область. Вывести информацию об абитуриентах, проживающих в деревнях с населением выше 30 человек и имеющих суммарный балл выше 100.
C++ Файловый ввод. Считывание по строкам http://www.cyberforum.ru/cpp-beginners/thread1203602.html
Нужно описать функцию для подсчета количества пустых строк в текстовом файле
C++ Файловый ввод/вывод. Двоичные файлы. Задача В файле содержатся номера автомобилей стоящих на стоянке (123, 467, 129 и др). Написать функцию, которая выведет сначала список авто с тремя одинаковыми цифрами, потом с двумя и в конце все остальные. Двоичный файл создать программно с использованием отдельной функции подробнее

Показать сообщение отдельно
Leon_AD
103 / 103 / 28
Регистрация: 11.04.2014
Сообщений: 160
08.03.2015, 19:07     Определить, является ли матрица магическим квадратом
Цитата Сообщение от ПерС Посмотреть сообщение
магический квадрат обычно включает ещё суммы по двум диагоналям
как-то так, не проверял
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
#include <iostream>
using namespace std;
 
int main () {
    int n,i,j,result,sum,sum0;
    int **a;
    do {
        cout << "Input matrix size ";
        cin >>n;
        if (n>1 && n<100) break;
    } while (1);
    a = new int * [n];
    for (i=0; i<n; i++) a[i] = new int [n];
    for (i=0; i<n; i++) for (j=0; j<n; j++) {
        cout << "Input a[" << i << "," << j << "]=";
        cin >> a[i][j];
    }
    result = 1;
    sum0 = 0;
    for (j=0; j<n; j++) sum0 += a[0][j];
    for (i=1; i<n; i++) {
        sum = 0;
        for (j=0; j<n; j++) sum += a[i][j];
        if (sum != sum0) { result = 0; break; }
    }
    if (result) {
        for (j=0; j<n; j++) {
            sum = 0;
            for (i=0; i<n; i++) sum += a[i][j];
            if (sum != sum0) { result = 0; break; }
        }
    }
    cout << (result == 1 ? "Yes" : "No");
    system ("pause>nul"); return 0;
}
Но ведь у Вас проверки по диагоналям нет.
Я тут написал, но может кто скажет как можно сократить. Или нельзя?
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
#include <iostream>
using namespace std;
void main()
{
    const int n=4;
    int a[n][n],maxSum(0),sum;
    bool magic(1);
 
    cout << "Enter "<< n*n << " numbers:\n";
    for(int i(0);i<n*n;i++)
        cin >> a[i/n][i%n];
    system("cls");
 
    for(int i(0);i<n;i++){
        for(int j(0);j<n;j++)
            cout << a[i][j] << " ";
        cout << endl;
    }
    cout << endl;
    //
    for(int j(0);j<n;j++)
        maxSum+=a[0][j];
    for(int i(1);i<n;i++){
        sum=0;
        for(int j(0);j<n;j++)
            sum+=a[i][j];
        if(sum!=maxSum) {
            magic=0;
            break;
        }
    }
    if(magic)
        for(int j(0);j<n;j++){
            sum=0;
            for(int i(0);i<n;i++)
                sum+=a[i][j];
            if(sum!=maxSum) {
                magic=0;
                break;
            }
        }
    if(magic){
        sum=0;
        for(int i(0);i<n;i++)   
            sum+=a[i][i];
        if(sum!=maxSum) magic=0;
    }
    if(magic){
        sum=0;
        for(int i(n-1),k(0);i>=0;i--,k++)   
            sum+=a[i][k];
        if(sum!=maxSum) magic=0;
    }
    if(magic) cout << "Magic\n";
    else cout << "No magic\n";
    system("pause");
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru