|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.11.2014, 17:23 | #1 |
Регистрация: 26.11.2014
Сообщений: 3
|
Переставить значение массива
Переставить значение элементов заданного одномерного массива, так чтобы все нулевые оказались в конце массива, а не нулевые в начале, не нарушая порядок, в котором они были
|
26.11.2014, 18:31 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
в цикле идём по массиву проверяем, не нулевой ли элемент.
встретили нулевой - запускаем второй подцикл - ищем первый не нулевой после него. нашли - меняем местами нулевой и найденный ненулевой. если не нашли - бинго, задача выполнена, прерываем цикл. продолжаем, пока не прервались (см. выше) или пока не дошли до конца массива. конец. Надеюсь, нигде не напутал.. p.s. алгоритм не очень оптимальный, но, на мой взгляд, вполне рабочий. p.p.s. если можно использовать второй (дополнительный) массив, то задача решается абсолютно тривиально. |
26.11.2014, 18:55 | #3 |
Регистрация: 26.11.2014
Сообщений: 3
|
а вы можете написать программу, пожалуйста. А то я совсем новичок в этом деле. А нужно сдавать отчет по этой лабораторной
|
26.11.2014, 19:15 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
26.11.2014, 20:45 | #5 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,679
|
Так как язык программирования не уточнялся...
Попробую реализовать описанный алгоритм. Код:
p1.jpg Если есть вопросы по коду, спрашивайте.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
26.11.2014, 22:16 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Bugrimov, Вы при реализации сделали отклонение от алгоритма, которое привело к неверной работе.
в дополнительном цикле нужно обязательно искать от текущего элемента (у Вас поиск от конца массива). Ваш код намного эффективней (я выше писал, что мой алгоритм неэффективен), но он нарушает последовательность элементов массива, а в задаче: Цитата:
|
|
27.11.2014, 11:21 | #7 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,679
|
Признаю свою ошибку, исправлю...
Сделал изменения... Но вы правы, много лишних действий. Код:
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! Последний раз редактировалось Bugrimov; 27.11.2014 в 20:02. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переставить местами наименьший и наибольший элементы массива. | loya | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 25.12.2013 01:59 |
Дан массив А [N,N] переставить местами А[1,1] и минимальный элемент массива | olegatorka | Visual C++ | 3 | 07.11.2012 22:21 |
Переставить элементы массива в обратном порядке | Mayers | Общие вопросы C/C++ | 3 | 06.05.2012 12:15 |
Нужно переставить столбцы массива в Visual Basic | vital22222 | Помощь студентам | 0 | 09.12.2010 21:37 |