
Проблема с программой, помогите решить. Не выводит результат var a,i: integer; b:real; begin
writeln('Введите значение a: '); readln (a); b:=0; i:=1; while i<= a do b:= b+1/i; writeln('b= ', b); end.

Ответы на вопрос

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.



в цикле
while i <= a do b:= b+1/i;
у тебя никак не меняются ни i ни a, поэтому получается бесконечный цикл из которого программа никогда не выйдет.



Проблема с вашей программой заключается в том, что цикл while
не имеет тела, так как отсутствуют операторы между операторами while
и writeln
. Это означает, что программа не будет выполняться корректно, так как она не будет выполнять никаких вычислений.
Чтобы исправить эту проблему, вам нужно добавить оператор begin
после строки while i<=a do
, а затем добавить все операторы, которые вы хотите выполнить в теле цикла, внутри этого блока. Например, вы можете добавить оператор writeln('i= ', i);
и инкрементировать значение i
, чтобы цикл завершался:
lessvar
a, i: integer;
b: real;
begin
writeln('Введите значение a: ');
readln(a);
b := 0;
i := 1;
while i <= a do
begin
b := b + 1 / i;
writeln('i= ', i);
i := i + 1;
end;
writeln('b= ', b);
end.
Теперь программа должна работать корректно и выводить значения b
и i
.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili