0 / 0 / 0
Регистрация: 27.09.2020
Сообщений: 18
1

Найти в матрице строку с минимальной суммой

13.11.2020, 17:11. Показов 6275. Ответов 4

Author24 — интернет-сервис помощи студентам
Напишите программу, которая находит в матрице строку с минимальной суммой.

Входные данные
В первой строке записаны через пробел размеры матрицы: количество строк N и количество столбцов M ( 1 ≤ N , M ≤ 100 ). В следующих N строках записаны строки матрицы, в каждой – по M натуральных чисел, разделённых пробелами.

Выходные данные
Программа должна вывести все элементы найденной строки с минимальной суммой, разделив их пробелами. Если строк с одинаковой минимальной суммой несколько, нужно выбрать из них строку с минимальным индексом.

Примеры
входные данные
4 5
1 3 2 54 234
75 12 3 46 9
13 26 56 9 12
14 90 897 6 34
выходные данные
13 26 56 9 12

Мой код:
Если i < n, то выводит 13 26 56 9.
Если i <= n, то выводит 13 26 56 9 12
А если там, например, 3 на 3 массив, то выводит -858993460
Что не так, помогите именно с моим кодом

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
#include <iostream>
#include <vector>
using namespace std;
int sumss[1000];
int main()
{
    int a[100][100], n, m, s = 0, k, r, ii = 0;
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        int sum = 0;
        for (int j = 0; j < m; j++) {
            cin >> a[i][j];
            sum += a[i][j];
        }
        sumss[ii] = sum;
        ii++;
    }
    int Min = sumss[0];
    int imin = 0;
    for (int i = 0; i < ii; i++) {
        if (sumss[i] < Min) {
            imin = i;
        }
    }
    for (int i = 0; i < n; i++) {
        cout << a[imin][i] << " ";
    }
    
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2020, 17:11
Ответы с готовыми решениями:

в матрице P (n,m) найти строку с минимальной суммой отрицательных элементов и поэлементно поменять ее
в матрице P (n,m) найти строку с минимальной суммой отрицательных элементов и поэлементно поменять...

В заданной матрице поменять строку с минимальной суммой со строкой с максимальной суммой
помогите с кодом

Напишите программу, которая находит в матрице строку с минимальной суммой
Напишите программу, которая находит в матрице строку с минимальной суммой. Формат входных данных...

В заданной целочисленной матрице найти столбец с минимальной суммой элементов
Среди столбцов заданной целочисленной матрицы, включающие только такие элементы, которые по модулю...

4
2523 / 1243 / 459
Регистрация: 08.11.2016
Сообщений: 3,412
13.11.2020, 17:25 2
потому что выводить надо по i от 0 до m.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.11.2020, 17:30 3
код крайне неважен. кроме того, что написано выше может нe проходить по времени и по памяти. массив sumss[1000] вообще не нужен, вместо a[100][100] используйте динамический:
C++
1
2
3
      int **a = new int*[N]; 
    for (int i = 0; i < N; i++)
       a[i]=new int[M];
0
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,692
13.11.2020, 17:37 4
Цитата Сообщение от fyoder Посмотреть сообщение
C++
1
2
3
4
5
for (int i = 0; i < ii; i++) {
    if (sumss[i] < Min) {
          imin = i;
 }
 }
C++
1
2
3
4
5
6
for (int i = 0; i < ii; i++) {
    if (sumss[i] < Min) {
          Min = sumss[i]; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          imin = i;
 }
 }
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.11.2020, 18:15 5
Лучший ответ Сообщение было отмечено fyoder как решение

Решение

Цитата Сообщение от zss Посмотреть сообщение
Min = sumss[i]; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Цитата Сообщение от Yetty Посмотреть сообщение
массив sumss[1000] вообще не нужен

fyoder, если не пройдёт, поменяйте тип int на unsigned long long (а INT_MAX на ULONG_MAX):
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
#include <iostream>
#include <climits>
using namespace std;
 
int main()
{
    int N, M, sum, min=INT_MAX, imin=0; 
    cin >> N >> M;
    
      int **a = new int*[N]; 
    for (int i = 0; i < N; i++)
       a[i]=new int[M];
    
    for (int i = 0; i < N; i++) 
    {
        sum=0;
        for (int j = 0; j < M; j++) 
        {
            cin >> a[i][j];
            sum+=a[i][j];            
        }
        if (sum<min) {min=sum;imin=i;}        
    }
   
    for (int j = 0; j < M; j++) 
        cout << a[imin][j] << " ";
    cout << "\n"; 
    
    for (int i = 0; i < N; i++)
    delete[]a[i];
    delete[]a;
 
return 0;
}
1
13.11.2020, 18:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2020, 18:15
Помогаю со студенческими работами здесь

В целочисленной матрице найти номер столбца с минимальной суммой элементов
С++.дана целочисленная матрица (m,n) Найти номер столбца с минимальной суммой элементов

В заданной матрице найти номера всех столбцов с минимальной суммой элементов
В заданной матрице найти номера всех столбцов с минимальной суммой элементов. Вывести подматрицу из...

Найти строку с минимальной суммой элементов
Найти строку с минимальной суммой элементов. Если таких строк несколько то нужн найти номер первой...

В целочисленной матрице поменять местами столбец с минимальной суммой со столбцом с максимальной суммой
Дана прямоугольная матрица nxm целых чисел (n,m&lt;10 – ввод с клавиатуры, значения элементов массива...

Дан двумерный массив. Найти строку с минимальной суммой элементов
Дан двумерный массив. Найти: строку с минимальной суммой элементов. Если таких строк несколько,...

В двумерном массиве n*m найти строку с минимальной суммой и в ней максимальный элемент
1)Создать двумерный массив размером n*m. 2)Найти строку с минимальной суммой и в ней максимальный...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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