Помощь - Поиск - Пользователи - Календарь
Полная версия: Железная дорого
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Cheburashka
Железная дорога

При строительстве новой железной дороги возникли проблемы. Дорога пролегает по холмистой местности, однако сами пути должны идти строго горизонтально. Поэтому руководство строительной компании приняло решение выровнять поверхность земли на этом участке. Главная проблема состоит в том, что привозить или вывозить землю на стройку стоит 10000$ за кубический метр. Поскольку бюджет железной дороги невелик, этого нельзя себе позволить.

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

Через каждый метр от начала участка была измерена высота над уровнем моря. Напишите программу, которая по данным измерений рассчитывает искомую высоту.

Входные данные

Первая строка входного файла INPUT.TXT содержит количество N (1 < N <= 30000) точек, в которых была замерена высота. Вторая строка содержит результаты замеров – i-ое число строки содержит высоту над уровнем моря точки, находящейся на расстоянии (i-1) метр от начала участка. Все высоты – целые неотрицательные числа, не превосходящие 10000. Считайте, что между соседними точками измерений земная поверхность строго прямолинейна.

Выходные данные

В выходной файл OUTPUT.TXT выведите ответ на задачу с точностью, не меньшей 10^-5.


Пример:
4
0 1 1 0
Результат - 0.6666666667



Вот моё решение:
program N_13;
  var n,i:longint;
      s:real;
      a:array[1..30000] of integer;
Begin
  assign (input,'input.txt');
  reset (input);
  assign (output,'output.txt');
  rewrite (output);
  Read (n);
  For i:=1 to n do
    Read (a[i]);
  s:=0;
  For i:=1 to n-1 do
    s:=S+(a[i]+a[i+1])/2;
  s:=s/i;
  Write (s:12:10);
End. 


Помогите мне её доработать!!! Возможно проблема с форматным выводом. (задача правильно решена)
sheka
Read (n); замени на Read (input,n);
Cheburashka
В принципе нету разницы, так как я уже около 100 задач так отправлял...
volvo
Цитата
Помогите мне её доработать!!!
А чего ее дорабатывать? Программа работает и возвращает именно такой результат, как написано. Что не так?
sheka
Цитата(Сергей Меркурьев @ 24.05.2009 19:49) *

В принципе нету разницы, так как я уже около 100 задач так отправлял...

а с файла кто считывать будет? ты считываешь ввод с клавы!

что значит: так как я уже около 100 задач так отправлял...
Cheburashka
А я вот не знаю сайту http://acmp.ru/ что-то не нравится(

Может проблема с форматным выводом?
volvo
Цитата
а с файла кто считывать будет? ты считываешь ввод с клавы!
Еще один специалист dry.gif А перенаправление файла Input.txt для кого сделано? Ты б читал, а потом отвечал...
Cheburashka
sheka, я обучаюсь программированию по сайту http://acmp.ru/. И там в принципе не требуется писать следующее:

...
Read (input,n);
...
Write (output,k);
...
Cheburashka
Ну так что насчёт моей задачи? В чём здесь может быть ошибка? У меня только есть предположение, что проблема в форматном выводе...

Но может Вы прочитаете задачу внимательно... Может что-нибудь и найдёте... smile.gif
Cheburashka
Всё! Добил я эту задачку до конца!!!
Проблема заключалась в том, что ну жно было сумму средних арифметических делить на N-1;

program N_13;
  var n,i:longint;
      s:real;
      a:array[1..30000] of integer;
Begin
  Read (n);
  For i:=1 to n do
    Read (a[i]);
  s:=0;
  For i:=1 to n-1 do
    s:=S+(a[i]+a[i+1])/2;
  s:=s/n-1;
  Write (s:12:10);
End. 

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.