Повторите научный подвиг Линнея: систематизируйте перечисленные виды растений.
1) Ель
2) Крыжовник
3) Ромашка
4) Арбуз
5) Рожь
6) Дуб
7) Репа
8) Апельсин
9) Лиственница
10) Акация
11) Помидор
12) Подорожник
13) Ячмень
14) Картофель
15) Лимон
16) Малина
17) Василёк
18) Морковь
19) Овёс
20) Персик
21) Кабачок
22) Пихта
23) Грейпфрут
24) Яблоня
25) Пшеница
26) Липа
27) Дыня
28) Мандарин
29) Груша
30) Кедр
31) Берёза
32) Тыква
33) Смородина
34) Можжевельник
35) Огурец
36) Крапива
37) Свёкла
38) Сосна
39) Одуванчик
40) Кукуруза
FOR i = 1 TO 100
percents = FIX(x * p / 100) ' здесь у нас есть переменная percents, которой присваиваются округленные функцией fix проценты (насколько я знаю, в паскале аналогичная функция называется Round)
x = x + percents 'тут всё понятно - переменной X присваивается она сама и годовые проценты по вкладу
IF x >= y THEN 'проверяем, не равен или не превысил ли наш вклад ожидаемую сумму
PRINT i 'в цикле For можно не заморачиваться с отслеживанием лет, переменная i сама подсчитает количество итераций-лет
END 'завершаем программу
END IF
NEXT i ' конец цикла
Можно ещё чисто для себя добавить в условие вывод переменной X, чтобы было нагляднее.
Point=record
x,y:real
end;
procedure GetPoint(c:char; var A:Point);
var
x,y:real;
begin
Write('Введите координаты x и y точки ',c,': ');
Read(x,y);
A.x:=x; A.y:=y
end;
function DistPoint(A,B:Point):real;
begin
DistPoint:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y))
end;
var
A,B,M:Point;
d,p,ab,ma,mb:real;
begin
GetPoint('A',A); GetPoint('B',B); GetPoint('M',M);
ab:=DistPoint(A,B); ma:=DistPoint(M,A); mb:=DistPoint(M,B);
if ma>=ab+mb then d:=mb
else
if mb>=ma+ab then d:=ma
else begin
p:=(ma+mb+ab)/2;
d:=2*sqrt(p*(p-ab)*(p-ma)*(p-mb))/ab
end;
Writeln('Минимальное расстояние составляет ',d)
end.
Тестовое решение:
Введите координаты x и y точки A: -3 -5
Введите координаты x и y точки B: 2 5
Введите координаты x и y точки M: -3 4
Минимальное расстояние составляет 4.02492235949962