Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2018, 09:34   #1
Vavavava
 
Регистрация: 28.06.2018
Сообщений: 3
По умолчанию Дан массив M(n,n). После строк, содержащих максимальный элемент всего исходного массива вставить строку из нулей

Вот что у меня есть:
Код:
  static void Main(string[] args)
        {
            Random ran = new Random();
            int n;
            Console.Write("Введите количество строк, столбцов: ");
            n = int.Parse(Console.ReadLine());
            int[,] table = new int[n, n * 2];
            int i, j;
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                {
                    table[i, j] = ran.Next(1, 10);
                }
            }
            Print(table, n);
            Console.WriteLine();
            for(j=0;j<n;j++)
            {
                int max = table[0, j];
                for(i=0;i<n;i++)
                {
                    if(table[i,j]>max)
                    {
                        max = table[i, j];
                        InsertStolb(ref table, n, max);
                    }
                }
            }
            Print(table, n);
            Console.ReadKey();
        }
        static void InsertStolb(ref int[,] table,int n,int num)
        {
            int i, j;
            for(j=n-2;j>=num+1;j--)
            {
                for(i=0;i<n;i++)
                {
                    table[i, j - 1] = table[i, j];
                }
            }
            for (i=0;i<n;i++)
            {
                table[i, num - 1] = 0;
            }
        }
        static void Print (int[,] table,int n)
        {
            for(int i=0;i<n;i++)
            {
                for (int j=0;j<n;j++)
                {
                    Console.Write(table[i, j] + " ");
                }
                Console.WriteLine();
            }
        }
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 28.06.2018 в 09:49.
Vavavava вне форума Ответить с цитированием
Старый 28.06.2018, 09:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Vavavava Посмотреть сообщение
Код:
int[,] table = new int[n, n * 2];
первый индекс - это строка, второй индекс - столбец.
Вы же вроде бы строчки вставлять собираетесь?
вот для них и нужно выделить памяти для удвоенного числа строк.
Код:
int[,] table = new int[n * 2, n ];
Цитата:
Сообщение от Vavavava Посмотреть сообщение
InsertStolb
а почему, собственно, InsertStolb ?!
Вы столбцы вставлять собираетесь или строки?!

блок, где Вы ищите максимальное значение и вставляете столбцы(???!!) нужно переписывать.
нужно
1) сначала найти максимальное значение
2) в цикле пройтись по строкам массива и, если в строчке есть максимальное значение - вставить пустую строчку после неё.
(это цикл лучше сделать в обратном направлении - от n к 0 )



.

Последний раз редактировалось Serge_Bliznykov; 28.06.2018 в 09:57.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан двумерный массив А, заполненный случайным образом. Вставить после столбцов, содержащих максимальный элемент массива, столбец Boys Паскаль, Turbo Pascal, PascalABC.NET 10 02.11.2015 14:56
Вставить после всех строк, содержащих минимальный элемент массива, строку 2, 4, 6,… (Delphi) yana1213 Помощь студентам 10 15.05.2014 21:08
В целочисленном массиве Х(N) после каждого четного числа вставить максимальный элемент массива Артём555 Visual C++ 0 18.12.2012 19:57
Вставить первую строку после строки, в которой находится первый встреченный максимальный элемент. JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 4 03.12.2008 12:13
Найти максимальный элемент матрицы и вставить правее него столбец из нулей и ниже него строку из нулей. Romer9999 Паскаль, Turbo Pascal, PascalABC.NET 3 28.11.2008 11:28