Задача Суслик и Собака (Переписать код 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)»
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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д