На новый год ученики решили украсить длинный коридор своими гирляндами. На потолке весят светильники. Какие нибуть два светильника можно соединить гирляндой. Надо сцепить светильники парами так чтобы возле каждого светильника была бы соединена хоть одна гирлянда, о всех гирлянд обшая длина была бы наименьшей.
Напишите программу, находящую наименьшую всех гирлянд длину.
Первичные данные записаны в файле duom.txt . На первой строчке в файле написано натуральное число s всех светильников (2<=s<=1000) светильников число . На другой строчке написано отделено пробелами растояние от светильников неотрицательное число, не больше 10000,- каждого светильника координаты.
Результаты - наименьшее всех гирлянд общее длина - записывается в файл rez.txt.
пример
начальные данные
5
4 10 0 12 2
результат
6
обьяснение
соединяем 0 и 2 (длина гирлянды 2) потом 2 и 4 (длина гирлянды 2) и 10 с 12 (длина гирлянды 2) общяя длина 6
и потом написать программы еще чтобы в файл duom.txt записывало эти разные числа.
вот я сделал программку сперва все числа в массив записывает потом упорядочивает массив по возрастанию
потом записывает длины от лампы до лампы всех длину гирлянд а потом ( ошибка ) должно выбирать наибольшее числа и их написать в другой массив и потом подсчитать все эти числа и записывает в файл.
еще у меня написаны там чтобы выводили числа на экран это для меня проверка.
вот вся программа.
program sviestuvai;
const count=1000;
Var
s,i,a,j,w,v:integer;
z:array [1..500] of integer;
m:array [1..999] of integer;
n:array [1..count] of integer;
pradDuom,rezult: text;
BEGIN
assign (pradDuom, 'duom.TXT');
assign (rezult, 'rez.TXT');
reset (pradDuom);
rewrite (rezult);
readln(pradduom,s);
for i:=1 to s do
read(pradduom,n[i]);
{********************sortirovka massiva po vozrastaniju****************}
for i:= 1 to s do
for j:=1 to s do
if n[i]<n[j] then begin w:=n[i]; n[i]:=n[j]; n[j]:=w; end;
{******************konec sortirovki************************************}
j:=0;
for i:= 1 to s-1 do
begin
inc(j);
m[j]:=n[i+1]-n[i];
end;
{************proverka kak otsortirovalo****************}
for i:=1 to s do
write(n[i]:3,' ');
writeln;
{***********konec proverki sortirovki************************}
{*************nacalo proverki vsex promizutkov*************}
for i:=1 to s-1 do
write(' ',m[i]:3); writeln;
{***************************konec************************}
{****************************OSIBKA*****************************************}
{****************nacalo otbora cisel**********************}
z[1]:=m[1];
z[j-1]:=m[s-1];
v:=1;
for i:=2 to j-2 do
begin
if m[i]>m[i+1]
then begin inc(v); z[v]:=m[i+1]; i:=i+2 end
else begin inc(v); z[v]:=m[i]; i:=i+2 end;
{ writeln('privet',j);}
{*********************konec*******************************}
v:=v+1;
for i:= 1 to v+1 do
writeln(i,'--> ',z[i]);
writeln;
a:=0;
for i:=1 to v do
a:=a+z[i];
writeln(a,' ',v,' ',z[j-1]);
end;
write(rezult,a);
readln;
close(pradduom);
close(rezult);
END.
вот и все написал где ошибка начинается помогите
Сообщение отредактировано: maksimla -