Указать ошибку в программе нахождения суммы - Turbo Pascal
Формулировка задачи:
Дано:
Вот мой код в паскаль. При вводе числа n выдает сообщение "не число". В чем проблема? Как ее исправить?
Можете ли объяснить на понятном языке, еще не программист, только недавно начал.
Решение задачи: «Указать ошибку в программе нахождения суммы»
textual
Листинг программы
var s, a: double; k, n: longint; begin repeat write('n > 0; n = '); readln(n) until n > 0; a := -n / 6; s := a; for k := 1 to n - 1 do begin a := (k - n - 2) / 4 / (n - k + 1) / (k + 1) / (k + 1.5) * a; s := s + a end; write('S = ', s); readln end.
Объяснение кода листинга программы
- Переменные
s
иa
объявлены как типыdouble
, но в остальной части кода они используются без преобразования типов, что может вызвать ошибки при выполнении. - В цикле
for
переменнаяa
используется без явного присваивания значения, что может привести к неопределенному поведению. - В выражении
(k - n - 2) / 4 / (n - k + 1) / (k + 1) / (k + 1.5)
возможна ошибка деления на ноль, еслиk
илиn
равны нулю. - В строке
write('S = ', s);
используется пробел после константы'S = '
, что не соответствует стандарту Turbo Pascal. - Строка
readln();
не имеет аргументов и не должна быть заключена в кавычки. - В строке
write('n > 0; n = ');
используется символ перевода строки (\n
), который не должен быть включен в строку вывода. - В строке
write('S = ', s);
используется пробел перед константой'S = '
, что не соответствует стандарту Turbo Pascal.