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

Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ют­ся ко­ор­ди­на­ты точки на плос­ко­сти (х, у  — дей­стви­тель­ные числа) и опре­де­ля­ет­ся при­над­леж­ность этой точки за­дан­ной за­кра­шен­ной об­ла­сти (вклю­чая гра­ни­цы). Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но.

 

Бей­сикПас­каль

INPUT х, у

IF x*x + у*у <= 49 THEN

IF x*x + у*у >= 16 THEN

PRINT "при­над­ле­жит"

ELSE

PRINT "не при­над­ле­жит"

ENDIF

END IF

END

var x, у: real;

begin

readln(x,y);

if x*x + y*y <= 49 then

if x*x + y*y >= 16 then

write('при­над­ле­жит')

else

write('не при­над­ле­жит')

end.

Си++Ал­го­рит­ми­че­ский

#include <iostream>

using namespace std;

int main (void) {

float x,y;

cin >> x >> y;

if (x*x + y*y <= 49)

if (x*x + y*y >= 16)

cout << "при­над­ле­жит";

else

cout << "не при­над­ле­жит";

}

алг

нач

вещ х,у

ввод х,у

если х*х + у*у <= 49 то

если х*х + у* у >= 16 то

вывод 'при­над­ле­жит'

иначе

вывод 'не при­над­ле­жит'

все

все

кон

Python

x = float(input())

y = float(input())

if x*x + у*у <= 49:

    if x*x + у*у >= 16:

        print("при­над­ле­жит")

    else:

        print("не при­над­ле­жит")

 

 

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.

1.   Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах, при­над­ле­жа­щих раз­лич­ным об­ла­стям (A, B, C, D). Точки, ле­жа­щие на гра­ни­цах об­ла­стей, от­дель­но не рас­смат­ри­вать. В столб­цах усло­вий ука­жи­те "да", если усло­вие вы­пол­нит­ся, "нет", если усло­вие не вы­пол­нит­ся, "—" (про­черк), если усло­вие не будет про­ве­рять­ся, "не изв.", если про­грам­ма ведет себя по-раз­но­му для раз­ных зна­че­ний, при­над­ле­жа­щих дан­ной об­ла­сти. В столб­це "Про­грам­ма вы­ве­дет" ука­жи­те, что про­грам­ма вы­ве­дет на экран. Если про­грам­ма ни­че­го не вы­во­дит, на­пи­ши­те "—" (про­черк). Если для раз­ных зна­че­ний, при­над­ле­жа­щих об­ла­сти, будут вы­ве­де­ны раз­ные тек­сты, на­пи­ши­те "не изв". В по­след­нем столб­це ука­жи­те "да" или "нет".

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

 

Об­ластьУсло­вие 1

(х*х+у*у <= 49)

Усло­вие 2

(х*х+у*у >= 16)

Про­грам­ма вы­ве­детОб­ласть

об­ра­ба­ты­ва­ет­ся верно

A
В
С
D
Спрятать решение

Ре­ше­ние.

1.Таб­ли­ца:

 

Об­ластьУсло­вие 1

(х*х+у*у <= 49)

Усло­вие 2

(х*х+у*у >= 16)

Про­грам­ма вы­ве­детОб­ласть

об­ра­ба­ты­ва­ет­ся верно

Aданетне при­над­ле­житнет
Вданетне при­над­ле­житда
Сдадапри­над­ле­житда
Dнетнет

 

 

2.  Воз­мож­ная до­ра­бот­ка (Пас­каль):

 

if (х*х+у*у >= 16) and (х*х+у*у <= 49) or (x*x+y*y <= 1) then

write('при­над­ле­жит') else

write('не при­над­ле­жит')

 

Воз­мож­ны и дру­гие спо­со­бы до­ра­бот­ки. При­мер:

 

if х*х + у*у >= 16 then if x*x + у*у <= 49 then write('при­над­ле­жит') else

write{'не при­над­ле­жит') else

if x*x + у*у <= 1

write('при­над­ле­жит')

else

write{'не при­над­ле­жит')

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

Ука­за­ния по оце­ни­ва­нию.

 

Об­ра­ти­те вни­ма­ние! В за­да­че тре­бо­ва­лось вы­пол­нить три дей­ствия: ука­зать для каж­дой об­ла­сти, как будет ра­бо­тать про­грам­ма, что она вы­ве­дет на экран и пра­виль­но ли это (в виде таб­ли­цы), и ис­пра­вить две ошиб­ки. Баллы за дан­ное за­да­ние на­чис­ля­ют­ся как сумма бал­лов за вер­ное вы­пол­не­ние каж­до­го дей­ствия.

1. Вер­ное за­пол­не­ние пред­ло­жен­ной таб­ли­цы.

2. Не­пра­виль­ное ис­поль­зо­ва­ние услов­но­го опе­ра­то­ра, в ре­зуль­та­те чего при не­вы­пол­не­нии пер­во­го усло­вия про­грам­ма не вы­да­ва­ла ни­че­го (от­сут­ству­ет ветвь ELSE). Ис­прав­ле­ни­ем этой ошиб­ки может быть либо до­бав­ле­ние ветви ELSE к каж­до­му усло­вию IF, либо объ­еди­не­ние всех усло­вий IF в одно при по­мо­щи конъ­юнк­ции.

В слож­ных слу­ча­ях это дей­ствие счи­та­ет­ся вы­пол­нен­ным, если про­грам­ма вы­да­ет одно из двух со­об­ще­ний «при­над­ле­жит» или «не при­над­ле­жит» для любых пар (x,y), при этом про­грам­ма не стала ра­бо­тать хуже, чем рань­ше, то есть для всех точек, для ко­то­рых про­грам­ма ранее вы­да­ва­ла вер­ный ответ, до­ра­бо­тан­ная про­грам­ма также долж­на вы­да­вать вер­ный ответ.

3. При­ве­ден­ных трех огра­ни­че­ний не до­ста­точ­но для опи­са­ния двух об­ла­стей (по­те­ря­но усло­вие x*x + y*y <= 1). Ис­прав­ле­ни­ем этой ошиб­ки может быть ис­поль­зо­ва­ние од­но­го усло­вия с ло­ги­че­ски­ми опе­ра­ци­я­ми конъ­юнк­ции и дизъ­юнк­ции, либо ис­поль­зо­ва­ние вло­жен­ных усло­вий с вет­вя­ми ELSE. В слож­ных слу­ча­ях это дей­ствие счи­та­ет­ся вы­пол­нен­ным, если верно опре­де­ле­ны за­кра­шен­ные об­ла­сти, то есть про­грам­ма вы­во­дит со­об­ще­ние «при­над­ле­жит» для всех точек за­кра­шен­ных об­ла­стей и толь­ко для них, для точек вне за­кра­шен­ных об­ла­стей про­грам­ма вы­во­дит «не при­над­ле­жит» или не вы­во­дит ни­че­го. В ра­бо­те (во фраг­мен­тах про­грамм) до­пус­ка­ет­ся на­ли­чие от­дель­ных син­так­си­че­ских оши­бок, не ис­ка­жа­ю­щих за­мыс­ла ав­то­ра ре­ше­ния.

 

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Пра­виль­но вы­пол­не­ны оба пунк­та за­да­ния. Ис­прав­ле­ны две ошиб­ки. Про­грам­ма для всех пар (x,y) верно опре­де­ля­ет при­над­леж­ность точки за­штри­хо­ван­ной об­ла­сти. До­пус­ка­ет­ся на­ли­чие оши­бок в одной из строк таб­ли­цы.3
1. Пра­виль­но вы­пол­не­ны два дей­ствия из трех (ис­прав­ле­ны обе ошиб­ки, но в пер­вом пунк­те за­да­ния не при­ве­де­на таб­ли­ца (либо таб­ли­ца со­дер­жит ошиб­ки в двух и более стро­ках), либо при­ве­де­на таб­ли­ца (ко­то­рая со­дер­жит ошиб­ки не более чем в одной стро­ке), но ис­прав­ле­на толь­ко одна ошиб­ка про­грам­мы). При на­пи­са­нии опе­ра­ций срав­не­ния до­пус­ка­ет­ся одно не­пра­виль­ное ис­поль­зо­ва­ние стро­гих/не­стро­гих не­ра­венств (счи­та­ет­ся не­су­ще­ствен­ной ошиб­кой, по­греш­но­стью за­пи­си). На­при­мер, вме­сто «x*x + y*y <= 1» ис­поль­зу­ет­ся «x*x + y*y< 1».

2. Или вы­пол­не­ны все три дей­ствия, но при этом в ло­ги­че­ском вы­ра­же­нии не­вер­но учте­ны при­о­ри­те­ты ло­ги­че­ских опе­ра­ций (не рас­став­ле­ны или не­пра­виль­но рас­став­ле­ны скоб­ки в вы­ра­же­ни­ях).

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

Мак­си­маль­ный балл

3