Присоединиться

11 класс·высокий уровень

Найдите в программе все ошибки (их может быть одна или несколько).Для

Условие

Для заданного положительного вещественного числа A необходимо найти максимальное целое число K, при котором выполняется неравенство 1+12+13+...+1K<A1 + \frac{1}{2} + \frac{1}{3} + ... + \frac{1}{K} < A (при K = 0 сумма считается равной 0).Для решения этой задачи ученик написал такую программу. БейсикPython
DIM A, S AS DOUBLE DIM K AS INTEGER INPUT A K = 0 S = 1 WHILE S < A K = K + 1 S = S + 1.0/K WEND PRINT K ENDa = float(input())k = 0s = 1while s < a: k = k + 1 s = s + 1.0/kprint(k)
Алгоритмический языкПаскаль
алгнач вещ a, s цел k ввод a k := 0 s := 1 нц пока s<a k := k + 1 s := s + 1.0/k кц вывод kконvar a, s: real;k: integer;begin read(a); k := 0; s := 1; while s<a do begin k := k + 1; s := s + 1.0/k; end; write(k);end.
Си++
#include <iostream>using namespace std;int main(){ double a, s; int k; cin >> a; k = 0; s = 1; while (s<a) { k = k + 1; s = s + 1.0/k; } cout « k « endl; return 0;}

Последовательно выполните следующее.1. Напишите, что выведет эта программа при вводе числа 1.8.2. Приведите пример числа, при вводе которого программа даст верный ответ.3. Найдите в программе все ошибки (их может быть одна или несколько).Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только исправлять ошибочные строки; удалять строки или добавлять новые строки нельзя. Постарайтесь также не внести новые ошибки - за это оценка снижается.

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Решение использует запись программы на Паскале. Допускается использование программы на других языках.1. При вводе числа 1.8 программа выведет число 1.2. Примеры чисел, при вводе которых программа выводит верный ответ: 0.6, 1.4.Примечание для проверяющего. Программа содержит две ошибки, одна из которых приводит к увеличению ответа, другая - к уменьшению.В некоторых случаях эти ошибки компенсируют друг друга, и ответ оказывается правильным. Это происходит, если 0 < A ≤ 1.5.3. Программа содержит две ошибки.

    1. Неверная инициализация. Начальные значения S и K должны быть одинаковы: оба равны нулю или оба равны единице. В приведённом варианте вычисленная сумма оказывается на 1 больше правильного значения. Эту ошибку можно исправить двумя способами.

    Первый способ исправления:Строка с ошибкой:s := 1;Правильная строка:s := 0;Второй способ исправления:Строка с ошибкой:k := 0;Правильная строка:k := 1;

Осталось ещё 3 шага

  1. Неверное определение ответа. Приведённая…

  2. Эту ошибку можно исправить двумя способами…

  3. Первый способ исправления работает независимо…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Исправление ошибок в программе»

Найдите в программе все ошибки (их может быть одна или несколько).Для — решение с объяснением | Lom Ai