Посчитать, на сколько сантиметров увеличился радиус шляпки каждого гриба после завершения дождя - Pascal ABC
Формулировка задачи:
Задача: Грибной дождь
(Время: 1 сек. Память: 16 Мб Сложность: 30%)
На лесной опушке растет дружная семейка грибов. Местоположение каждого гриба задается координатами X, Y, а шляпка гриба имеет радиус R. Когда идет дождь, радиус шляпки каждого гриба непрерывно и равномерно увеличивается cо скоростью 1 сантиметр в минуту. Когда дождь заканчивается (а он идет не более Т минут), шляпки прекращают расти. Если во время дождя шляпки двух грибов соприкоснулись, то они немедленно перестают расти, чтобы не навредить друг другу. Грибы очень дружные, поэтому если перестают расти два гриба, то и все остальные тоже не растут.
Требуется посчитать, на сколько сантиметров увеличился радиус шляпки каждого гриба после завершения дождя.
Входные данные
Первая строка входного файла INPUT.TXT содержит два натуральных числа: количество грибов K (K<=10) и длительность дождя T (T<=100). Следующие К строк содержат описание грибов: целые координаты X и Y (0<=X, Y<=100) и радиус шляпки R (1<=R<=10). Координаты и радиус даны в сантиметрах.
Выходные данные
В выходной файл OUTPUT.TXT выведите величину в сантиметрах, на которую увеличится радиус всех грибов. Результат следует вывести с точностью, не меньшей, чем два знака после запятой.
Примеры
INPUT.TXT OUTPUT.TXT
2 1
0 0 1
2 2 1 0.41
3 2
0 0 1
5 5 1
10 10 1 2.00
Написала Код, стала сдавать а он мне говорит, что произошла ошибка компиляции....((((Грусть((( Подскажите В чем беда?????
Решение задачи: «Посчитать, на сколько сантиметров увеличился радиус шляпки каждого гриба после завершения дождя»
textual
Листинг программы
program acmp_0699; const Kmax = 10; type TMushroom = record X, Y, R: real; end; TMushroomList = array [0..Kmax - 1] of TMushroom; function Distance(x1, y1, x2, y2: real): real; begin Distance := sqrt(sqr(x1 - x2) + sqr(y1 - y2)); end; var K: integer; T: real; mushroom: TMushroomList; i, j: integer; MinDistance, CurDistance: real; begin readln(K, T); Dec(K); for i := 0 to K do with mushroom[i] do readln(X, Y, R); if K > 0 then begin MinDistance := Distance(mushroom[1].X, mushroom[1].Y, mushroom[2].X, mushroom[2].Y) - mushroom[1].R - mushroom[2].R; for i := 0 to K - 1 do for j := i + 1 to K do begin CurDistance := Distance(mushroom[i].X, mushroom[i].Y, mushroom[j].X, mushroom[j].Y) - mushroom[i].R - mushroom[j].R; if MinDistance > CurDistance then MinDistance := CurDistance; end; if MinDistance < 0 then MinDistance := 0; if T > MinDistance / 2 then T := MinDistance / 2; end; writeln(T: 0: 2); end.
Объяснение кода листинга программы
- В программе объявлены три переменные: K (целое число), T (число с плавающей точкой) и mushroom (структура TMushroom).
- Создается массив TMushroomList, который будет содержать до K-1 экземпляров структуры TMushroom.
- Определена функция Distance, которая вычисляет расстояние между двумя точками на плоскости (x1, y1 и x2, y2) с использованием формулы расстояния между двумя точками на плоскости.
- Объявлены две переменные: MinDistance (минимальное расстояние) и CurDistance (текущее расстояние).
- Задано начальное значение MinDistance как бесконечность и T как половина минимального расстояния.
- В цикле for i от 0 до K-1 считываются координаты X, Y и R для каждого гриба.
- Вычисляется текущее расстояние CurDistance между грибами i и j с использованием функции Distance.
- Если текущее расстояние больше минимального расстояния, обновляется значение MinDistance.
- Если текущее расстояние меньше минимального расстояния, обновляется значение T.
- После завершения цикла, если T меньше минимального расстояния, оно устанавливается равным минимальному расстоянию.
- Выводится значение T.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д