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

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

Пас­кальБей­сик
var x,y: real; begin

readln(x,y);

if y<=x+2 then

if x<=0 then

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

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

else

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

end.

INPUT x, y

IF y<=x+2 THEN

IF x<=0 THEN

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

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

ELSE

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

ENDIF

ENDIF

ENDIF

END

Си++Ал­го­рит­ми­че­ский язык
#include <iostream>

using namespace std;

int main(){

float x,y;

cin >> x >> y;

if (y<=x+2)

if (x<=0)

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

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

else

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

}

алг

нач

вещ x,y

ввод x,y

если y<=x+2 то

если x<=0 то

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

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

иначе

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

все

все

все

кон

Python

x = float(input())

y = float(input())

if y<=x+2:

    if x<=0:

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

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

        else:

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

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

1.   Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах, при­над­ле­жа­щих раз­лич­ным об­ла­стям (A, B, C, D, E, F, G и H).

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

 

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

 

Об­ластьУсло­вие 1 (y<=2+x)Усло­вие 2 (x<=0)Усло­вие 3 (x*x+y*y<=25)Про­грам­ма вы­ве­детОб­ласть об­ра­ба­ты­ва­ет­ся

верно

A
В
С
D
Е
F
G
Н
K
Спрятать решение

Ре­ше­ние.

Об­ластьУсло­вие 1 (y<=x+2)Усло­вие 2 (x< = 0)Усло­вие 3 (x*x+y*y<=25)Про­грам­ма вы­ве­детОб­ласть об­ра­ба­ты­ва­ет­ся

верно

Aнетнет
Bнетнет
CДаДаДапри­над­ле­житнет
Dнетнет
EДаДаДапри­над­ле­житДа
FДаДанетне при­над­ле­житДа
Gнетнет
Hданетнет
KДанетнет

 

Воз­мож­ная до­ра­бот­ка (при­мер на Пас­ка­ле):

if (x*x+y*y<=25) and (x<=0) and ((y>=x+2) or (y<=0))

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

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

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

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

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Об­ра­ти­те вни­ма­ние! В за­да­че тре­бу­ет­ся вы­пол­нить три сле­ду­ю­щих дей­ствия.

1. Ука­зать для каж­дой об­ла­сти, как будет ра­бо­тать про­грам­ма - за­пол­нить таб­ли­цу.

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

усло­вию IF, либо объ­еди­не­ние всех усло­вий IF в одно при по­мо­щи конъ­юнк­ции.

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

3. Ис­пра­вить ошиб­ку в про­ве­ря­е­мых усло­ви­ях.

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

В целом, кри­те­рий оцен­ки работ такой: ко­ли­че­ство бал­лов равно ко­ли­че­ству вы­пол­нен­ных дей­ствий. Де­таль­но кри­те­рии для каж­до­го слу­чая рас­смот­ре­ны ниже.

 

 

За­да­ние вы­пол­не­но пол­но­стью:

1) Пра­виль­но за­пол­не­на вся таб­ли­ца.

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

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

3
Пра­виль­но вы­пол­не­ны два дей­ствия из трех.

При этом:

а) Дей­ствие по за­пол­не­нию таб­ли­цы за­счи­ты­ва­ет­ся, даже если ошиб­ки есть, но не более, чем в одной стро­ке.

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

На­при­мер, вме­сто «y>=-x» один раз ис­поль­зу­ет­ся «y>-x».

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

при­о­ри­те­ты опе­ра­ций), то счи­та­ет­ся, что вы­пол­не­но одно дей­ствие по ис­прав­ле­нию оши­бок из двух.

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

2
Пра­виль­но вы­пол­не­но толь­ко одно дей­ствие из трех.

При этом:

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

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

в) Если уче­ник на­пи­сал про­грам­му, ко­то­рая от­ли­ча­ет­ся от пра­виль­ной про­грам­мы толь­ко рас­ста­нов­кой ско­бок в ло­ги­че­ских вы­ра­же­ни­ях (на­при­мер, не­пра­виль­но учте­ны при­о­ри­те­ты

опе­ра­ций), то счи­та­ет­ся, что вы­пол­не­но одно дей­ствие по ис­прав­ле­нию оши­бок из двух.

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

1
Ни один из пунк­тов за­да­ния не вы­пол­нен, т.е. не вы­пол­не­ны кри­те­рии, поз­во­ля­ю­щие по­ста­вить уче­ни­ку 1 балл.0
Мак­си­маль­ный балл3
Гость 30.04.2014 21:06

Здрав­ствуй­те! А если так за­пи­сать, за­счи­та­ют за пра­виль­ный ответ?

if(x<=0) and (x*x+y*y<=25) and (no ((y<=x+2) and (y>=0)))

Константин Лавров

Да, можно, но толь­ко "and (NOT ((y<=x+2) and (y>=0)))"