Не особо знаю паскаль, так что дабы не накосячить с синтаксисом, покажу на примере. Тут всё просто - тебе лишь нужен цикл 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, чтобы было нагляднее.
var x,y : Array of integer;
j,i,o,e,n1,n2 :integer;
begin
writeln('Первый массив');
writeln('Сколько нулей?');
readln(o);
writeln('Сколько единиц?');
readln(e);
writeln('С какого числа начинаются единицы по размеру массива?');
readln(n1);
writeln('С какого числа начинаются нули по размеру массива?');
readln(n2);
if (n1 > n2) and (e > o) then
begin
setlength(x,(n1+e));
end
else
begin
setlength(x,(n2+o))
end;
for i:= 0 to 10 do
begin
Write('-':2);
end;
writeln();
writeln('Заполнение первого массива');
for i:= 0 to 10 do
begin
Write('-':2);
end;
Writeln();
if (n1 > n2) and (e > o) then
begin
for i:= 0 to (n1+e) do
begin
if e = 0 then
begin
end
else
begin
x[i] :=0;
end;
for j := n1 to (n1+e) do
begin
x[j] := 1;
end;
end;
end
else
begin
for i:= 0 to (n2+o) do
begin
if o = 0 then
begin
end
else
begin
x[i] :=0;
end;
for j := n1 to (n1+e) do
begin
x[j] := 1;
end;
end;
end;
if (n1 > n2) and (e > o) then
begin
for i:= 0 to (n1+e) do
begin
Write(x[i],' ');
end;
end
else
begin
for i:= 0 to (n2+o) do
begin
Write(x[i],' ');
end;
end;
writeln();
writeln('Второй массив');
writeln('Сколько нулей?');
readln(o);
writeln('Сколько единиц?');
readln(e);
writeln('С какого числа начинаются единицы по размеру массива?');
readln(n1);
writeln('С какого числа начинаются нули по размеру массива?');
readln(n2);
if (n1 > n2) and (e > o) then
begin
setlength(y,(n1+e));
end
else
begin
setlength(y,(n2+o))
end;
for i:= 0 to 10 do
begin
Write('-':2);
end;
writeln();
writeln('Заполнение второго массива');
for i:= 0 to 10 do
begin
Write('-':2);
end;
Writeln();
if (n1 > n2) and (e > o) then
begin
for i:= 0 to (n1+e) do
begin
if e = 0 then
begin
end
else
begin
y[i] :=0;
end;
for j := n1 to (n1+e) do
begin
y[j] := 1;
end;
end;
end
else
begin
for i:= 0 to (n2+o) do
begin
if o = 0 then
begin
end
else
begin
y[i] :=0;
end;
for j := n1 to (n1+e) do
begin
y[j] := 1;
end;
end;
end;
if (n1 > n2) and (e > o) then
begin
for i:= 0 to (n1+e) do
begin
Write(y[i],' ');
end;
end
else
begin
for i:= 0 to (n2+o) do
begin
Write(y[i],' ');
end;
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, чтобы было нагляднее.