Задача Суслик и Собака (Переписать код C++ на Pascal) - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Суслик и собака

Время: 1 сек Память: 16 Мб

Здравствуйте

, есть задача: На большом поле находятся суслик и собака. Собака хочет суслика съесть, а суслик хочет оказаться в безопасности, добежав до одной из норок, выкопанных в поле. Ни собака, ни суслик в математике не сильны, но, с другой стороны, они и не беспросветно глупы. Суслик выбирает определенную норку и бежит к ней по прямой с определенной скоростью. Собака, которая очень хорошо понимает язык телодвижений, угадывает, к какой норке бежит суслик, и устремляется к ней со скоростью вдвое большей скорости суслика. Если собака добегает до норки первой, то она съедает суслика; иначе суслик спасается.

Требуется написать программу, которая поможет суслику выбрать норку, в которой он может спастись, если таковая существует.

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

Во входном файле INPUT.TXT записано в первой строке два числа – координаты суслика. Во второй строке записаны два числа – координаты собаки. В третьей строке записано число n – число норок на поле. В следующих n строках записаны координаты норок. Все координаты являются целыми числами, по модулю не превышающими 10000, и записываются через пробел. Количество норок не превышает 1000.

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

В единственную строку выходного файла OUTPUT.TXT нужно вывести число – номер норки, если у суслика есть возможность в ней спастись. Если у суслика есть возможность спрятаться в нескольких норках, то выведите ту, которая первая шла во входных данных. Если суслик не может спастись, то выведите в выходной файл «NO» (без кавычек).

Примеры:

1.

INPUT.TXT

10 10 20 20 1 15 15 1.

OUTPUT.TXT

NO

2.

INPUT.TXT

20 20 10 10 2 15 15 25 25 2.

OUTPUT.TXT

2

Пожалуйста, помогите с решением на Pascal

Решение на C++

Решение задачи: «Задача Суслик и Собака (Переписать код C++ на Pascal)»

textual
Листинг программы
var
  n, i: Integer;
  gx, gy, dx, dy, x, y: Longint;
begin
  Assign(input,'input.txt'); Reset(input);
  Assign(output,'output.txt'); Rewrite(output);
  ReadLn(gx,gy); ReadLn(dx,dy); ReadLn(n);
  for i:=1 to n do begin
    ReadLn(x,y);
    if 2*sqrt(sqr(x-gx)+sqr(y-gy))<=sqrt(sqr(x-dx)+sqr(y-dy)) then begin
      WriteLn(i); Exit;
    end;
  end;
  WriteLn('NO');
end.

Объяснение кода листинга программы

Код начинается с объявления переменных: n, i, gx, gy, dx, dy, x, y. Затем происходит чтение входных данных из файла input.txt. Далее, выводится содержимое файла output.txt, а также перезаписывается его содержимое. Считываются значения переменных gx, gy, dx, dy, x, y. Затем происходит итерация по переменным i от 1 до n. Внутри цикла происходит чтение значений переменных x и y. Далее, проверяется условие: 2*sqrt(pow(x-gx, 2) + pow(y-gy, 2)) <= sqrt(pow(x-dx, 2) + pow(y-dy, 2)). Если условие выполняется, то выводится значение переменной i и цикл прерывается с помощью команды Exit. В противном случае, выводится значение NO.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы