Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2011, 19:47   #1
xpams
Пользователь
 
Регистрация: 16.09.2011
Сообщений: 43
По умолчанию Московские учебно-тренировочные сборы по информатике. Весна–2006 Площадь

Подсчитайте площадь заданного произвольного многоугольника.

Входные данные
В первой строке входных данных находится число N (3 ≤ N ≤ 50000) – количество вершин многоугольника. Последующие N строк содержат по 2 целых числа x и y (−10000 ≤ x,y ≤ 10000) – координаты вершин.

Выходные данные
Выведите площадь многоугольника с точностью 600 знаков после запятой.
* В примере выходные данные содержат 600 нулей.
xpams вне форума Ответить с цитированием
Старый 04.10.2011, 19:48   #2
xpams
Пользователь
 
Регистрация: 16.09.2011
Сообщений: 43
По умолчанию

3
0 0
1 0
0 1




0.50000000000000000...000
xpams вне форума Ответить с цитированием
Старый 04.10.2011, 19:57   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

вопрос первый - он у тебя правильный N-угольник, вписанный в окружность, или точно уж вообще произвольный и перекошенный слева наверх сикось-накось?
в первом случае проще было бы...
второй вопрос: а данную задачу надо именно аналитически решать или можно и графически?

графически - это нарисовать вашу фигуру, закрасить её и по количеству закрашенных пикселей подсчитать её площадь. просто мне этот способ самым лёгким показался. но могут быть и другие мнения у обсуждающих...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 04.10.2011, 20:00   #4
xpams
Пользователь
 
Регистрация: 16.09.2011
Сообщений: 43
По умолчанию

Я нашел решение в интернете. Ну вот проблемма: не могу сделать вывод в консоль! Подскажите какой тип данных имеет 600 знаков после десятичной точки. Вот код:

Код:
Var p,s,min: extended;
    n: int64;
    x,y: array[1..21] of extended;

Procedure Vvod;
Var i: integer;
Begin
 readln(n);
 for i:= 1 to n do
  begin
   readln(x[i],y[i]);
  end;
  x[n+1]:=x[1];
  y[n+1]:=y[1];
End;

Procedure Perenos;
Var i: integer;
Begin
 min:=y[1];
 for i:= 2 to n do
  if min >y[i] then
   min:=y[i];
  for i:=1 to n+1 do
   y[i]:=y[i]-min;
End;

Procedure Ploshad;
Var i: integer;
Begin
 s:=0;
 for i:= 1 to n do
  s:= s+((y[i+1]+y[i])*(x[i+1]-x[i])/2);
end;

Procedure Vyvod;
Begin
 writeln(abs(s):1:600);
end;

Begin
 Vvod;
 Perenos;
 Ploshad;
 Vyvod;
end.

________
При оформлении кода тегами, сначала выделите код программы, а уже потом применяйте форматирование!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 04.10.2011 в 23:51.
xpams вне форума Ответить с цитированием
Старый 04.10.2011, 20:08   #5
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

попробуй тип REAL, у него, кажись, после запятой дробная часть идёт;
Код:
s:Real;
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 04.10.2011, 23:52   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Подскажите какой тип данных имеет 600 знаков после десятичной точки
я такой тип данных не знаю...
и даже не знаю, что можно посоветовать..
может быть, надо использовать длинную арифметику ?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны площадь круга и площадь квадрата Joker<777> Паскаль, Turbo Pascal, PascalABC.NET 10 17.01.2012 07:00
ООП (паскаль) - дан ромб. найти площадь. построить пирамиду, найти её площадь Rfn.if Помощь студентам 0 27.04.2011 16:10
помогите где можно скачать триальную версию BDS 2006, Delphi 2006 или С++Builder. gennad_ugryumov Софт 3 28.01.2009 18:00