|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.05.2018, 22:03 | #1 |
Регистрация: 16.05.2018
Сообщений: 5
|
Сжать массив и сжатые элементы в конце вывести нулями
Зачада: Сжать элементы, которые по модулю меньше 1 и вывести их нулями в конце.
Вот кусок кода: Random randEx = new Random(); int n = randEx.Next(5, 10); double[] Array = new double[n]; Console.Write("Massiv iz n-elementov: "); for(int i = 0; i < Array.Length; i++) { Array[i] = randEx.Next(-10, 10) * randEx.NextDouble(); Console.Write(Array[i] + " "); } Console.Write("\nSortirovka: "); for(int i = 0; i < Array.Length; i++) { if (Math.Abs(Array[i]) < 1.0) { for (int j = 0; j < Array.Length - 1; j++) { Array[j] = Array[j + 1]; } Array[Array.Length - 1] = default(double); } Console.Write(Array[i] + " "); } Проблема заключается вот в чем: если 2 элемента, которые подходят по условию для сжатия идут подряд, то первое идет в конец и обнуляется, а следующее остается на месте. Прохожу по алгоритму, вроде все верно. В чем моя ошибка? На скрине удачно поймал: 0-ой элемент - Ок 1-ый элемент - Er 2-ой элемент - Ок 3-ий элемент - Er 4-ый элемент - Ок Последний раз редактировалось PadavanPanda; 22.05.2018 в 22:05. Причина: пояснение |
23.05.2018, 06:09 | #2 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
i-- перед выходом из if
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
23.05.2018, 14:09 | #3 |
Регистрация: 16.05.2018
Сообщений: 5
|
|
23.05.2018, 16:10 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
у вас нет сортировки (удаления только "ненужных" <1.0 )
для проверки данного утверждения достаточно:
программа — запись алгоритма на языке понятном транслятору
|
23.05.2018, 16:27 | #5 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
бывает
имхо, FOR не тот цикл для таких заданий. Набросок, но можно рефакторить Код:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
01.06.2018, 18:14 | #6 | |
Регистрация: 16.05.2018
Сообщений: 5
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Необходимо "сжать" целочисленный массив, выбросив из него нулевые элементы | TunelLord | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 22.01.2016 18:36 |
Удалить из массива все элементы, последняя цифра которых нечетная и сжать массив.(через процедуры и функции) | Proskurina | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 23.09.2012 12:43 |
Удалить из массива все элементы, последняя цифра которых нечетная и сжать массив | Proskurina | Помощь студентам | 4 | 21.09.2012 23:02 |
элементы вектора с нулями | Владюшка | Помощь студентам | 5 | 28.01.2010 14:35 |