школьные олимпиады по программированию.Решение и разбор задач.

{Районная олимпиада 2005.Задача №6 "Ниточка"}

var n,i:integer;
r:real;
x,y:array[1..100] of real;
l:real;

begin
assign(input,'input.txt');
assign(output,'output.txt');
reset(input);
rewrite(output);
read(n,r);

for i:=1 to n do read(x[i],y[i]);
x[n+1]:=x[1];
y[n+1]:=y[1];
for i:=1 to n do l:=l+sqrt(sqr(x[i+1]-x[i])+sqr(y[i+1]-y[i]));
write(l+2*pi*r:8:2);
end.

Анализ и разбор задачи.Знания и умения.
Условие задачи:

Задача 6.Ниточка ( 16 баллов).

Рабочие вбили в плоскую поверхность N гвоздей, да так , что только шляпки остались. Мало того, они вбили все гвозди в вершины выпуклого многоугольника.После этого они натянули ниточку вокруг всех гвоздей.Ваша задача-определить длину этой ниточки
Формат входных данных:
в первой строке два числа количество гвоздей N, 1

Формат выходных данных:
Вещественное число, точностью до второго знака-длина ниточки, натянутой вокруг всех гвоздей

INPUT.TXT
4 1
0.0 0.0
2.0 0.0
2.0 2.0
0.0 2.0

OUTPUT.TXT

14.28

Алгоритм

1)из входного файла input.txt считываем количество точек и запоминаем их координаты в массиве,радиус гвоздей присваиваем переменной R

readln(n,r);

for i:=1 to n do read(x[i],y[i]);

2) по формуле длины отрезка в цикле находим периметр многоугольника

3)к найденной длине добавляем радиус окружности нити вокруг всех гвоздей 2*pi*r

4)выводим длину нити с точнстью до второго знака

Знать:

  • циклы с параметром for..
  • формулу длины отрезка и длины окружности


Уметь:
  • работать с входными и выходными файлами input.txt output.txt
домой
Hosted by uCoz