Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 22

Проверить, что в каждой строке на месте главной диагонали находится элемент больший суммы всех остальных

06.04.2019, 20:53. Показов 2501. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задана квадратная матрица n на n. В каждой строке на месте главной диагонали должен находится элемент, больше суммы всех остальных в этой строке.
Пример:
5 16 4
3 2 6
8 2 2

Должно получиться:
16 5 4
3 6 2
2 2 8

Не могу понять, как именно осуществить проверку. Всю программу писать не нужно
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2019, 20:53
Ответы с готовыми решениями:

Проверить, что диагональный элемент матрицы по модулю больше модуля суммы остальных элементов в строке
Должно быть два цикла, один вложен в другой, проверка диагонально элемента квадратной матрицы (т.е. массива m). Если диагональный элемент...

Проверить, превышает ли расположенный на главной диагонали элемент сумму остальных элементов строки
Дана квадратная матрица порядка n(n=5). Если в матрице a элемент, расположенный на главной диагонали превышает сумму остальных элементов...

Проверить находится ли на главной диагонали наибольший элемент матрицы
Даны натуральное число n, вещественная квадратная матрица порядка n, вещественные а1,…,аn+5. Элементы последовательности а1,…,аn+5...

17
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
06.04.2019, 22:05
Лучший ответ Сообщение было отмечено JustRespectMe как решение

Решение

На месте главной диагонали это так:
C++
1
2
3
4
5
const int size = 3;
int matrix[size][size];
/*...Код...*/
for(int i = 0; i < size; ++i)
    std::cout << matrix[i][i] << std::endl;
Сумму элементов и индекс максимального элемента, который больше суммы остальных элементов, например, в первой строке, можно найти так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const int size = 3;
const int row = 1;
int matrix[size][size];
/*...Код...*/
int sum = 0;
for(int i = 0; i < size; ++i)
    sum += matrix[row][i];
 
int max = matrix[row][row], indOfMax = row;
for(int i = 0; i < size; ++i)
{
    if(sum < matrix[row][i] && max < matrix[row][i])
    {
        max = matrix[row][i];
        indOfMax = i;
    }
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.04.2019, 22:08
Цитата Сообщение от JustRespectMe Посмотреть сообщение
В каждой строке на месте главной диагонали должен находится элемент, больше суммы всех остальных в этой строке.
левое какое-то условие, сами придумали ? если строка например 1 2 3 2 1
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 22
06.04.2019, 22:40  [ТС]
Yetty, нет. условие нужно для решения СЛАУ методом Зейделя. программа сама готова, но нужно добавить это условие)
Krokodil9798, я так понял второе именно то, что мне нужно?
мне достаточно что бы находил элемент, который больше суммы остальных в строке. свапнуть его на место и в цикл я смогу добавить)
0
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
06.04.2019, 22:42
Цитата Сообщение от JustRespectMe Посмотреть сообщение
я так понял второе именно то, что мне нужно?
JustRespectMe, да. Вам лишь понадобится добавить проход по всем строкам, так как я написал пример для прохода по одной.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.04.2019, 22:55
JustRespectMe, так что должно выставить на главную в строке 1 2 3 2 1 ? или такие варианты методом Зейделя не получаются ?
0
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
06.04.2019, 23:00
Цитата Сообщение от Yetty Посмотреть сообщение
так что должно выставить на главную в строке 1 2 3 2 1 ?
Вероятней всего, оставить строку без изменения.
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 22
06.04.2019, 23:14  [ТС]
Yetty, программа выдаст ошибку. в этом случае система не будет иметь решения с помощью этого метода
да и такого не будет. числа вводятся вручную, просто не по порядку. поэтому мне и нужно их поставить на главную диагональ)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.04.2019, 23:30
Цитата Сообщение от JustRespectMe Посмотреть сообщение
такого не будет
с этим понятно. а сумма нужна или можно просто максимальный элемент определять на диагональ ?
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 22
07.04.2019, 10:47  [ТС]
Yetty, просто максимальный элемент, который больше суммы остальных в строке, должен встать на главную диагональ. вот и все
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.04.2019, 11:30
JustRespectMe, так max элемент строки и будет таким элементом (без вычисления суммы) - или есть ещё варианты ?

понимаете что спрашиваю - нужно отдельно находить сумму или достаточно просто найти max элемент строки ?
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 22
07.04.2019, 11:43  [ТС]
Yetty, нужно находить сумму. потому что этот МАХ элемент больше суммы остальных будет.
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
int main()
{  
    setlocale(LC_ALL, "rus");
    int i,j,k,n;
    float a[10][10];
    float sum;
    printf("Введите количество неизвестных : ");
    scanf("%d",&n) ;
    printf("Введите матрицу: \n");
    for(i=1;i<=n;i++)
        {
        for(j=1;j<=n;j++)
            {
                printf("a[%d][%d]= ",i,j);
                scanf("%f",&a[i][j]);
            }
    }
    sum=0;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<n;j++)
        {
            sum=sum+a[i][j];
        }
        for(k=1;k<=n;k++)
        {
            if(a[i][k]>sum-a[i][k])
            {
                swap(a[i][k], a[i][i]);
            }
        }
        sum=0;
    }
    cout<<"Преобразованная матрица"<<endl;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
}
вот так получилось. что мне и нужно было
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.04.2019, 12:11
JustRespectMe, была мысль попробовать предложить Вам код оптимальнее, но перед этим нужно было получить от Вас ответ на пару вопросов, но похоже это не получится.

последняя попытка:
Цитата Сообщение от JustRespectMe Посмотреть сообщение
нужно находить сумму
зачем находить сумму ??? этот элемент просто максимальный в строке и проще найти max без нахождения суммы
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 22
07.04.2019, 13:44  [ТС]
Yetty, к примеру в строке 7 5 6. Элемент 7 будет максимальный, но он не больше суммы 5+6. Понимаете?
Мне нужно чтобы элемент был больше СУММЫ остальных в строке
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.04.2019, 14:02
JustRespectMe, понимаю. более того, приводил Вам выше подобный вариант: 1 2 3 2 1 Вы ответили так:
Цитата Сообщение от JustRespectMe Посмотреть сообщение
программа выдаст ошибку. в этом случае система не будет иметь решения с помощью этого метода да и такого не будет.
то есть примера 1 2 3 2 1 не будет, а подобный пример 7 5 6 будет ?
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 22
07.04.2019, 14:08  [ТС]
Yetty, теперь понял. И моего примера не должно быть. Но суть была именно найти элемент, который больше суммы остальных)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.04.2019, 14:14
Цитата Сообщение от JustRespectMe Посмотреть сообщение
Yetty, теперь понял.
хоть какой-то прогресс
Цитата Сообщение от JustRespectMe Посмотреть сообщение
Но суть была именно найти элемент, который больше суммы остальных)
в Вашем случае это максимальный элемент строки. теперь согласны ?

если согласны - следующий вопрос. max нашли. что с ним делаем дальше - меняем местами с диагональным элементом или ставим его на место диагонального, сдвигая остальные элементы направо ?

может ли максимальных в строке быть несколько ?
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 22
07.04.2019, 18:34  [ТС]
Yetty, согласен. он один элемент. просто поставить на место главной диагонали.
да, можно найти просто максимальный элемент и его свапнуть. но мне нужно было именно реализовать что бы искал элемент, который больше суммы остальных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2019, 18:34
Помогаю со студенческими работами здесь

Найти в каждой строке наибольший элемент и элемент главной диагонали и поменять их местами
Найти в каждой строке наибольший элемент и элемент главной диагонали и поменять их местами.

В каждой строке матрицы поменять местами максимальный элемент и элемент, находящийся на главной диагонали
Добрый Дня Всем! Столкнулся с проблемой в решении задания: В квадратной матрице С размера m*m в каждой строке поменять местами...

Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали в этой же строке
Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали в этой...

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

Поменять местами элемент главной диагонали с минимальным в каждой строке матрицы
Люди добрый будьте так добры и помогите бедно студенту ! Есть парочка домашних работ по Си сам к сожалению сколько не пытался сделать...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru