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

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

Войти
Регистрация
Восстановить пароль
 
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
#1

"Магические" квадраты - C++

09.04.2011, 21:41. Просмотров 864. Ответов 1
Метки нет (Все метки)

Задача Magic. Существует огромное количество разных видов "магических" квадратов. Одним из них является такой квадрат:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

Выберем любое число, например, 8. Вычеркнем числа, которые стоят в одном рядке и одном столбике с ним. Из чисел, которые остались, опять выберем произвольное число и повторим операцию вычеркивания. Будем делать так до тех пор, пока не останется не вычеркнутых чисел. Теперь, если сложить выбранные нами числа, то для этого квадрата эта сума будет постоянная (в нашем случае 34) и не будет зависеть от того, какие числа ты выбрали. Напишите программу, которая определит, является ли квадратная матрица NxN "магическим" квадратом", и если да, то найдет "магическую" сумму.

Технические условия. Программа читает с клавиатуры число N (2<=N<=1000), а дальше N рядков по N чисел через пропуск в каждом. Программа выводит на экран "магическую" сумму или 0, если квадрат не магический.

Пример
Ввод:
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Вывод:
34
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 21:41     "Магические" квадраты
Посмотрите здесь:

Задача "Квадраты" - C++
Нужно вывести на экран таблицу квадратов. Input Со стандартного устройства ввода вводится 1 натуральное число – N, не превосходящее ...

Вопрос "хорошего тона", "стиля" в программировании - правильное использование #include - C++
Привет. Вступление. Имею небольшой опыт в программировании. Сейчас мне дали разобрать один проект, как пример работы HGE и Box2D. ...

Дано предложение. Заменить в нем все вхождения буквосочетания "да" на "нет" - C++
Дано предложение. Заменить в нем все вхождения буквосочетания да на нет.

Выяснить, имеется ли пара соседствующих символов ",-" "-," (запятая, тире) в тексте - C++
#include &lt;iostream.h&gt; //Уважаемые программисты помогите переделать эту //Вот задание (Выяснить, имеется ли пара соседствующих символов...

"Красный Тигр" vs. "Желтый Заяц". А каким будет 3005 год? - C++
помогите пожалуйста решить В некоторых странах Дальнего Востока (Китае, Японии и др.) использовался (и неофициально используется в...

Превратить заданную пользователем дату в формате "дд.мм.гг" в формат "месяц дд. год" - C++
Помогите пожалуйста написать программу на рядки. Условие Превратить заданную пользователем дату в формате &quot;дд.мм.гг&quot; в формат &quot;месяц...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "строка" - C++
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale(...

Структура: error C2079: "A::myElem" использует неопределенный struct "A::B" - C++
class A { public: struct B; private: B myElem; }; struct A::B {

Обучение по книге Страуструпа "принципы и практика C++". Не выводится "Hello, World" - C++
Ребят, помогите пожалуйста, пропал на первом же примере из книги, автор даёт код для вывода Hello world!#include &quot;std_lib_facilities.h&quot; ...

В заданном двоичном коде заменить все цифры "0" на "1" и наоборот - C++
составить алгоритм который в заданном двоичном коде заменяет все цифры &quot;0&quot; на &quot;1&quot; и наоборот


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
09.04.2011, 22:58     "Магические" квадраты #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
#include <fstream>
#include <vector>
 
using namespace std;
 
ifstream cin("input.txt");
ofstream cout("output.txt");
 
int n;
vector<vector<int> > a;
 
bool isMagic()
{
    for(int i = 0; i < n-1; i++)
        for(int j = 0; j < n-1; j++)
            if(a[i][j]+a[i+1][j+1] != a[i][j+1]+a[i+1][j])
                return false;
    return true;
}
 
int main()
{
    cin >> n;
    a.resize(n,vector<int>(n));
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            cin >> a[i][j];
    if(isMagic())
    {
        int sum = 0;
        for(int i = 0; i < n; i++)
            sum += a[i][i];
        cout << sum;
    }
    else
        cout << 0;
}
Ответ Создать тему
Опции темы

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