АП
Алексей Плотников

Паскаль программа не завершается

Var s, n, d, i: integer;
begin
for i:=-10000 to 10000 do begin
d:=i;
s:=15;
n:=10;
while s<=2400 do begin
s:=s+d;
n:=n+5;
end;
if n=50 then writeln(i);
end;
end.

она должна выводить все i, при которых n=50, но при запуске получается просто бесконечная программа.

Н(
Настя (7) Соболева

Для решения задачи НЕ НУЖНА программа.

N = 50 -> цикл while должен выполниться ровно 8 раз -> получаем неравенства:
15 + d * 7 <= 2400
15 + d * 8 > 2400

15 + d * 7 <= 2400 -> d * 7 <= 2385 -> d <= 340
15 + d * 8 > 2400 -> d * 8 > 2385 -> d >= 299

Всё, что тебе нужно - это подсчитать кол-во чисел, оканчивающихся на 8, в диапазоне [299;340]. И таких чисел - в уме считаем - ровно 4.

И ни одной строчки кода.

Если же хочешь программой, то замени в своём коде:

for i:=-10000 to 10000 do begin
d:=i;

на:

for i := 0 to 100 do begin
d := i * 10 + 8;

Светлана Гунбина
Светлана Гунбина

Вот так:
C++Выделить код
1
exit(0);

TR
Tatiana R

А как ты считаешь, сколько раз будет выполнятьcя while, когда i и соответственно d равны нулю? 😉 Да и при прибавлении отрицательных значений к s ждать, когда оно превысит 2400, не стоит...

НК
Наташа Кушнир

А нельзя без присвоения одной переменной другой?

Похожие вопросы
Как зделать программу в паскале?
Нужна программа паскаль
Составить программу для паскаль
Простая программа в паскале
программа на паскале
Программа на паскале.
Программа на паскаль!!
Программа на паскаль
Программы на паскаль
Программа на паскале