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

Вычислить сумму элементов выше главной диагонали матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 57, средняя оценка - 4.84
Markys
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
31.07.2012, 14:39     Вычислить сумму элементов выше главной диагонали матрицы #1
ввести двумерный массив b [4,4]. вычислить сумму элементов лежать выше главной диагонали матрицы и отобразить на экране.
p. s
помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2012, 14:39     Вычислить сумму элементов выше главной диагонали матрицы
Посмотрите здесь:

C++ Вычислить сумму элементов , pасположенных на главной диагонали и выше ее.
Вычислить сумму элементов , pасположенных на главной диагонали и выше ее C++
Найти сумму модулей элементов матрицы, находящихся выше главной диагонали C++
Нужна блок схема к задаче - посчитать сумму элементов выше главной диагонали матрицы 5х5 C++
C++ Вычислить в функции сумму модулей элементов выше главной диагонали матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
31.07.2012, 14:59     Вычислить сумму элементов выше главной диагонали матрицы #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
#include <iostream>
 
int main()
{
    int mass[4][4];
 
    //Заполняем массив
    for (int i=0; i!=4;i++)
        for (int t=0;t !=4; t++) {
            system("cls");
            std::cout << "Enter mas[" <<i<<"]["<<t<<"] = ";
            std::cin >> mass[i][t];
        }
 
    int sum(0);
    for (int i=0; i !=4;i++)
        for (int j = i+1;j!=4;j++)
            sum+=mass[i][j];
 
    std::cout << "summ = " << sum << std::endl;
    system("pause");
 
    return 0;
}
Добавлено через 7 минут
вот с функцией
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
#include <iostream>
 
void summ(int (&mas)[4][4]) 
{
    int sum(0);
    for (int i=0; i!= 4; i++)
        for (int j=i+1;j!=4;j++)
            sum+=mas[i][j];
    std::cout << "summ = " << sum << std::endl;
}
 
int main()
{
    int mass[4][4];
 
    //Заполняем массив
    for (int i=0; i!=4;i++)
        for (int t=0;t !=4; t++) {
            system("cls");
            std::cout << "Enter mas[" <<i<<"]["<<t<<"] = ";
            std::cin >> mass[i][t];
        }
 
    summ(mass);
    system("pause");
 
    return 0;
}
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
31.07.2012, 15:09     Вычислить сумму элементов выше главной диагонали матрицы #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (i < j) 
{
       // выше диагонали
}
 
if (i > j)
{
      // ниже диагонали
}
 
if (i == j)
{
      // главная диагональ
}
 
if (i + j == N) // N - размер
{
      // вторая диагональ
}
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
31.07.2012, 15:10     Вычислить сумму элементов выше главной диагонали матрицы #4
Markys,

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
#include <iostream>
#include <algorithm>
#include <random>
 
#include <boost/multi_array.hpp>
 
const int N = 4;   
 
int main() {
   typedef boost::multi_array <int, 2> matrix_t;
   typedef boost::multi_array_types::index_range range;
   typedef matrix_t::array_view <1>::type matrix_view;
   typedef boost::multi_array_ref <int, 1> array_ref;
   
   std::mt19937 rng;
   std::uniform_int_distribution <int> int_dist(0, 50);
   
   matrix_t matrix(boost::extents[N][N]);
   array_ref matrix_ref(
      matrix.data(),
      boost::extents[matrix.num_elements()]
   );
 
   std::generate(
      matrix_ref.begin(),
      matrix_ref.end(),
      [&int_dist, &rng]() -> int {
            return int_dist(rng);
      }
   );
   
   int sum = 0;
   for (std::size_t index = 0; index < N - 1; index++) {
      matrix_view row_view = matrix[
                                boost::indices[index]
                                [range(index + 1, N)]
                             ];  
      sum = std::accumulate(
               row_view.begin(),
               row_view.end(),
               sum
            );
   }
   std::cout << sum << "\n";  
   for (std::size_t i = 0; i != matrix.size(); ++i) {
      std::copy(
         matrix[i].begin(),
         matrix[i].end(),
         std::ostream_iterator <int>(std::cout, "\t")
      );
      std::cout << '\n';
   }
}
http://liveworkspace.org/code/c36e3f...3e1db39e8af6c5
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
31.07.2012, 15:14     Вычислить сумму элементов выше главной диагонали матрицы #5
Цитата Сообщение от nameless Посмотреть сообщение
Markys,

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
#include <iostream>
#include <algorithm>
#include <random>
 
#include <boost/multi_array.hpp>
 
const int N = 4;   
 
int main() {
   typedef boost::multi_array <int, 2> matrix_t;
   typedef boost::multi_array_types::index_range range;
   typedef matrix_t::array_view <1>::type matrix_view;
   typedef boost::multi_array_ref <int, 1> array_ref;
   
   std::mt19937 rng;
   std::uniform_int_distribution <int> int_dist(0, 50);
   
   matrix_t matrix(boost::extents[N][N]);
   array_ref matrix_ref(
      matrix.data(),
      boost::extents[matrix.num_elements()]
   );
 
   std::generate(
      matrix_ref.begin(),
      matrix_ref.end(),
      [&int_dist, &rng]() -> int {
            return int_dist(rng);
      }
   );
   
   int sum = 0;
   for (std::size_t index = 0; index < N - 1; index++) {
      matrix_view row_view = matrix[
                                boost::indices[index]
                                [range(index + 1, N)]
                             ];  
      sum = std::accumulate(
               row_view.begin(),
               row_view.end(),
               sum
            );
   }
   std::cout << sum << "\n";  
   for (std::size_t i = 0; i != matrix.size(); ++i) {
      std::copy(
         matrix[i].begin(),
         matrix[i].end(),
         std::ostream_iterator <int>(std::cout, "\t")
      );
      std::cout << '\n';
   }
}
http://liveworkspace.org/code/c36e3f...3e1db39e8af6c5
Паскаль мне в резюме, зачем все это?
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
31.07.2012, 15:15     Вычислить сумму элементов выше главной диагонали матрицы #6
Цитата Сообщение от nameless Посмотреть сообщение
к чему столько кода, в такой задаче ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2012, 15:18     Вычислить сумму элементов выше главной диагонали матрицы
Еще ссылки по теме:

C++ Вычислить сумму элементов матрицы выше главной диагонали
C++ Подсчитать количество локальных минимумов матрицы, найти сумму модулей элементов выше главной диагонали
C++ Найти сумму элементов матрицы, лежащих выше главной диагонали

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

Или воспользуйтесь поиском по форуму:
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
31.07.2012, 15:18     Вычислить сумму элементов выше главной диагонали матрицы #7
Цитата Сообщение от Dr.Urban Посмотреть сообщение
Паскаль мне в резюме, зачем все это?
Экспериментирую с boost::multi_array, ничего более..)
Yandex
Объявления
31.07.2012, 15:18     Вычислить сумму элементов выше главной диагонали матрицы
Ответ Создать тему
Опции темы

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