#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int N, M, summ, min = 0;
cout << "Введите размер матрицы: n";
cin >> N >> M;
int** A = new int* [N];
for (int i = 0; i < N; i++)
A[i] = new int[M];
cout << "Введите значения матрицы: n";
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++) {
printf("nA[%d][%d] = ", i, j);
cin >> A[i][j];
}
cout << "Вот Ваша матрица:" << endl << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
cout << A[i][j] << " ";
cout << endl;
}
cout << "nИскомые суммы в столбцах:" << endl;
for (int j = 0; j < M; j++)
{
summ = 0;
for (int i = 0; i < N; i++)
{
if (A[i][j] >= 0) summ += A[i][j];
}
cout << "Cтолбец №" << j + 1 << ": " << summ << endl;
}
}
Должно вывести “Минимальный столбец этой суммы: 1”
задан 7 июн 2022 в 19:47
2
cout << "nИскомые суммы в столбцах:" << endl;
int min_idx = 0, min_sum = INT_MAX;
for (int j = 0; j < M; j++)
{
summ = 0;
for (int i = 0; i < N; i++)
{
if (A[i][j] >= 0) summ += A[i][j];
}
if (min_sum > summ) min_idx = j;
cout << "Cтолбец №" << j + 1 << ": " << summ << endl;
}
cout << "Минимальный столбец этой суммы: " << min_idx << endl;
ответ дан 8 июн 2022 в 5:06
HarryHarry
214k15 золотых знаков117 серебряных знаков229 бронзовых знаков
как в матрице найти номер столбца с минимальной суммой элементов, питон
Знаток
(296),
закрыт
3 года назад
Victor Surozhtsev
Просветленный
(28109)
3 года назад
#Если матрица А [M][N], то так:
max=0.0; ind=[]
for k in range(N): max+=A[0][k]
for k in range(1,M):
~~s=0.0
~~for l in range(N): s+=A[k][l]
~~if s > max: ind=[]; ind.append(k)
~~elif s==max: ind.append(k)
#Так в числовой матрице находятся все индексы строк с максимальной суммой элементов. Таких строк может быть от одной до M – вот зачем нужен список индексов ind. А обычный номер всегда больше индекса на единицу, так как индексы нумеруются с нуля.
Рассмотрим
принцип обмена между элементами массива.
Пример
1.
Поменять местами в каждой строке матрицы
максимальный
элемент и элемент, расположенный на
главной диагонали:
Выполним
замену значений
элементов в матрице
.
Графическая
схема алгоритма замены значений в
матрице представлена на рис. 13.1.
На
основании графической схемы
алгоритма
(см. рис. 13.1) разработан
программный
код:
Option Explicit
Sub
PR1()
Dim
i As Integer, j As Integer
Dim N As Integer, m As Integer
Dim C As Integer, ,
max As Integer
Dim k As Integer, p As Integer
Dim
a(1 To 3, 1 To 3) As Integer
‘ нумерация
с единицы
N
= 3: m
= 3
For
i = 1 To N
For
j = 1 To m
a(i,
j) = Cells(i, j) ‘считывание
A i,j
с
рабочего
листа
Excel
Next
i
For
i = 1 To N
max
= -32768
For
j = 1 To m
If
a(i, j) > max Then max = a(i, j): k = i: p = j
’
замена
элементов
Next j
C
= a(k, p)
a(k,
p) = a(i, i)
a(i,
i) = C
‘
Next i
For
i = 1 To N
For j = 1 To m
Cells(i
+ 5, j) = a(i, j) ‘вывод
массива
на
лист
Excel
Next
j
Next
i
End
Sub
Пр и м е р 2. Найти строку
сминимальным
значением суммы элементов двумерного
массива:
.
Все
суммы строк элементов записать в
одномерный массив.
Графическая
схема алгоритма поиска строки с
минимальным
значением суммы элементов представлена
на рис. 13.2, на основании которой разработан
программный
код PR2
формирования одномерного массива из
минимальных
значений
сумм
элементов строк матрицы:
Option
Explicit
Sub PR2 ( )
Dim
M
As
Integer,
k, As
Integer
Dim
i
As
Integer,
j
As
Integer
Dim
min Аs
Integer, N
As
Integer
Dim A(1 To 10, 1 To 10) As
Integer
Dim
S(1 to 10) As Integer
N =3: M = 3 : min = 32767
For i = 1 To N
For
j = 1 To M
A(i, j) = Cells(i, j)‘ считывание
A(i, j)
‘с рабочего листа Excel
Nextj
Next
i
For i = 1 To N
S(i) = 0
For j = 1 To M
S(i)
= S(i) + A(i, j )
Next
j
Next
i
For i = 1 To N
Cells(i+5,
5) =S(i)
‘вывод элементов массива
If
S(i) <= min Then min = S(i): k = i
Nexti
Cells(5,11) =k‘вывод номера строкиcминимальным значением
суммы элементов
Cells(6,11) =min‘вывод минимальной суммы на рабочий
листExcel
EndSub
13.2. Индивидуальные задания
Задание
1. Задать массив
А(5, 5) с помощью генератора случайных
чисел в интервале [– 10; 40]. Разработать
ГСА и программный код обработки двумерного
массива согласно своему варианту (табл.
13.1), результаты обработки массива вывести
на рабочий лист Excel
с пояснениями.
Таблица
13.1
Задание по обработке
двумерного массива
Номер |
Задание |
1 |
2 |
1 |
Поменять |
2 |
Вычислить |
3 |
Для |
4 |
Найти |
5 |
Найти |
Окончание
табл.13.1
1 |
2 |
6 |
Найти |
7 |
Найти |
8 |
Поменять |
9 |
Поменять |
10 |
Найти |
11 |
В |
12 |
Задать |
13 |
Задан |
14 |
В |
Задание
2. Создать массив С(6, 6) с помощью генератора
случайных чисел в интервале [–20; 60].
Сформировать
одномерный массив из элементов созданного
двумерного массива по признаку, указанному
в задании (выбирается согласно своему
варианту). Разработать
ГСА и программный код формирования
одномерного массива
и вывести
массив на рабочий лист Excel:
1)
из элементов четных строк, расположенных
над
главной диагональю;
2)
из четных элементов побочной диагонали;
3)
из элементов, значения которых кратны
трем и которые расположены под
главной диагональю;
4)
каждый элемент, которого равен количеству
элементов соответствующего столбца,
больших числа n;
5)
каждый элемент, которого равен сумме
положительных элементов соответствующего
столбца;
6)
все его положительные элементы записать
в один одномерный массив, а остальные
– в другой;
7)
каждый элемент, которого равен количеству
нечетных отрицательных элементов
соответствующего столбца;
8)
каждый элемент, которого равен сумме
элементов соответствующей строки,
меньших числа n;
9)
каждый элемент, которого равен сумме
положительных элементов соответствующей
строки, кратных четырем или пяти;
10)
все его четные элементы записать в один
одномерный массив, а нечетные – в другой;
11)
из элементов, значения которых больше
10 и которые расположены над
побочной диагональю;
12)
каждый элемент, которого равен количеству
положительных элементов соответствующей
строки, кратных трем или семи;
13)
из положительных элементов, значение
которых кратны пяти;
14)
из элементов, максимальных по модулю,
в каждой строке;
15)
из отрицательных элементов, расположенных
под
побочной
диаго-налью.
Лабораторная
работа 14
Соседние файлы в папке Лаб. работы по VBA
- #
- #
- #
- #
Знакомство с языком программирования С#: Задайте прямоугольный двумерный массив. Напишите программу, которая будет находить строку с наименьшей суммой элементов
На чтение 3 мин Просмотров 509 Опубликовано 09.03.2023
Обновлено 09.03.2023
Задача: Задайте прямоугольный двумерный массив. Напишите программу, которая будет находить строку с наименьшей суммой элементов.
Содержание
- Пример:
- Решение:
- Пояснение:
Пример:
1 4 7 2
5 9 2 3
8 4 2 4
5 2 6 7
Программа считает сумму элементов в каждой строке и выдаёт номер строки с наименьшей
суммой элементов: 1 строка.
Решение:
Console.Write(«Введите размерность m массива: «);
int m = Convert.ToInt32(Console.ReadLine());
Console.Write(«Введите размерность n массива: «);
int n = Convert.ToInt32(Console.ReadLine());
int[,] randomArray = new int[m,n];void mas(int m, int n)
{
int i,j;
Random rand = new Random();
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
randomArray[i,j] = rand.Next(1,9);
}
}
}void printm(int[,] array)
{
int i,j;
for (i = 0; i < array.GetLength(0); i++)
{
Console.WriteLine();
for (j = 0; j < array.GetLength(1); j++)
{
Console.Write($»{array[i,j]} «);
}
Console.WriteLine();
}
}mas(m,n);
Console.WriteLine(«nИсходный массив: «);
printm(randomArray);// Функция, считающая сумму элементов в строке
int SumLine(int[,] array, int i)
{
int sum = array[i,0];
for (int j = 1; j < array.GetLength(1); j++)
{
sum += array[i,j];
}
return sum;
}int minSum = 1;
int sum = SumLine(randomArray, 0);
for (int i = 1; i < randomArray.GetLength(0); i++)
{
if (sum > SumLine(randomArray, i))
{
sum = SumLine(randomArray, i);
minSum = i+1;
}
}
Console.WriteLine($»nСтрока c наименьшей суммой элементов: {minSum}»);
Пояснение:
Решение надо просто разбить на функцию — SumLine, которая считает сумму элементов в одной стоке и цикл For, который перебирает все строки и находит номер строки, где наименьшая сумма элементов.
Похожий код:
Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.