Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
1

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

31.12.2013, 19:41. Показов 6930. Ответов 40
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано задание:

Дана действительная квадратная матрица порядка 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;}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.12.2013, 19:41
Ответы с готовыми решениями:

Вычислить сумму элементов матрицы, расположенных выше главной диагонали
выдает ошибки: Ошибка 1 error LNK2001: неразрешенный внешний символ &quot;_mainCRTStartup&quot;...

Вычислить сумму элементов расположенных ниже главной диагонали, но выше побочной диагонали
Дана целочисленная квадратная матрица размера NxN. Вычислить сумму элементов расположенных ниже...

Найти сумму элементов матрицы, расположенных выше главной диагонали и ниже побочной диагонали
не соображу В среде MS Visual C++ разработать программу, которая формирует матрицу размером n х n...

Найти сумму элементов матрицы ниже главной диагонали, и произведение элементов выше нее
Добрый день, помогите найти ошибку в коде, вот задание: В матрице размером n х n найти сумму...

40
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
31.12.2013, 22:19 21
Author24 — интернет-сервис помощи студентам
Скопируйте то,что внутри main в вашу старую программу и запустите.
0
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:31  [ТС] 22
В принципе правильно, но через раз как-то) Спасибо еще раз огромное.
0
Заблокирован
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;
0
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:45  [ТС] 24
не могу скопировать....действие недоступно..
0
Заблокирован
31.12.2013, 22:46 25
эм, ну может все же перенаберете?
0
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
Для продолжения нажмите любую клавишу . . .
0
Заблокирован
31.12.2013, 22:49 27
ilmat, а что тут неправильного?
0
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 22:51  [ТС] 28
5-й столбец
0
Заблокирован
31.12.2013, 22:53 29
и все же не вижу ошибки.
mas[4]=5;
А сумма элементов больше 5, выше главной диагонали = 7.
0
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 23:01  [ТС] 30
в пятом столбце элементом ГД является 8. 8>1>5 также семерка, стоящая выше>1>5....на место восьмерки по идее должно встать 15...а в целом, как я и говорил всё правильно.
0
Заблокирован
31.12.2013, 23:03 31
то есть вам нужно к сумме добавить и элемент на главной диагонали?
0
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 23:05  [ТС] 32
или я не сказал, что элемент ГД, если он больше, тоже плюсуется?

Добавлено через 40 секунд
0
Заблокирован
31.12.2013, 23:07 33
сделайте вот так:
C++
1
// a[i][i]=0;
то есть эту строчку можно совсем убрать

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

Измените простое зануление,на условное:
if(a[i][i]<=mas[i])
{
a[i][i]=0;
}
2
Заблокирован
31.12.2013, 23:12 36
Цитата Сообщение от ilmat Посмотреть сообщение
А не получится так, что элемент ГД будет прибавляться в любом случае? Ведь нужно, чтобы он был тоже больше нижних...
верно, надо добавить условие, по поводу зануления, в случае, если он меньше

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

Не по теме:

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

1
1 / 1 / 0
Регистрация: 31.12.2013
Сообщений: 26
31.12.2013, 23:22  [ТС] 39
Всё..сейчас идеально) Благодарствую раз еще)
0
Заблокирован
31.12.2013, 23:24 40
)С Наступающим!
1
31.12.2013, 23:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.12.2013, 23:24
Помогаю со студенческими работами здесь

Найти сумму модулей элементов, расположенных выше главной диагонали матрицы
for( int i = 0; i &lt; n; i++ ) for( int j = i+1; j &lt; n; j++ ) s += abs(array); Так он находит...

Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы
Помогите, пожалуйста, решить это задание! Плохо понимаю, как работать с массивами в C++ Дана...

Вычислить сумму элементов матрицы выше главной диагонали
Здравствуйте. Помогите решить задание. Нужно вычислить сумму элементов матрицы выше главной...

Вычислить сумму элементов выше главной диагонали матрицы
ввести двумерный массив b . вычислить сумму элементов лежать выше главной диагонали матрицы и...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru