Требовалось написать программу, которая решает уравнение относительно х для любого числа с, введенного с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
| Бейсик | Python |
|---|---|
INPUT с, х IF с>0 THEN PRINT "нет решений" ELSE PRINT "х=",SQR(-с) или х=",-SQR(-с) ENDIF END
| c = float(input()) x = float(input()) if c > 0: print("нет решений") else: print('х=',sqrt(-с), ' или х=',-sqrt(-с))
|
| Паскаль | Алгоритмический язык |
var с,х: real; begin readln (с,х); if с>0 then write ('нет решений') else write ('х=',sqrt(-с), ' или х=',-sqrt(-с)); end.
| алг нач вещ c,x если c > 0 то вывод 'нет решений' иначе вывод 'х=',sqrt(-с), ' или х=',-sqrt(-с) все кон |
| Си++ | |
#include <iostream> using namespace std; int main(void) { float c,x; cin >> c >> x; if (c>0) cout << "нет решений"; else cout << ""х="" << sqrt(-с) << " или х=" << -sqrt(-с)) << endl; }
| |
Последовательно выполните три задания:
1) Приведите пример таких чисел с, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее некорректной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
1) с = 0, x = 0. Значение x может быть не указано.
2) Лишняя часть: не нужно вводить х с клавиатуры; верно:
readln (с).
3) Возможная доработка:
readln(с);
if с>0 then
write('нет решений')
else
if с = 0 then
write ( 'х=0' )
else
write('х=',sqrt(-с),
' или х=',-sqrt(-с));
(могут быть и другие способы доработки).

