IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> разделение одномерного массива
falcon
сообщение 13.03.2007 19:58
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Denis

Репутация: -  0  +


паскаль только начал изучать помогите пожалуйста вот с такой програмой:
Разделить одномерный массив на 3 части, которые по возможности имеют минимальное расхождение сумм
P.S.заранее спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
klem4
сообщение 13.03.2007 23:14
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Как-то так ?

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.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.03.2007 23:15
Сообщение #3


Гость






Только не будет это компилироваться под TP ... no1.gif
 К началу страницы 
+ Ответить 
klem4
сообщение 13.03.2007 23:23
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


yes2.gif

Исправил под TP.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
kpi
сообщение 15.03.2007 12:17
Сообщение #5


Гость






а вы уверены что эта прога пашет?
rolleyes.gif
она у меня вызывает сомнения blink.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 15.03.2007 12:21
Сообщение #6


Гость






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

Вызывает - напиши сам, чтоб НЕ вызывало!
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"