ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1030. Титаник

sample
Послано remdy21 4 авг 2009 16:22
why my answer is 52.14?
Re: sample
Послано remdy21 4 авг 2009 17:11
my code is:
program titanic;
uses math;
const r=3437.5;
var s:char;
    a,b,c,x,y,z,d,e,u,v,w:extended;
begin
  assign(input,'titanic.in');
  assign(output,'titanic.out');
  reset(input);
  rewrite(output);
  readln;
  readln;
  readln;
  read(s);
  while s<>'^' do
    begin
      a:=a*10+ord(s)-48;
      read(s);
    end;
  read(s);
  while s<>chr(39) do
    begin
      z:=z*10+ord(s)-48;
      read(s);
    end;
  a:=a+z/60;
  z:=0;
  read(s);
  while s<>'"' do
    begin
      z:=z*10+ord(s)-48;
      read(s);
    end;
  read(s,s);
  a:=a+z/3600;
  if s='S' then
    a:=-a;
  readln;
  read(s,s,s,s,s);
  while s<>'^' do
    begin
      b:=b*10+ord(s)-48;
      read(s);
    end;
  read(s);
  z:=0;
  while s<>chr(39) do
    begin
      z:=z*10+ord(s)-48;
      read(s);
    end;
  b:=b+z/60;
  z:=0;
  read(s);
  while s<>'"' do
    begin
      z:=z*10+ord(s)-48;
      read(s);
    end;
  read(s,s);
  b:=b+z/3600;
  if s='W' then
    b:=-b;
  readln;
  readln;
  read(s);
  while s<>'^' do
    begin
      x:=x*10+ord(s)-48;
      read(s);
    end;
  read(s);
  z:=0;
  while s<>chr(39) do
    begin
      z:=z*10+ord(s)-48;
      read(s);
    end;
  x:=x+z/60;
  z:=0;
  read(s);
  while s<>'"' do
    begin
      z:=z*10+ord(s)-48;
      read(s);
    end;
  read(s,s);
  x:=x+z/3600;
  if s='S' then
    x:=-x;
  readln;
  read(s,s,s,s,s);
  while s<>'^' do
    begin
      y:=y*10+ord(s)-48;
      read(s);
    end;
  read(s);
  z:=0;
  while s<>chr(39) do
    begin
      z:=z*10+ord(s)-48;
      read(s);
    end;
  y:=y+z/60;
  z:=0;
  read(s);
  while s<>'"' do
    begin
      z:=z*10+ord(s)-48;
      read(s);
    end;
  read(s,s);
  y:=y+z/3600;
  if s='W' then
    y:=-y;
  c:=sin(a);
  z:=cos(a);
  d:=z*cos(b);
  e:=z*sin(b);
  u:=sin(x);
  z:=cos(x);
  v:=z*cos(y);
  w:=z*sin(y);
  z:=c*u+d*v+e*w;
  z:=r*pi*arccos(z)/180;
  writeln('The distance to the iceberg: ',z:0:8,' miles.');
  if z<99.995 then
    writeln('DANGER!');
end.