Другие языки программирования и технологии

Задача по С++ главная и побочная диагоналии.

Здравствуйте.
Есть задача. Дан двумерный массив целых чисел NxN. Найти сумму элементов находящихся в закрашенной области.


Допустим матрица у нас будет 5х5.
Код:

Эту задачу я смог решить.

А вот другая задача. Вопрос такой же, но закрашенная область другая.


Вот тут подскажите пожалуйста как решить это задачу. Как тут быть? Найти сначала сумму ниже главной? А как потом другую часть найти?
Для первой задачи циклы лучше объединить:
for(int i=0; i < 5; i++)
for(int k=0; k < 5; k++)
if( ( (i > k) && (i+k < 5-1) ) || ( (i < k) && (i+k > 5-1) ) ) s+=m[ i ] [ k ];

В принципе, для второй задачи надо только уточнить условие в if:

if ( (i > k) || (i >= (5-1)/2) ) ...
Тёма Мамекин
Тёма Мамекин
89 327
Лучший ответ
А вот ответная задача, раз Вы верхний вариант решили. Пусть матрица для простоты заполнена единицами. По Вашему рисунку следует, что закрашенная чёрным цветом площадь равна площади, закрашенной белым цветом. Отсюда вывод, что если посчитать сумму элементов, попадающих под закрашенную область чёрным цветом, и сравнить её с суммой элементов, попадающих под закрашенную область белым цветом, то эти суммы должны дать одинаковое значение.
Если Вы программно это докажете, то без проблем можно решить и нижнюю задачу!

Ну да, Вы думаете, наверное, что у меня зрение подводит!
Попробуйте линейкой померить и высчитать площади!

Я, конечно, понимаю некоторых неумных преподавателей, хотящих показать какую эффектную задачу они составили! Сухие программные задачи изобразили графически! Но тем самым подставляют сами себя и расписываются в своей безграмотности. Можно так нарисовать, но к задаче обязательно должна тогда быть приписка о том, как интерпретировать границу между областями, которая идёт прямо по данным. То есть пояснить, какой области эти данные будут принадлежать, чтобы избежать неоднозначности решения. А Вам, раз ВЫ учитесь, надо бы быть внимательнее к подобным задачам и уточнять, что же хотят от Вас получить и соответственно здесь уже выкладывать корректное условие задачи.