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

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

Восстановить пароль Регистрация
 
 
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 19:41     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #1
Дано задание:

Дана действительная квадратная матрица порядка 7. Вычислить сумму
тех её элементов, расположенных на главной диагонали и выше нее, которые превосходят
по величине все элементы, расположенные ниже главной диагонали. Заменить этой
суммой элемент на главной диагонали соответствующего столбца. Если на главной
диагонали и выше нее нет элементов с указанным свойством, то элемент на главной
диагонали оставить без изменения. Элементы главной диагонали (неизмененные) вывести
в массив. Вывести исходную и преобразованную матрицы, полученный массив.


Подскажите пожалуйста механизм поиска элементов расположенных на главной диагонали и выше нее, которые превосходят по величине все элементы, расположенные ниже главной диагонали и нахождения их суммы...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
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
main(){
       setlocale(LC_ALL,"RUS");
       int a[7][7], i,j,max=0;
       srand (time(NULL));
       for (i=0; i<7; i++)
       for (j=0; j<7; j++){
           a[i][j] = rand()%10;
           }
           cout<<"матрица А"<<endl<<endl;
           for (i=0; i<7; i++){
       for (j=0; j<7; j++)
           cout<<a[i][j]<<"  ";cout<<endl;
           } 
           for (i=0; i<7; i++){
       for (j=0; j<7; j++)
       if (i>j){
                if (a[i][j]>max) max = a[i][j];}}
                
                 for (i=0; i<7; i++){
       for (j=0; j<7; j++)
       if (i<=j){
                 if(a[i][j]>max){
                                 if(i==j)                
                 a[i][j]=a[i][j]+a[i][j];}}
       cout<<endl<<endl;
       for (i=0; i<7; i++){
       for (j=0; j<7; j++)
       cout<< a[i][j]<<"  ";
       cout<<endl;}
       }
       system ("pause");
       return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2013, 19:41     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее
Посмотрите здесь:

C++ Найти сумму модулей элементов, расположенных выше главной диагонали
Найти сумму элементов расположенных выше главной диагонали. C++
Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы C++
C++ Вычислить в функции сумму модулей элементов выше главной диагонали матрицы
C++ Вычислить сумму элементов выше главной диагонали матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
31.12.2013, 20:18     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #2
1)Вычисляете max элемент из тех,что расположены ниже главной диагонали.
Главная диагональ имеет индекс строк такой-же,что и у столбцов.
Если индекс строки больше индекса столбца,то элемент расположен ниже ГД.

2)Суммируете все элементы превосходящие,найденный в п.1 max.
Затем меняете нужный элемент.
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 20:55  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #3
А как это сделать для каждого столбца отдельно? Т.е заменить элементы главной диагонали соответствующего столбца соответствующей суммой?..Если не трудно можете поправить мой код?
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
31.12.2013, 20:58     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #4
Цитата Сообщение от ilmat Посмотреть сообщение
А как это сделать для каждого столбца отдельно? Т.е заменить элементы главной диагонали соответствующего столбца соответствующей суммой?
Не совсем понятен вопрос,главная диагональ относится к матрице,а не к столбцу.
Или вам надо "разбить" основную матрицу на матрицы меньших размеров?
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 21:09  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #5
Нет. Если , допустим в третьем столбце, какие либо 2 элемента (допустим 2), находящиеся выше ГД будут больше всех элементов этого же столбца, находящихся ниже ГД, то найти их сумму и записать ее в элемент 3;3. . . и так сделать со всеми столбцами

Добавлено через 1 минуту
И как поправить мой код, чтобы задача выполнялась?.
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
31.12.2013, 21:11     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #6
Цитата Сообщение от ilmat Посмотреть сообщение
Если , допустим в третьем столбце, какие либо 2 элемента (допустим 2), находящиеся выше ГД будут больше всех элементов этого же столбца, находящихся ниже ГД, то найти их сумму и записать ее в элемент 3;3. . . и так сделать со всеми столбцами
Теперь понял
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 21:26     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #7
поясните чуть более подробно по поводу замены в соответствующем столбце.

Добавлено через 14 минут
Цитата Сообщение от ilmat Посмотреть сообщение
Вычислить сумму
тех её элементов, расположенных на главной диагонали и выше нее, которые превосходят
по величине все элементы, расположенные ниже главной диагонали
C++
1
2
3
4
5
6
7
8
9
 for(int i=0;i<7;i++)
               for(int j=0;j<i;j++)
                   if(a[i][j]>max)max=a[i][j];
           cout<<max<<endl;
           int sum=0;
           for(int i=0;i<7;i++)
              for(int j=i;j<7;j++)
                  if(a[i][j]>max)sum+=a[i][j];
           cout<<sum<<endl;
Цитата Сообщение от ilmat Посмотреть сообщение
Заменить этой суммой элемент на главной диагонали соответствующего столбца.
какой столбец считать соответсвтующим? Тот, где находится максимальный элемент?
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 21:34  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #8
нене...) надо прошерстить все столбцы...сравнить элементы выше ГД с элементами ниже ГД вкаждом...и сложить те элементы, находящиеся выше, которые больше любого, находящегося ниже ГД.

2 2 2 2
2 3 1 1
2 1 4 0
2 1 7 5 ГД - 2345. Возьмем второй столбец - 2>1 и 3>0 в итоге 2+3 записывается вместо тройки. .
Возьмем третий столбец. Видно, что ни 2 ни 1 ни 4 не больше семерки, поэтому элемент ГД (4) остается неизменным. . как-то так.
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 21:36     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #9
Цитата Сообщение от ilmat Посмотреть сообщение
Возьмем второй столбец - 2>1 и 3>0
откуда 3>0? опечатка на 3>1?
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 21:37  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #10
очепятка)
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 21:46     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #11
теперь понял в чем суть задания
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 21:49  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #12
я тоже долго вникал
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
31.12.2013, 21:56     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #13
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
54
55
56
#include "stdafx.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
 
       setlocale(LC_ALL,"RUS");
       int a[7][7],mas[7], i,j,temp;
       srand (time(NULL));
       for (i=0; i<7; i++)
       for (j=0; j<7; j++)
       {
           a[i][j] = rand()%10;
       }
       cout<<"матрица А"<<endl<<endl;
       for (i=0; i<7; i++)
       {
       mas[i]=0;
       for (j=0; j<7; j++)
       cout<<a[i][j]<<"  ";cout<<endl;
       } 
 
       for (i=0; i<7; i++)
       {
            for (j=i+1; j<7; j++)
            if (a[j][i]>mas[i])
            {
             mas[i]=a[j][i];
            }
       }
                
        for (i=0; i<6; i++)
       {
            temp=a[i][i];
            a[i][i]=0;
            for (j=0; j<i; j++)
            {
                if (a[j][i]>mas[i])
                {
                a[i][i]=a[i][i]+a[j][i];
                }
            }
            if(a[i][i]==0)a[i][i]=temp;
 
       }
       cout<<endl<<endl;
       for (i=0; i<7; i++)
       {
       for (j=0; j<7; j++)
       cout<< a[i][j]<<"  ";
       cout<<endl;
       }
      
       system ("pause");
       return 0;
}
Над оптимизацией не думал,но уверен,что можно и подсократить
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 21:59     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #14
Уф, и я почти доделал, код практически аналогичный, только там, где идет замена, temp можно использовать как сумму, и в случае !=0 заменять a[i][i]
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:07  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #15
не...неправильно работает. Но в любом случае спасибо) Больше не мучайтесь..буду дальше на основе ваших данных ковырять..
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
31.12.2013, 22:08     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #16
Цитата Сообщение от ilmat Посмотреть сообщение
не...неправильно работает. Но в любом случае спасибо) Больше не мучайтесь..
Что не так?
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:12  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #17
я бы кинул скрин да не знаю как
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
31.12.2013, 22:14     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #18
Скопируйте все с консоли.
Ev_Hyper
 Аватар для Ev_Hyper
1807 / 1628 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 22:14     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #19
странно, вроде правильно работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2013, 22:18     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:18  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #20
я ее в devcpp копирнул - кучу ошибок выдал при компиляции. //int _tmain(int argc, _TCHAR* argv[]) и //#include "stdafx.h" эти строчки....я их закомментил - без них работает, но не так как-то
Yandex
Объявления
31.12.2013, 22:18     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее
Ответ Создать тему
Опции темы

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