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

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

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

INPUT x, y

IF y>=-1 THEN

IF y<=x THEN

IF y<=0 THEN

IF x*x+y*y<=1 THEN

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

ELSE

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

END IF

END IF

END IF

END IF

END

var x,y: real;

begin

readln(x,y);

if y>=-1 then

if y<=x then

if y<=0 then

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

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

else

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

end.

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

#include <iostream>

using namespace std;

int main()

{

float x,y;

cin >> x >> y;

if (y>=-1)

if (y<=x)

if (y<=0)

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

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

else

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

}

алг

нач

вещ x,y

ввод x,y

если y>=-1 то

если y<=x то

если y<=0 то

если x*x+y*y<=1 то

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

иначе

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

все

все

все

все

кон

Python

x = float(input())

y = float(input())

if y>=-1:

    if y<=x:

        if y<=0:

            if x*x+y*y<=1:

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

            else:

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

 

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

 

1.  Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах, при­над­ле­жа­щих раз­лич­ным об­ла­стям (A, B, C, D, E, F, G, H, I, J, K). Точки, ле­жа­щие на гра­ни­цах об­ла­стей, от­дель­но не рас­смат­ри­вать. Ко­ор­ди­нат­ные оси не яв­ля­ют­ся гра­ни­ца­ми об­ла­стей. В столб­цах усло­вий ука­жи­те «да», если усло­вие вы­пол­нит­ся, «нет», если усло­вие не вы­пол­нит­ся, «—» (про­черк), если усло­вие не будет про­ве­рять­ся, «не изв.», если про­грам­ма ведёт себя по-раз­но­му для раз­ных зна­че­ний, при­над­ле­жа­щих дан­ной об­ла­сти. В столб­це «Про­грам­ма вы­ве­дет» ука­жи­те, что про­грам­ма вы­ве­дет на экран. Если про­грам­ма ни­че­го не вы­во­дит, на­пи­ши­те «—» (про­черк). Если для раз­ных зна­че­ний, при­над­ле­жа­щих об­ла­сти, будут вы­ве­де­ны раз­ные тек­сты, на­пи­ши­те «не изв.». В по­след­нем столб­це ука­жи­те «да» или «нет».

 

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

(y>=–1)

Усло­вие 2

(y<=x)

Усло­вие 3

(y<=0)

Усло­вие 4

(x*x+y*y<=1)

Про­грам­ма

вы­ве­дет

Об­ласть

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

верно

A
В
С
D
Е
F
G
Н
I
J
K

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

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

Ре­ше­ние.

Эле­мен­ты от­ве­та:

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

(y>=–1)

Усло­вие 2 (y<=x)Усло­вие 3

(y<=0)

Усло­вие 4 (x*x+y*y<=1)Про­грам­ма

вы­ве­дет

Об­ласть

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

верно

Aданетнет
Вдаданетнет
Сданетнет
Dдаданетнет
Еданетнет
Fданетнет
Gдадададапри­над­ле­житда
Ндададанетне при­над­ле­житда
Iнетнет
Jдададанетне при­над­ле­житнет
Kнетнет

Воз­мож­ная до­ра­бот­ка (Пас­каль, от­дель­но рас­смат­ри­ва­ем об­ла­сти, ле­жа­щие по раз­ные сто­ро­ны от пря­мой x=0):

 

if (x*x+y*y<=1) and (y<=0) and (x>=0) or (x<=0) and (y>=-1) and (y<=x) then

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

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

 

Воз­мож­ная до­ра­бот­ка (Си, от­дель­но рас­смат­ри­ва­ем об­ла­сти, ле­жа­щие по раз­ные сто­ро­ны от окруж­но­сти):

 

if((x*x+y*y<=1) && (y<=x) && (y<=0) || (x*x+y*y>=1) && (y<=x) && (y>=-1) && (x<=0))

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

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

 

Об­ра­ти­те вни­ма­ние! При раз­де­ле­нии об­ла­сти вдоль какой-либо линии точки, ко­то­рые лежат на этой линии внут­ри об­ла­сти, могут быть при­чис­ле­ны к одной части, к дру­гой или к обеим (то есть, на­при­мер, в при­ведённом ре­ше­нии на языке Пас­каль одно из усло­вий (x>=0 или x<=0) может быть стро­гим) Могут быть и дру­гие вер­ные спо­со­бы до­ра­бот­ки.

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

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

 

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

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

 

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

1
Ни один из пунк­тов за­да­ния не вы­пол­нен, то есть не вы­пол­не­ны кри­те­рии, поз­во­ля­ю­щие по­ста­вить уче­ни­ку 1 балл 0
Мак­си­маль­ный балл3
Источник: ЕГЭ по ин­фор­ма­ти­ке 08.07.2013. Вто­рая волна. Ва­ри­ант 602