Указать ошибку в программе нахождения суммы - 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.

Объяснение кода листинга программы

  1. Переменные s и a объявлены как типы double, но в остальной части кода они используются без преобразования типов, что может вызвать ошибки при выполнении.
  2. В цикле for переменная a используется без явного присваивания значения, что может привести к неопределенному поведению.
  3. В выражении (k - n - 2) / 4 / (n - k + 1) / (k + 1) / (k + 1.5) возможна ошибка деления на ноль, если k или n равны нулю.
  4. В строке write('S = ', s); используется пробел после константы 'S = ', что не соответствует стандарту Turbo Pascal.
  5. Строка readln(); не имеет аргументов и не должна быть заключена в кавычки.
  6. В строке write('n > 0;  n = '); используется символ перевода строки (\n), который не должен быть включен в строку вывода.
  7. В строке write('S = ', s); используется пробел перед константой 'S = ', что не соответствует стандарту Turbo Pascal.

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы