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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2016, 22:26   #1
AliceBreez
 
Регистрация: 23.02.2016
Сообщений: 3
По умолчанию Помогите упростить!

Слишком много лишнего и не рационального написала в программе, но она работает
Но нужно как-то упростить саму сортировку, помогите пожалуйста
Вложения
Тип файла: rar Desktop.rar (2.2 Кб, 11 просмотров)
AliceBreez вне форума Ответить с цитированием
Старый 24.02.2016, 11:16   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Что программа то делать должна??
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 24.02.2016, 13:24   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
Что программа то делать должна??
цитирую из исходника, вложенного в данный архив:
Цитата:
{Все нулевые значения переписать в конец данных, не изменяя следования остальных чисел.
Новых данных при этом не заводить.
Если нулей будет больше 3-х, то первый ноль заменить на среднее арифметическое значение до этого нуля }
вот только непонятно, зачем для этого использовать список?
Может быть, можно обойтись массивом?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.02.2016, 21:11   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,334
По умолчанию

В своей первой части эта задача уже решалась.
В цикле for просматривается массив. Пусть параметр цикла - i.
При обнаружении нулевого элемента вспомогательная переменная, например, m получает значение параметра цикла.
Код:
m := i;
Далее, при обнаружении ненулевого элемента массива, он (элемент) записывается в m-ный элемент, а m увеличивается на единицу.
Код:
...
Mas[m] := Mas[i];
m := m + 1;
...
Одновременно подсчитывается сумма элементов:
Код:
...
Sum := Sum + Mas[i];
...
После завершения просмотра всех элементов массива во вспомогательной переменной хранится первый нулевой элемент после ненулевых элементов.
В новом цикле for заполняем нулями все элементы массив, начиная с m-го. Если n - всего элементов в массиве, то:
Код:
...
for i := m to n do
   Mas[i] := 0;
...
n - m +1 - число нулевых элементов.
Проверяем условие на число нулевых элементов и решаем судьбу m-го элемента массива:
Код:
...
if ((n-m+1) > 3 )then
Sred := Sum/(m-1);
...
Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите упростить код tarakan1983 Общие вопросы Delphi 12 02.03.2014 12:50
помогите упростить код serafim09 Microsoft Office Excel 9 14.10.2009 15:01
помогите упростить простой макрос frantic150 Microsoft Office Excel 2 23.06.2009 04:55
Помогите упростить код Ralf_ru Помощь студентам 7 01.04.2009 17:17
Помогите упростить с помощью VBA Dubineanschi Microsoft Office Excel 3 22.10.2008 14:21