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

Найти сумму элементов массива - C++

Восстановить пароль Регистрация
 
kivalrd
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 50
25.05.2014, 16:38     Найти сумму элементов массива #1
Друзья, помогите с задачей.
Условие: Дана матрица 5х5, найти сумму элементов заштрихованной области (изображение в прикреплённом файле).

В общем, идея у меня появилась одна: найти сумму области выше главной диагонали до ниже противоположной диагонали, вместе с ней включительно.
Т.е. это условие i < j - для элементов выше главной диагонали, и i + j > n + 1 - для элементов ниже противоположной диагонали.
Беда в том, что не знаю как это реализовать. Как сделать, чтобы посчитало сумму области выше главной диагонали до области ниже противоположной диагонали, соответственно всё наоборот?

Пробовал написать код, для проверки, чтобы просто заполнить эти области 1 и 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
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    const int n = 5;
    int a[n][n],
    int b[n][n] = {{5, 5, 5, 5, 5},
                   {5, 5, 5, 5, 5},
                   {5, 5, 5, 5, 5},
                   {5, 5, 5, 5, 5},
                   {5, 5, 5, 5, 5}};
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            a[i][j] = b[i][j];
 
// Заполняем массив а
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i < j) // выше главной диагонали
                a[i][j] = 0;
            if (i + j > n + 1) //до и ниже провоположной диагонали
                a[i][j] = 1;
        }
    }
 
// Выводим массив а
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            cout << setw (2) << a[i][j];
        cout << endl;
    }
    return 0;
}
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2014, 16:38     Найти сумму элементов массива
Посмотрите здесь:

C++ Найти сумму элементов главной диагонали и от каждого элемента массива отнять эту сумму
Функции в с++. Найти сумму элементов массива D, а также суммы квадратов и кубов элементов массива D. C++
Найти сумму тех элементов массива, цифровая запись которых дает четную сумму цифр C++
C++ Одномерные массивы и указатели (найти количество элементов массива, равных 0, сумму элементов массива...)
Найти сумму первого,последнего и центрального элементов массива из 20 элементов. C++
Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию C++
C++ Найти сумму четных отрицательных и сумму нечетных положительных элементов массива.
C++ Найти сумму тех элементов массива, цифровая запись которых дает четную сумму цифр, а также найти максимальный элемент массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,215
Завершенные тесты: 1
25.05.2014, 17:04     Найти сумму элементов массива #2
C++
1
2
3
4
5
6
7
8
9
10
11
// Заполняем массив а
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (j>i  && j<n-i  || j>n-i && j<i)
                a[i][j] = 1;
           else
                a[i][j] = 0;
        }
    }
kivalrd
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 50
25.05.2014, 18:06  [ТС]     Найти сумму элементов массива #3
zss, немножко не так работает, но огромное спасибо за наводку!
Немного переделав, получилось, что нужно:
C++
1
2
3
4
5
6
7
8
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if ( (j > i - 1 && j < n - i) || (i > j - 1 && j + i > n - 2) )
                a[i][j] = 1;
        }
    }
Найти сумму элементов массива

Соответственно и для нахождения суммы этих элементов:
C++
1
2
3
4
5
6
7
8
9
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if ( (j > i - 1 && j < n - i) || (i > j - 1 && j + i > n - 2) )
                sum += a[i][j];
        }
    }
Найти сумму элементов массива
Ещё раз спасибо!
Yandex
Объявления
25.05.2014, 18:06     Найти сумму элементов массива
Ответ Создать тему
Опции темы

Текущее время: 17:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru