Пятница, 24.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Одномерный массив
resisterДата: Пятница, 12.12.2008, 02:17 | Сообщение # 1
Старый знакомый
Группа: Пользователи
Сообщений: 25
Репутация: 0
Замечания: 0%
Статус: Offline
Из элементов массива A(2n) получить массивы B(n) и C(n) следующим образом. Выбрать в массиве А два наиболее близких по значению элемента; меньший из них поместить в массив В, а больший - вмассив С. Продолжить выбор из оставшихся элементов до полного заполнения массивов В и С.

:shubizsetisforuma:
 
SeqularДата: Пятница, 12.12.2008, 06:32 | Сообщение # 2
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
resister, Ну наверное сначала нужно выбрать наиболее близкие по значению элементы, потом уже посмотреть какой куда.
1. Как выбираются наиболее близкие? Сравниваем их попарно и ищем минимальную разность между ними. Я представляю себе это примерно так:
Code
-------------------------
min := abs(a[1]-a[2]);
x_1:= 1;
x_2:= 2;
inc(index);
For i := 1 to n-1 do
      Begin
      If (r[i] = true) then Continue;     
      For j := i+1 to n do
           Begin
           if (r[j] = true) then Continue;
           if (abs(a[i]-a[j])<min) then
              Begin
              x_1 := i;
              x_2 := j;
              min := abs(a[i]-a[j]);
              End;
           End;
r[x_1] := true;
r[x_2] := true; {Чтобы не рассматривать повторно их}
if (a[x_1] >= a[x_2]) then
    Begin
    c[index] := a[x_1];
    b[index] := a[x_2];
    End
Else
    Begin
    c[index] := a[x_2];
    b[index] := a[x_1];
    End;
---------------------

Вот, все это нужно повторить n-1 раз, а последний раз взять 2 оставшихся элемента и все. Ну можно n раз повторить, тогда прога все сама сделает...

Это предварительный код, который содержит логические и синтаксические ошибки. Так что правь сам.
Общая идея такова:
- ищем наименьшую разность, запоминаем эти числа.
- метим их позиции в массиве, чтобы потом не рассматривать.


Поддерживаю также проект сообщество молодых сисадминов
 
resisterДата: Пятница, 12.12.2008, 23:51 | Сообщение # 3
Старый знакомый
Группа: Пользователи
Сообщений: 25
Репутация: 0
Замечания: 0%
Статус: Offline
спасибо за помощь

:shubizsetisforuma:
 
SeqularДата: Суббота, 13.12.2008, 06:26 | Сообщение # 4
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
resister, да пожалуйста smile лишь бы помогло

Поддерживаю также проект сообщество молодых сисадминов
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;