Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
3 / 3 / 0
Регистрация: 10.08.2022
Сообщений: 29

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

31.08.2022, 12:42. Показов 6981. Ответов 9
Метки с# (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Собственно говоря, задача заключается в том, чтобы найти строку с наименьшей суммой элементов в двумерном массиве. Я написал код, но не могу понять, что не так. Пожалуйста, помогите.
Code
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
int[,] CreateMatrix (int row, int col, int min, int max) 
{
    int[,] matrix = new int[row, col];
    Random rnd = new Random();   
    for (int i = 0; i < matrix.GetLength(0); i++) 
    {
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            matrix[i,j] = rnd.Next(min, max +1);
        }
    }
    return matrix;
} 
 
void PrintMatrix(int[,] matrix)
{
    for (int i = 0; i <  matrix.GetLength(0); i++)
    {
        Console.Write("|");
        for (int j = 0; j < matrix.GetLength(1); j++) 
        {
            if (j < matrix.GetLength(1) -1) Console.Write($"{matrix[i, j], 1}|");
            else Console.Write($"{matrix[i, j], 1}");
        }
        Console.WriteLine("|");        
    }        
}
 
void SumStringMatrix(int[,] matrix)
{
    int index = 0;
    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        int sum = 0;
        int minsum = 0;
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            sum += matrix[i, j];
            if (sum <= minsum) sum = minsum;
            index = i;        
            
        }
        Console.Write($"Строка с минимальной суммой элементов равна {matrix[index, j]}. ");
    }            
}
   
 
int[,] array2D = CreateMatrix(3, 4, 0, 9);
PrintMatrix(array2D);
SumStringMatrix(array2D);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.08.2022, 12:42
Ответы с готовыми решениями:

Найти строку с наименьшей суммой элементов в двумерном массиве
Дан целочисленный квадратный массив 4х4. Найти строку с наименьшей суммой элементов. Ввод элементов через клавиатуру. (у меня тут не...

В данном двумерном массиве найти строку с наименьшей суммой элементов
Выдает через раз ошибку ,а если менять числа в рандоме иногда вобще может не работать помогите исправить. const m=3; n=3; type...

В двумерном N*K массиве целых чисел поменять строку с максимальной суммой элементов со строкой с минимальной суммой элементов.
Массив заполнять случайными числами, кроме случаев, когда это нецелесообразно (прогрессия, лабиринт). -В двумерном N*K массиве целых...

9
2393 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
31.08.2022, 13:47
Цитата Сообщение от Kline81 Посмотреть сообщение
Я написал код, но не могу понять, что не так.
Было бы неплохо, если бы вы написали, по каким признакам вы определили, что что-то "не так".

C#
1
2
            if (j < matrix.GetLength(1) -1) Console.Write($"{matrix[i, j], 1}|"); // <-- тут
            else Console.Write($"{matrix[i, j], 1}"); // <-- тут
В указанных строках формат выводимого элемента надо писать без пробелов: $"{matrix[i, j],1}|", $"{matrix[i, j],1}"
0
 Аватар для iLinks
800 / 458 / 237
Регистрация: 03.01.2017
Сообщений: 1,339
31.08.2022, 13:51
Лучший ответ Сообщение было отмечено Kline81 как решение

Решение

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
static void SumStringMatrix(int[,] matrix)
{
    int index = 0, minsum = 0;
    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        int sum = 0;
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            sum += matrix[i, j];
        }
        Console.WriteLine($"Сумма {i + 1} строки = {sum}");
        if (i == 0)
        {
            minsum = sum;
        }
        else if (sum < minsum)
        {
            minsum = sum;
            index = i;
        }
    }
    string line = string.Empty;
    for (int j = 0; j < matrix.GetLength(1); j++)
    {
        line += matrix[index, j] + " ";
    }
    Console.WriteLine($"Строка с минимальной суммой элементов равна {line}. ");
}
Цитата Сообщение от Kline81 Посмотреть сообщение
C#
1
2
if (sum <= minsum) sum = minsum;
 index = i;
Ошибка была в том, что вы это условие написали во вложенном цикле. + объявление переменной minSum сделали внутри цикла.
Цитата Сообщение от Kline81 Посмотреть сообщение
if (sum <= minsum) sum = minsum;
А еще непонятно зачем переменной sum присваивали значение переменной minSum.
Цитата Сообщение от Kline81 Посмотреть сообщение
C#
1
Console.Write($"Строка с минимальной суммой элементов равна {matrix[index, j]}. ");
А еще откуда тут j?
1
3 / 3 / 0
Регистрация: 10.08.2022
Сообщений: 29
31.08.2022, 13:54  [ТС]
Нет, дело не в этом. Программа не выводит нужную строку, она считает сумму каждого элемента в строке, а при выводе это всё зациклено повторяется ("Строка с минимальной суммой элементов равна 3. Строка с минимальной суммой элементов равна 7. Строка с минимальной суммой элементов равна 3." и т.д.). А ведь нужно ещё сравнить сумму строк между собой и вывести номер строки с самой маленькой суммой элементов. В моём коде вроде и есть сравнение, но оно почему-то не работает.
0
 Аватар для iLinks
800 / 458 / 237
Регистрация: 03.01.2017
Сообщений: 1,339
31.08.2022, 13:56
Kline81, я вам выше написал рабочий код, и расписал, где ошибки. Вы кому отвечаете? Пользуйтесь обращением по никнейму.
0
3 / 3 / 0
Регистрация: 10.08.2022
Сообщений: 29
31.08.2022, 14:39  [ТС]
iLinks, Да, я писал John Prick. Благодарю за код - он рабочий, только там нужно вывести, что, к примеру, "строка с минимальной суммой элементов: 2". Больше там ничего не нужно выводить в консоль.

Добавлено через 32 минуты
Как мне в этом коде просто указать номер строки с минимальной суммой? Например, если минимальная сумма будет в первой строке, то консоль должна вывести: "Строка с минимальной суммой элементов: 1", а если минимальная сумма будет в третьей строке, то, соответственно: "Строка с минимальной суммой элементов: 3".
0
 Аватар для iLinks
800 / 458 / 237
Регистрация: 03.01.2017
Сообщений: 1,339
31.08.2022, 14:44
Kline81, index+1 выводить и все
0
3 / 3 / 0
Регистрация: 10.08.2022
Сообщений: 29
31.08.2022, 14:50  [ТС]
iLinks, Если выводить в конце, то "Имя "i" не существует в текущем контексте." Если выводить в другом месте, то получается так:
"Строка с минимальной суммой элементов: 0.
Строка с минимальной суммой элементов: 1.
Строка с минимальной суммой элементов: 2."
0
 Аватар для iLinks
800 / 458 / 237
Регистрация: 03.01.2017
Сообщений: 1,339
31.08.2022, 15:17
Kline81, А причем тут i? Я же вам написал "index+1"

Добавлено через 23 минуты
Цитата Сообщение от iLinks Посмотреть сообщение
C#
1
Console.WriteLine($"Строка с минимальной суммой элементов равна {line}. ");
Kline81, В этой строке исправьте на
C#
1
Console.WriteLine($"Строка с минимальной суммой элементов равна {index + 1}. ");
1
3 / 3 / 0
Регистрация: 10.08.2022
Сообщений: 29
31.08.2022, 15:56  [ТС]
iLinks, Спасибо Вам огромное!!! Всё работает!!! А про "i", так это у меня уже, наверное, от набора кода глаза плясать пошли.))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2022, 15:56
Помогаю со студенческими работами здесь

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

Напишите программу, которая будет находить общее количество осадков для каждого из 5 лет
a)Напишите программу, которая будет находить общее количе-ство осадков для каждого из 5 лет, среднегодовое и среднемесячное количество...

Составить программу, которая будет находить в массиве повторяющиеся числа и выводить их на экран
Составить программу, которая будет находить в массиве числа повторяющихся ивыводить их на экран

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

Найти строку с максимальной суммой элементов в двумерном массиве
Найти строку с максимальной суммой элементов в двумерном массиве. Как это реализовать? Желательно код с коментарием, или просто...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru