Проверьте программу, пожалуйста. Номер 3 Вообще ничего не выводит, и ошибки не пишет...

0 голосов
15 просмотров

Проверьте программу, пожалуйста. Номер 3
Вообще ничего не выводит, и ошибки не пишет

program three;
var c,a,y,t,n:real;
begin
writeln('Введите с');
readln(c);
y:=1;
while (y<14) do begin<br> n:=sqr(y+2);
t:=(c-3)/n+t;
t:=-t;
end;
writeln(t);
end.


image

Информатика (221 баллов) | 15 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

У тебя цикл работает, пока Y меньше 14, но внутри цикла ты  Y не увеличиваешь, поэтому программа работает бесконечно и не выдаёт ответ.
Я добавил переменную i:integer (integer - чтобы работал mod(остаток от деления на число)), потому-что у нас чередуются знаки + и -. Также убрал зацикливание

program three;
var c,a,y,t,n:real;
i:integer;
begin
writeln('Введите с');
readln(c);
y:=3;
t:=0;
i:=0;
while (y<14) do begin<br>i:=i+1;
n:=sqr(y);
if i mod 2 = 1 then t:=t-((c-3)/n) 
 else t:=t+((c-3)/n);
y:=y+2;
end;
writeln(t);
end.

(126 баллов)