Не особо знаю паскаль, так что дабы не накосячить с синтаксисом, покажу на примере. Тут всё просто - тебе лишь нужен цикл For и расчет процентов.
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, чтобы было нагляднее.
Function SolveX(a,b,c:real; var x1,x2:real):integer; { Возвращает: -1 - нет вещественных корней 0 - один корень х1 1 - два корня х1,х2 } var D:real; begin D:=b*b-4*a*c; if D<0 then SolveX:=-1 else if D=0 then begin x1:=(1+b*c0)/(2*c); if x1=b then SolveX:=-1 else SolveX:=0 end else begin D:=sqrt(D); x1:=(1+b*c-D)/(2*c); x2:=(1+b*c+D)/(2*c); if x1=b then begin SolveX:=0; x1:=x2 end else if x2=b then SolveX:=0 else SolceX:=1 end end;
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, чтобы было нагляднее.
{
Возвращает:
-1 - нет вещественных корней
0 - один корень х1
1 - два корня х1,х2
}
var D:real;
begin
D:=b*b-4*a*c;
if D<0 then SolveX:=-1
else
if D=0 then begin
x1:=(1+b*c0)/(2*c);
if x1=b then SolveX:=-1 else SolveX:=0
end
else begin
D:=sqrt(D);
x1:=(1+b*c-D)/(2*c);
x2:=(1+b*c+D)/(2*c);
if x1=b then begin SolveX:=0; x1:=x2 end
else
if x2=b then SolveX:=0
else SolceX:=1
end
end;