в цикле
while i <= a do b:= b+1/i;
у тебя никак не меняются ни i ни a, поэтому получается бесконечный цикл из которого программа никогда не выйдет.
Сначала сделал с рекурсивной функции, но затруднение было только с суммой элементов, по этому написал через цикл как впрочем и должно быть.
Console.WriteLine("Введите число");
int x = Convert.ToInt32(Console.ReadLine());
int y = x;
int sum = 0;
for (int i = 0; i < 4; i++)
{
y = x % 10;
x = x / 10;
Console.Write(y);
sum = sum + y;
}
Console.Write(" = " + sum);
Console.ReadLine();
Объяснение:
1)выливаем из 8-литрового в 3-хлитровую
2).Эту 3-хлитровую выливаем в 5-тилитровый сосуд
3))выливаем из 8-литрового в 3-хлитровую
4).Эту 3-хлитровую выливаем в 5-тилитровый сосуд, до того, пока он становится полным.
5).Этот 5-тилиртовый сосуд (молоко) выливаем полностью в 8-илитровую
6).1 литр молока, который находится в 3-хлитровом сосуде, выливаем в 5-илитровый.
7)выливаем из 8-литрового в 3-хлитровую
8)это молоко из 3-хлитрого выливаем в 5-тилитровый. Там стал 4 литра молока!
В 8-милитровом сосуде также 4 литра молока.
var
a, i: integer;
b: real;
begin
writeln('Введите значение a: ');
readln(a);
b := 0;
i := 1;
while i <= a do
begin
b := b + 1 / i;
inc(i);
end;
writeln('b= ', b);
end.