Задания
Версия для печати и копирования в MS Word
Тип Д24 C1 № 3640
i

Тре­бо­ва­лось на­пи­сать про­грам­му, ко­то­рая ре­ша­ет урав­не­ние «a |x| = b» от­но­си­тель­но х для любых чисел а и b, вве­ден­ных с кла­ви­а­ту­ры. Все числа счи­та­ют­ся дей­стви­тель­ны­ми. Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но.

 

Бей­сикPython

INPUT a, b, x

IF a = 0 THEN

IF b = 0 THEN

PRINT "любое число"

ELSE

PRINT "нет ре­ше­ний"

ENDIF

ELSE

IF b = 0 THEN

PRINT "x =0"

ELSE

PRINT "x =",b/a, "или x =",-b/a

ENDIF

ENDIF

END

a = float(input())

b = float(input())

x = float(input())

if a == 0:

    if b == 0:

        print('любое число')

    else:

        print('нет ре­ше­ний')

else:

    if b == 0:

        print('x = 0')

    else:

        print('x =', b/a, 'или x =',-b/a)

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

var a,b,x: real;

begin

readln(a,b,x);

if a = 0 then

    if b = 0 then

        write ('любое число')

    else

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

else

    if b = 0 then

        write('x = 0')

    else

        write('x =',b/a,' или x =',-b/a);

end.

алг

нач

    вещ a,b,x

    если a = 0 то

        если b = 0 то

            вывод "любое число"

        иначе вывод "нет ре­ше­ний"

        все

    иначе

        если b = 0 то

            вывод "x = 0"

        иначе

            вывод "x =", b/a, "или x =",-b/a

    все

кон

Си++

#include <iostream>

using namespace std;

int main(void)

{float a,b,x;

cin >> a >> b >> x;

if (a==0)

if (b==0)

cout << "любое число";

else

cout << "нет ре­ше­ний";

else

if (b==0)

cout << "x = 0";

else

cout << "x=" << b/a << "или x=" << -b/a << endl;

}

 

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

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

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

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

Спрятать решение

Ре­ше­ние.

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

Зна­че­ние x может быть не ука­за­но. Зна­че­ния а и b могут быть лю­бы­ми не­ну­ле­вы­ми чис­ла­ми с раз­ны­ми зна­ка­ми. Ошиб­ка про­грам­ми­ста со­сто­ит в том, что про­грам­ма ра­бо­та­ет не­пра­виль­но при любых не­ну­ле­вых а и Ь, име­ю­щих раз­ные знаки.

 

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

не нужно вво­дить х с кла­ви­а­ту­ры; верно: readln(a, Ь).

 

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

readln(а, b); if а = 0 then

if b = 0 then write('любое число')

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

else

if b/а > 0 then

write('х =', Ь/а, ' или х =', -Ь/а)

else

if b = 0 then

write('х =0')

else

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

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

Спрятать критерии
Критерии проверки:

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Пра­виль­но вы­пол­не­ны три пунк­та за­да­ния. при­ве­де­ны при­ме­ры чисел для ко­то­рых про­грам­ма ра­бо­та­ет не­кор­рект­но. Верно при­ве­де­на лиш­няя часть. При­ве­де­на вер­ная до­ра­бот­ка. В ра­бо­те (во фраг­мен­тах про­грамм) до­пус­ка­ет­ся на­ли­чие от­дель­ных син­так­си­че­ских оши­бок, не ис­ка­жа­ю­щих за­мыс­ла ав­то­ра ре­ше­ния.3
Пра­виль­но вы­пол­не­ны два дей­ствия из трёх.

2
Пра­виль­но вы­пол­не­но толь­ко одно дей­ствие из трёх, то есть либо толь­ко вы­пол­нен пункт 1, либо он не вы­пол­нен или вы­пол­нен не­вер­но и при­ве­де­на лиш­няя часть про­грам­мы или воз­мож­ная до­ра­бот­ка.1
Все пунк­ты за­да­ния вы­пол­не­ны не­вер­но (ответ на пункт 1 не при­ведён или при­ведён не­вер­но, ошиб­ки не най­де­ны или най­де­ны, но не ис­прав­ле­ны, или ис­прав­ле­ны не­вер­но).0
Мак­си­маль­ный балл3