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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2010, 19:13   #1
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию отсортировать по условию возрастания модуля отклонения их дробовой части от значения 0,5

Помогите с сортировкой элементов в массиве

задаём массив с элементами
a:array[1..N] of real=(1.3,1.9,5.2,8,9,12.3,7.1,10,6 .5,4.7);

и нам надо отсортировать по условию возрастания модуля отклонения их дробовой части от значения 0,5
вот мы находим модуль отклонения
l:=frac(a[i]);
y:=abs(0.5-l);

Ну а вот чтот пытался сделать и вот что вышло
Код:
begin
repeat
 for i:=1 to N do
   begin
   l:=frac(a[i]);
   b:=frac(a[i+1]);
   y:=abs(0.5-l);
   u:=abs(0.5-b);
   if y<u then
     begin
     tmp:=a[i+1];
     a[i+1]:=a[i];
     a[i]:=tmp;
     f:=true;
     end
    else f:=false;
  end;
until f=false;
end;

Т.е. он не хочет сортировать помогите исправить ошибку

Последний раз редактировалось Stilet; 04.05.2010 в 10:01.
MIKE11IPME вне форума Ответить с цитированием
Старый 03.05.2010, 21:33   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Обычная сортировка по возростанию, только условие немного другое if abs(frac(a[i]) - 0.5) > abs(frac(a[j]) - 0.5) then
Код:
const
  N = 10;
var
  i, j: integer;
  z: real;
  a: array[1..N] of real=(1.3, 1.9, 5.2, 8, 9, 12.3, 7.1, 10, 6.5, 4.7);
begin
  for i := 1 to N - 1 do
  for j := i + 1 to N do
  if abs(frac(a[i]) - 0.5) > abs(frac(a[j]) - 0.5) then begin
    z := a[i];
    a[i] := a[j];
    a[j] := z
  end;
  for i := 1 to N do write(a[i]:6:1);
  readln
END.
eoln вне форума Ответить с цитированием
Старый 03.05.2010, 21:51   #3
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Всё работает спс и низкий поклон вам

Эм задам тут вопрос не хочу засорять форум
а как сделать рандомное заполнение массива дробными числами до определённого знака после запятой?

Последний раз редактировалось Stilet; 04.05.2010 в 10:02.
MIKE11IPME вне форума Ответить с цитированием
Старый 04.05.2010, 09:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну примерно так:
r:=random(100)+random(1001)/1000 - это до 4го знака
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2010, 16:01   #5
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

спасибо всё работает))
ограничился 2-мя занками после запятой

Последний раз редактировалось MIKE11IPME; 04.05.2010 в 20:32.
MIKE11IPME вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена части значения ячейки maksim_serg Microsoft Office Excel 4 26.03.2010 12:21
Как отсортировать ключи и значения в многомерном массиве? akokin PHP 8 10.01.2010 12:32
помогите отсортировать значения по параметрам malenro84 Microsoft Office Excel 1 05.05.2009 23:59
Нахождение Стандартного отклонения enigma Microsoft Office Excel 1 06.02.2008 16:12
Для вещественного массива А(20)вычислить наибольшее и наименьшее значения модуля раз-ти между сосед.эл-ми faix Помощь студентам 2 14.11.2007 13:25