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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
farm95
Сообщения: 4
Зарегистрирован: 16 ноя 2013, 15:11

Приветствую всех!

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

Изображение

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

Код: Выделить всё

#include <vcl.h>
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main ()
{ int s=0, m[5][5], srand(time(0));

for (int i=0; i<5; i++)
{
for (int k=0; k<5; k++)
{ m[i][k]=rand()%10;
cout<<m[i][k]<<" ";
}
cout<<"\n";
}

for (int i=0; i<5; i++)
{
for (int k=0; k<5; k++)

if((i>k)&&(i+k<5-1))
s=s+m[i][k];
}


for (int i=0; i<5; i++)
{
for (int k=0; k<5; k++)
if((i<k)&&(i+k>5-1))
s=s+m[i][k];
}
cout<<"s="<<s;

int end;
cin>>end;
return 0;
}
Эту задачу я смог решить


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

Изображение

Вот тут подскажите пожалуйста как решить это задачу. Как тут быть? Найти сначала сумму ниже главной? А как потом другую часть найти?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Написал алгоритм на языке, который изобрёл, пока писал алгоритм. Этакая маленькая загадка "Пойми, что я имел в виду". Надеюсь поможет :)

Код: Выделить всё

Сумма = 0;

Цикл i от 0 до N-1
{
   Правая_граница_j = 0;

   Если i <= N/2 то Правая_граница_j = i
   Иначе Правая_граница_j = N-1;

   Цикл j от 0 до Правая_граница_j
   {
      Сумма = Сумма + Массив[i][j];
   }
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Если i - номер столбца, а k - номер строки (0,0 - левый верхний угол), то S[i,k] принадлежит закрашенной области, если k>min(N-i, N/2)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить