Форум программистов, компьютерный форум 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
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
31.12.2013, 22:19     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #21
Скопируйте то,что внутри main в вашу старую программу и запустите.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:31  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #22
В принципе правильно, но через раз как-то) Спасибо еще раз огромное.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 22:34     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #23
нет, надо понять почему иногда работает неправильно. Надо перепроверить границы циклов, скорее всего ошибка в них.

Все таки скопируйте ошибочный вариант, в консоли правой кнопкой мыши: Выделить все ->Enter и вставляйте сюда.

Добавлено через 1 минуту
Кстати, для наглядности выводите и массив максимальных элементов:
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
 
       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];
            }
       }
            cout<<endl;
           for(int j=0;j<7;j++)
           cout<<mas[j]<<" ";
           cout<<endl<<endl;
        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;
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:45  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #24
не могу скопировать....действие недоступно..
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 22:46     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #25
эм, ну может все же перенаберете?
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:47  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #26
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

D:\>12332.exe
матрица А

8 9 9 6 7 0 4
4 8 9 5 3 5 1
6 6 1 6 5 0 0
4 6 8 8 1 1 4
1 0 0 3 8 7 4
0 9 0 7 1 4 7
6 9 1 6 5 5 5


8 9 9 6 7 0 4
4 8 9 5 3 5 1
6 6 18 6 5 0 0
4 6 8 8 1 1 4
1 0 0 3 7 7 4
0 9 0 7 1 7 7
6 9 1 6 5 5 5
Для продолжения нажмите любую клавишу . . .
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 22:49     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #27
ilmat, а что тут неправильного?
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:51  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #28
5-й столбец
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 22:53     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #29
и все же не вижу ошибки.
mas[4]=5;
А сумма элементов больше 5, выше главной диагонали = 7.
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 23:01  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #30
в пятом столбце элементом ГД является 8. 8>1>5 также семерка, стоящая выше>1>5....на место восьмерки по идее должно встать 15...а в целом, как я и говорил всё правильно.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 23:03     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #31
то есть вам нужно к сумме добавить и элемент на главной диагонали?
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 23:05  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #32
или я не сказал, что элемент ГД, если он больше, тоже плюсуется?

Добавлено через 40 секунд
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 23:07     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #33
сделайте вот так:
C++
1
// a[i][i]=0;
то есть эту строчку можно совсем убрать

Добавлено через 40 секунд
Цитата Сообщение от ilmat Посмотреть сообщение
или я не сказал, что элемент ГД, если он больше, тоже плюсуется?
похоже, что я невнимательно прочел задание
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 23:09  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #34
А не получится так, что элемент ГД будет прибавляться в любом случае? Ведь нужно, чтобы он был тоже больше нижних...
S_el
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
31.12.2013, 23:10     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #35
Цитата Сообщение от ilmat Посмотреть сообщение
или я не сказал, что элемент ГД, если он больше, тоже плюсуется?
Вы написали,я не обратил внимание

Измените простое зануление,на условное:
if(a[i][i]<=mas[i])
{
a[i][i]=0;
}
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 23:12     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #36
Цитата Сообщение от ilmat Посмотреть сообщение
А не получится так, что элемент ГД будет прибавляться в любом случае? Ведь нужно, чтобы он был тоже больше нижних...
верно, надо добавить условие, по поводу зануления, в случае, если он меньше

Добавлено через 1 минуту
меня опередили
ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 23:15  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #37
У меня просто скилла не хватает такие цепочки мелочей продумывать(
Ev_Hyper
31.12.2013, 23:16
  #38

Не по теме:

я думаю ни у кого все мелкие вопросы сразу не решаются, а уже в ходе проверки их обнаруживают и быстро правят.
Хотя я не программист, может ошибаюсь

ilmat
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 23:22  [ТС]     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #39
Всё..сейчас идеально) Благодарствую раз еще)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2013, 23:24     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
31.12.2013, 23:24     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее #40
)С Наступающим!
Yandex
Объявления
31.12.2013, 23:24     Вычислить сумму элементов матрицы, расположенных на главной диагонали и выше нее
Ответ Создать тему
Опции темы

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