Помощь - Поиск - Пользователи - Календарь
Полная версия: разделение одномерного массива
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
falcon
паскаль только начал изучать помогите пожалуйста вот с такой програмой:
Разделить одномерный массив на 3 части, которые по возможности имеют минимальное расхождение сумм
P.S.заранее спасибо
klem4
Как-то так ?

uses crt;

const
n = 5;

type
TArray = array [1..n] of Integer;

TResult = record
a, b: Integer;
end;

function Part(const arr: TArray; const _from, _to: Integer): Integer;
var
s, i: Integer;
begin
s := 0;
for i := _from to _to do
inc(s, arr[i]);
Part := s;
end;

procedure GetParts(const arr: TArray; var R: TResult);
var
a, b, delta, min: Integer;
begin

min := MaxInt;

for a := 1 to n - 2 do
for b := a + 1 to n - 1 do begin

DELTA :=
abs ( Part(arr, b + 1, n) - Part(arr, a + 1, b) ) +
abs ( Part(arr, b + 1, n) - Part(arr, 1, a) ) +
abs ( Part(arr, a + 1, b) - Part(arr, 1, a));

if DELTA < min then begin
min := DELTA;
R.a := a;
R.b := b;
end;
end;
end;

const
X: TArray = (1, 2, 3, 4, 5);
var
R: TResult;
begin
clrscr;

GetParts(X, R);

writeln('1->', R.a, ', ', R.a + 1, '->', R.b, ', ', R.b + 1, '->', n);

readln;
end.
volvo
Только не будет это компилироваться под TP ... no1.gif
klem4
yes2.gif

Исправил под TP.
kpi
а вы уверены что эта прога пашет?
rolleyes.gif
она у меня вызывает сомнения blink.gif
volvo
А ты приведи пример входных данных, то, что тебе программа выдает, и то, что ты ХОЧЕШЬ, чтобы она выдавала... А то слишком много вот таких как ты: "У меня вызывает сомнения" mad.gif А сам даже не соизволил пример работы программы привести...

Вызывает - напиши сам, чтоб НЕ вызывало!
where to buy stromectol without
Viagra Fertilita
can you buy prednisone over the
Can Amoxicillin Be Used For Acne
where to buy zithromax over the
Healthman Viagra
hydroxychloroquine buy online us
Generico Priligy Funziona
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.