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

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

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

INPUT х

IF х<=30 THEN

IF х<=20 THEN

IF х<=10 THEN

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

ELSE

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

END IF

END IF

END IF

END

var х: real;

begin

readln(х);

if х<=30 then

if x<=20 then

if x<=10 then

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

else

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

end.

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

#include <iostream>

using namespace std;

int main()

{

float x;

cin >> x;

if (x<=30) if (x<=20)

if (x<=10)

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

else

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

алг

нач

вещ х

ввод х

если х<=30 то

если х<=20 то

если х<=10 то

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

иначе

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

все

все

все

кон

Python

x = int(input())

if х <= 30:

    if x <= 20:

        if х <= 10:

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

        else:

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

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

1.  Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах, при­над­ле­жа­щих раз­лич­ным об­ла­стям (А, В, С, D и Е). Точки, ле­жа­щие на гра­ни­цах об­ла­стей (то есть, точки 10, 20, 30 и 40) при за­пол­не­нии таб­ли­цы не рас­смат­ри­ва­ют­ся.

 

Об­ластьУсло­вие 1
(x<=30)
Усло­вие 2
(x<=20)
Усло­вие 3
(x<=10)
Про­грам­ма
вы­ве­дет
Об­ласть
об­ра­ба­ты­ва­ет­ся
верно
A
B
C
D
E

 

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

 

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

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

Ре­ше­ние.

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

 

1.  

Об­ластьУсло­вие 1
(x<=30)
Усло­вие 2
(x<=20)
Усло­вие 3
(x<=10)
Про­грам­ма
вы­ве­дет
Об­ласть
об­ра­ба­ты­ва­ет­ся
верно
Aдададане при­над­ле­житДа
Bдаданетпри­над­ле­житДа
Cданет------Нет
Dнет---------Нет
Eнет---------Нет

 

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

 

if (х>=10) and (х<=20) or (х>=30) and (х<=40) then

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

else

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

 

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

На­при­мер:

 

if х>=10 then

if х<=20 then

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

else

if x>=30 then

if x<=40 then

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

else

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

else

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

else

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

 

Дру­гой при­мер:

 

if abs(abs(x-25)-10)<=5 then

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

else

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

 

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

Баллы за дан­ное за­да­ние на­чис­ля­ют­ся как сумма бал­лов за вер­ное вы­пол­не­ние каж­до­го дей­ствия.

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

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

 

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

 

3.  При­ведёных трёх огра­ни­че­ний не­до­ста­точ­но для опи­са­ния двух об­ла­стей (по­те­ря­но усло­вие х<=40). Кроме того, не­об­хо­ди­мо учесть, что об­ла­сти не со­еди­не­ны. Ис­прав­ле­ни­ем этой ошиб­ки может быть раз­би­е­ние об­ла­сти на две части и ис­поль­зо­ва­ние дизъ­юнк­ции, либо ис­поль­зо­ва­ние слож­ной (для вы­ве­де­ния) ма­те­ма­ти­че­ской кон­струк­ции (||х-25|-10|<5), либо ис­поль­зо­ва­ние слож­ной ком­би­на­ции кас­кад­ных усло­вий.

 

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

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

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Пра­виль­но вы­пол­не­ны оба пунк­та за­да­ния. Ис­прав­ле­ны две ошиб­ки. Про­грам­ма для всех чисел х верно опре­де­ля­ет при­над­леж­ность точки за­штри­хо­ван­ной об­ла­сти.

 

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

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

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

 

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

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

А разве усло­вие не долж­но вы­гля­деть вот так:((х>=10) and (х<=20)) or ((х>=30) and (х<=40))?

Сергей Никифоров

Можно по­ста­вить скоб­ки, но в дан­ном слу­чае они из­бы­точ­ны, по­сколь­ку у опе­ра­ции ло­ги­че­ско­го «И» боль­ший при­о­ри­тет, чем у опе­ра­ции ло­ги­че­ско­го «ИЛИ».