СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости


Задания
Версия для печати и копирования в MS Word
Задание 24 № 3637

Требовалось написать программу, которая решает неравенство «(ах) / (х + b) > 0» относительно х для любого ненулевого числа а и любого неотрицательного числа b и , введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.

 

 

БейсикPython

INPUT а, b, х

IF b = 0 THEN

PRINT "х > 0 или х <0"

ELSE

IF а>0 THEN

PRINT "х >0 или х<",-b

ELSE

PRINT -b,"<х<0"

ENDIF

ENDIF

END

a = int(input())

b = int(input())

x = int(input())

if b == 0:

    print("x > 0 или x < 0")

else:

    if a > 0:

        print('x > 0 или x <',-b)

    else:

        print(-b,'< x <0 ')

ПаскальАлгоритмический язык

var a,b,x: real;

begin

readln(a,b,x);

if b = 0 then

write('x > 0 или x < 0')

else

if a > 0 then

write('x > 0 или x <',-b)

else

write(-b,'< x <0 ' ) ;

end.

алг

нач

    вещ a,b,x

    если b = 0 то

        вывод "x > 0 или x < 0"

    иначе

    если a > 0 то

        вывод "x > 0 или x <",-b

    иначе вывод -b,"< x <0"

    все

    все

кон

Си++

#include <iostream>

using namespace std;

int main(void)

{ float a,b,x;

cin >> a >> b >> x ;

if (b==0)

cout << "x>0 или x<0" << endl;

else

if (a > 0)

cout << "x > 0 или x <" << -b << endl;

else

cout << -b << "< x <0" << endl;

}

 

 

Последовательно выполните три задания:

1) Приведите пример таких чисел a, b, x, при которых программа неверно решает поставленную задачу.

2) Укажите, какая часть программы является лишней.

3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).

Решение.

1) а = −1, b = 0, x = 0.

Значение х может быть не указано. Значение a может быть любым отрицательным числом. Также допустим ответ, что программа работает неправильно при любых отрицательных а и b = 0).

 

2) Лишняя часть:

не нужно вводить х с клавиатуры; верно: readln(a, b). Также не нужно задавать переменную x при описании переменных; верно var a,b:real.

 

3) Возможная доработка:

readln(a, b);

if b = 0 then

if а > 0 then

write('х > 0 или х < 0')

else

write('нет решений')

else

if а > 0 then

write('х > 0 или х <', −b)

else

write(−b, '< х < 0 ' );

(могут быть и другие способы доработки).