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

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

08.03.2019, 21:15. Показов 2464. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вставить нулевую строку и нулевой столбец перед строками и столбцами, где находятся минимальные элементы.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2019, 21:15
Ответы с готовыми решениями:

Вставить нулевую строку и нулевой столбец перед строкой и столбцом, где находится первый минимальный элемент.
3. Вставить нулевую строку и нулевой столбец перед строкой и столбцом, где находится первый минимальный элемент. Люди,помогите написать...

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

Имеется двумерный массив. Вставить нулевую строку и нулевой столбец перед строкой и столбцом, где находится первый минимальный элемент
Имеется двумерный массив. Вставить нулевую строку и нулевой столбец перед строкой и столбцом, где находится первый минимальный элемент.

2
70 / 44 / 28
Регистрация: 14.02.2017
Сообщений: 126
09.03.2019, 11:28
Лучший ответ Сообщение было отмечено Benqk как решение

Решение

Добрый день!

Код:
- без обработчика ошибок,
- без проверки вводимых значений,
- структура класса Matrix нехорошая, т.к. все методы, непосредственно выполняющие задачу имеют сигнатуру void() - то есть ничего не принимают и ничего не возвращают, поэтому их нужно запускать последовательно. По хорошему их надо делать статическими, но уж сделал как сделал)))
- написание кода можно скорее всего можно упростить за счет применения LINQ (но так как нам нужны индексы, я подумал, что более наглядно без LINQ) и отказаться от классов (по сути здесь бесполезно: надо или полностью прописывать структуру , или уж лепить все в Main),
- далее смотри комментарии по коду

Класс Matrix
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
    public class Matrix
    {
        public int N { get; set; }
        public int M { get; set; }
 
        public int[,] FullMatrix { get; set; }
        public Tuple<int, int, int> MinElCoord { get; set; }
        public Tuple<int, int, int> MaxElCoord { get; set; }
 
 
        public Matrix() { }
        //конструктор класса ну формирует матрицу, а только задает ее размерность
        public Matrix(int n, int m)
        {
            N = n;
            M = m;
        }
        //метод для заполнения матрицы рандомными значениями, принимает границы этих значений
        //тут же выводит на консоль
        public void BuildMatrix(int a, int b)
        {
            int[,] myMatrix = new int[N, M];
            Random rnd = new Random();
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    myMatrix[i, j] = rnd.Next(a, b);
                    Console.Write("{0}\t", myMatrix[i, j]);
                }
                Console.WriteLine("\n");
            }
            //инициализация поля матрицы с значениями
            //для того, чтобы сделать метод void
            FullMatrix = myMatrix;
            //return myMatrix;
        }
        //метод для определения индекса минимального элемента матрицы
        public void GetMinElementIndex()
        {
            //объявляем кортеж, в который запишем результат поиска, ведь далее нам
            //будут нужны индексы, но мы сохраним в нем и индексы и само значение для наглядности
            Tuple<int, int, int> myCoord = myCoord = new Tuple<int, int, int>(0, 0, 0); 
            int min = 10000;            
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    if (FullMatrix[i, j] < min)
                    {
                        min = FullMatrix[i, j];
                        myCoord = new Tuple<int, int, int>(i, j, FullMatrix[i, j]);                        
                    }                                    
                }                
                MinElCoord = myCoord;
            }            
        }
        //метод для определения индекса максисального элемента матрицы - далее не используем
        //так, справочно
        public void GetMaxElementIndex()
        {
            Tuple<int, int, int> myCoord = myCoord = new Tuple<int, int, int>(0, 0, 0);
            int max = 0;
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    if (FullMatrix[i, j] > max)
                    {
                        max = FullMatrix[i, j];
                        myCoord = new Tuple<int, int, int>(i, j, FullMatrix[i, j]);
                    }
                }                
                MaxElCoord = myCoord;
            }            
        }
 
        public void MatrixTransform()
        {
            //задаем массив int[] и коллекцию List<int>, которые будут участвовать в добавлении 0 в строку
            int[] arr;
            List<int> listMatrixJ = new List<int>();
            //задаем ступенчатый массив int[][] и коллекцию List<int>, которые будут участвовать в добавлении 0-строки в матрицу
            int[][] arrB;            
            List<int[]> listMatrixI = new List<int[]>();
            //задаем двумерный массив увеличенного размера для итогового преобразования
            int[,] arrC = new int[N + 1, M + 1];
 
            //в цикле производим формирование массива массивов
            //перебираем фактически изначальную матрицу N x M
            //а формируем уже нужные коллекции
            for (int i = 0; i < N; i++)
            {                
                if (i == MinElCoord.Item1)
                {
                    //думаю, что именно из-за этого у меня получился массив массивов
                    //т.к. вставляем в коллекцию целую строку
                    listMatrixI.Add(new int[(M + 1)]);
                }
                for (int j = 0; j < M; j++)
                {
                    if (j == MinElCoord.Item2)
                    {
                        listMatrixJ.Add(0);
                    }
                    listMatrixJ.Add(FullMatrix[i, j]);
                }
                arr = listMatrixJ.ToArray();
                listMatrixJ.Clear();
                listMatrixI.Add(arr);
            }            
            arrB = listMatrixI.ToArray();
            //преобразуем полученный ступенчатый массив в двумерный и выводим на консоль
            for (int i = 0; i < arrB.GetLength(0); i++)
            {
                for (int j = 0; j < arrB[i].GetLength(0); j++)
                {
                    arrC[i, j] = arrB[i][j];
                    Console.Write("{0}\t", arrC[i, j]);
                }
                Console.WriteLine("\n");
            }
        }
    }
Что и как запускаем в Main:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            //создаем наш объект размером 5 на 5
            Matrix m = new Matrix() { N = 5, M = 5 };
            //заполняем его значениями и выводим на консоль
            Console.WriteLine("Исходная матрица:");
            m.BuildMatrix(-50, 50);
            //получаем кортежи с информацией о координатах и значениях 
            m.GetMinElementIndex();
            m.GetMaxElementIndex();
            //и выводим для наглядности на консоль
            Console.WriteLine($"Кортеж с координатми строки и столбца, содержащих min элемент: {m.MinElCoord}");
            Console.WriteLine($"Кортеж с координатми строки и столбца, содержащих max элемент: {m.MaxElCoord}");
            //производим манипуляции с добавлениями и выводим на консоль
            Console.WriteLine("Трансформированная матрица:");
            m.MatrixTransform();
            Console.ReadKey();
Что получаем на консоли:
Миниатюры
Вставить нулевую строку и нулевой столбец перед строками и столбцами, где находятся минимальные элементы  
1
-1 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 54
09.03.2019, 14:31  [ТС]
Спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2019, 14:31
Помогаю со студенческими работами здесь

Вставить нулевую строку и нулевой столбец перед строкой и столбцом матрицы
1. Имеется двумерный массив. Вставить нулевую строку и нулевой столбец перед строкой и столбцом, где находится первый минимальный элемент. ...

Вставить нулевую строку и столбец перед строкой и столбцом, в которых встретился минимальный элемент
32. Вставить нулевую строку и столбец перед строкой и столбцом, в которых встретился минимальный элемент

Вставить нулевую строку перед строкой, где находится первый минимальный элемент
Вставить нулевую строку перед строкой, где находится первый минимальный элемент.

В двумерном массиве вставить перед четными столбцами столбец из нулей, а после нечетных строк строку из единиц
Добрый день! Подскажите пожалуйста решение следующей проблемы. Задан двумерный квардартный массив с числов строк и столбцов N ...

Вставить новый столбец перед всеми столбцами, в которых встречается заданное число
Подскажите, как в С# вставить новый столбец перед всеми столбцами, в которых встречается заданное число


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru