1 / 1 / 0 Регистрация: 12.02.2017 Сообщений: 11 |
|
1 |
|
Напишите условие, определяющее заштрихованную область12.02.2017, 20:55. Показов 33596. Ответов 1
Напишите условие, которое определяет заштрихованную область. Миниатюры
__________________
1 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
12.02.2017, 20:55 |
1 |
Puporev Почетный модератор 64273 / 47572 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
13.02.2017, 11:07 |
2 |
|||
РешениеВроде так.
3 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
13.02.2017, 11:07 |
2 |
Заштрихованная область [закрыт]
Учебные задания допустимы в качестве вопросов только при условии, что вы пытались решить их самостоятельно перед тем, как задать вопрос. Пожалуйста, отредактируйте вопрос и укажите, что именно вызвало у вас трудности при решении задачи. Например, приведите код, который вы написали, пытаясь решить задачу
Закрыт 1 год назад .
Что писать в if? Я очень долго думал, но никак не могу придумать. Нужно определить входит ли точка с координатами (x, y) в закрашенную область.
Python-сообщество
Прикреплённый файлы: 2020-10-21_124757.png (4,8 KБ)
#2 Окт. 21, 2020 19:45:17
Принадлежит ли точка с координатами (x, y) заштрихованной фигуре
Это система неравенств.
#3 Окт. 24, 2020 10:22:47
Принадлежит ли точка с координатами (x, y) заштрихованной фигуре
не решение вашей задачи но очень похожее на вашу
правда на си
но тут перделать на питон не сложно
1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например) , нажмите и вставьте ссылку на его url
…
есчщо
#4 Окт. 24, 2020 11:58:26
Принадлежит ли точка с координатами (x, y) заштрихованной фигуре
Ты бы решил бы ему задачу на питоне. Она решается очень просто.
#5 Окт. 24, 2020 17:26:11
Принадлежит ли точка с координатами (x, y) заштрихованной фигуре
меня так учат … хотя … намекните как правильно …
зы заранее спсб
1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например) , нажмите и вставьте ссылку на его url
…
есчщо
#6 Окт. 24, 2020 19:21:07
Принадлежит ли точка с координатами (x, y) заштрихованной фигуре
Онлайн
#7 Окт. 25, 2020 00:48:32
Принадлежит ли точка с координатами (x, y) заштрихованной фигуре
Это функция getchar(), которая может быть и макросом (макросы нельзя сохранять в указатели на функции и передавать, соответственно, в другие функции). А getch() — это функция Borland C++ Compiler (сокращённо bcc).
https://ru.wikipedia.org/wiki/Borland_C%2B%2B
То есть если ты код с этой функцией захочешь скомпилировать в другом компиляторе, то там может быть функция getch(), а может и не быть её. Так и ещё если она там даже есть, то она не обязана работать точно так же, как в Borland C++ Compiler, и запросто может иметь другое поведение. В каждом компиляторе может быть собственная функция getch() с собственным поведением.
Поэтому эту штуку никто не использует, даже если есть такая возможность. Стандарт языка C точно описывает поведение функции/макроса getchar(), что в итоге скомпилирует её/его одинаково любым компилятором. А функции getch() вообще нет в стандарте языка C.
Потому что это не равносильно void. Пустые скобки задействуют вариант языка C, который был до стандарта C89 — то есть старый стиль определения функции.
При этом ты часто можешь видеть в современных кодах
А почему ты видишь это, хотя это неправильно? Потому что ты видишь код не языка C, а код языка C++, в котором пустота равносильна void.
Так что если ты хочешь заниматься языком C, тебе надо сначала разделить между собой языки C и C++. Не изучать так называемый “язык C/C++”; это путь очень плохой, что видно на многочисленных глупостях, исходящих даже от профессионалов разработки (не зная разницы между языками, они часто переносят тупые правила с языка C++ на язык C, которых в языке C нет и не было никогда). А после разделения C и C++ тебе нужно разделить язык C на стандарты языка C. Есть K&R C (достандартный), есть C89 (американский стандарт языка C), есть C90 (международный стандарт языка C), есть C99 (международный стандарт языка C), есть C11 (международный стандарт языка C).
wiki. C
И изучать тебе нужно два стандарта — C89 и C99.
Это всё изучать нужно, если ты собрался работать с существующим кодом в мире. Тот же интерпретатор питона сделан на C89. А новые программы на C пишутся на C99.
Напишите условие которое определяет заштрихованную область нужен и «А» вариант и «В» ПРОГРАММА НУЖНА НА Python Помагите
На мото все видно, помогите пожалуйста .
Не уточняется, включена ли граница или нет. Вот условия без границы.
Если граница включена, замените ‘>’ на ‘>=’, ‘<‘ на ‘<=’.
Функция sin и константа pi взяты из math [from math import sin, pi]
В
Скачать материал
Скачать материал
- Сейчас обучается 81 человек из 30 регионов
- Курс добавлен 19.01.2023
Описание презентации по отдельным слайдам:
-
1 слайд
Решение задач на попадание точки в заданную область
-
2 слайд
Примеры задач
№1. Написать программу, которая определяет, попала ли точка с заданными координатами (вводятся пользователем) в заштрихованную область. Попадание на границу считаем попаданием в область.
Нужная область – пересечение двух областей: единичной окружности и прямой 𝑦=−𝑥+1. -
3 слайд
Примеры задач
Для проверки попадания точки в заданную область нужно проверить условия:
1. Точка лежит внутри единичной окружности:
𝑥 2 + 𝑦 2 ≤1.
2. Точка лежит на прямой или выше нее:
𝑦≥−𝑥+1 (т.е. ординаты точек из заштрихованной области больше, чем ординаты точек, лежащих на прямой)
Точка принадлежит нужной области, если эти условия выполняются одновременно (пересечение областей на рисунках ниже). Т.е. условия должны быть объединены конъюнкцией (логическая операция «И»). -
4 слайд
Примеры задач
Составим блок-схему к этой задаче:Начало
Ввод х, у
Да
Точка попадает в область
Точка не попадает в область
Да
Нет
Нет
Конец
𝑥 2 + 𝑦 2 ≤1?
𝑦≥−𝑥+1? -
5 слайд
Примеры задач
Запишем теперь программу.
1 способ – использование составного условияvar x, y: real;
begin
readln(x,y);
if (y>=-x+1)and(sqr(x)+sqr(y)<=1) then writeln(‘Точка попадает в область)
else
writeln(‘Точка не попадает в область’);
end. -
6 слайд
Примеры задач
2 способ – использование вложенных конструкций if-else
var x, y: real;
begin
readln(x,y);
if sqr(x)+sqr(y)<=1 then
if y>=-x+1 then
writeln(‘Точка попадает в область’)
else
writeln(‘Точка не попадает в область’);
end.
Какая ошибка допущена в программе? Подберите примеры координат точек, при которых программа будет работать неверно. Как исправить программу? -
7 слайд
Примеры задач
№2. Написать программу, которая определяет, попала ли точка с заданными координатами (вводятся пользователем) в заштрихованную область. Попадание на границу считаем попаданием в область. -
8 слайд
Примеры задач
Данную область можно представить как объединение двух областей A и B. Составим условия.
Точка попадает в область А, если выполняются условия:
Точка лежит выше прямой: 𝑦≥𝑥 (ординаты точек из области А больше, чем ординаты точек на прямой)
Точка лежит ниже параболы: 𝑦≤2− 𝑥 2 (ординаты точек из области А меньше, чем ординаты точек параболы)
Эти два условия должны выполняться одновременно, т.е. соединены оператором «И»
Точка попадает в область В, если выполняются условия:
Точка лежит ниже параболы: 𝑦≤2− 𝑥 2
Точка лежит выше прямой 𝑦=0: 𝑦≥0
Точка лежит ниже прямой 𝑦=𝑥 : 𝑦≤𝑥 (ординаты точек из области В меньше, чем ординаты точек на прямой)
Эти три условия также должны быть соединены конъюнкцией.
Так как исходная область представлена объединением областей А и В, то условия для А и В между собой должны быть соединены дизъюнкцией (оператор «ИЛИ»).
Запишем условие на Паскале:
(y>=x)and(y<=2-sqr(x))or(y<=2-sqr(x))and(y>=0)and(y<=x)
Допишите программу самостоятельно. -
9 слайд
Упражнения
№1. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у – действительные числа) и определяет принадлежность точки заштрихованной области. Программист торопился и написал программу неправильно.
var x, y:real;
begin
readln(x,y);
if x*x+y*y>4 then
if y>=-2 then
if y<=x then
write(‘Принадлежит’)
else
write(‘Не принадлежит’)
end.
Последовательно выполните следующее:
Приведите пример таких чисел х и у, при которых программа работает неправильно.
Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. -
10 слайд
Упражнения
№2. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у – действительные числа) и определяет принадлежность точки заштрихованной области. Программист торопился и написал программу неправильно.
var x,y:real;
begin
readln(x,y);
if y<=x then
if y<=-x then
if y>=x*x-2 then
write(‘Принадлежит’)
else
write(‘Не принадлежит’);
end.
В областях A, B, C, E1, E2, F не включаются границы закрашенной области D. Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих разным областям (A,B,C,D,E,F) -
11 слайд
Упражнения
№2. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у – действительные числа) и определяет принадлежность точки заштрихованной области. Программист торопился и написал программу неправильно.
var x,y:real;
begin
readln(x,y);
if y<=x then
if y<=-x then
if y>=x*x-2 then
write(‘Принадлежит’)
else
write(‘Не принадлежит’);
end.
В областях A, B, C, E1, E2, F не включаются границы закрашенной области D.
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. -
12 слайд
Домашнее задание
1.https://informatics.mccme.ru/mod/statements/view3.php?chapterid=112169#1
2.https://informatics.mccme.ru/mod/statements/view3.php?chapterid=112172#1
3.https://informatics.mccme.ru/mod/statements/view3.php?id=16730&chapterid=112171#1 -
13 слайд
Использованные источники
1. Информатика: пособие для подготовки к ЕГЭ/ Е. Т. Вовк [и др.]; под ред. Е. Т. Вовк. – М.: БИНОМ. Лаборатория знаний, 2013. – 322 с.
Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:
6 144 786 материалов в базе
-
Выберите категорию:
- Выберите учебник и тему
- Выберите класс:
-
Тип материала:
-
Все материалы
-
Статьи
-
Научные работы
-
Видеоуроки
-
Презентации
-
Конспекты
-
Тесты
-
Рабочие программы
-
Другие методич. материалы
-
Найти материалы
Другие материалы
Вам будут интересны эти курсы:
-
Курс повышения квалификации «Внедрение системы компьютерной математики в процесс обучения математике в старших классах в рамках реализации ФГОС»
-
Курс повышения квалификации «Организация работы по формированию медиаграмотности и повышению уровня информационных компетенций всех участников образовательного процесса»
-
Курс повышения квалификации «Облачные технологии в образовании»
-
Курс повышения квалификации «Сетевые и дистанционные (электронные) формы обучения в условиях реализации ФГОС по ТОП-50»
-
Курс повышения квалификации «Использование компьютерных технологий в процессе обучения в условиях реализации ФГОС»
-
Курс повышения квалификации «Специфика преподавания информатики в начальных классах с учетом ФГОС НОО»
-
Курс повышения квалификации «Применение MS Word, Excel в финансовых расчетах»
-
Курс профессиональной переподготовки «Математика и информатика: теория и методика преподавания в образовательной организации»
-
Курс повышения квалификации «Современные тенденции цифровизации образования»
-
Курс повышения квалификации «Современные языки программирования интегрированной оболочки Microsoft Visual Studio C# NET., C++. NET, VB.NET. с использованием структурного и объектно-ориентированного методов разработки корпоративных систем»
-
Курс повышения квалификации «Применение интерактивных образовательных платформ на примере платформы Moodle»
Пройти тестирование по этим заданиям
Вернуться к каталогу заданий
Версия для печати и копирования в MS Word
1
Задания Д24 C1 № 2801
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y — действительные числа) и определяет принадлежность точки заштрихованной области, включая её границы. Программист торопился и написал программу неправильно.
Паскаль | Бейсик |
---|---|
var x,y: real; begin readln(x,y); if x*x+y*y>=4 then if x>= –2 then if y<= –x then write(‘принадлежит’) else write(‘не принадлежит’) end. |
INPUT x, y IF x*x+y*y>=4 THEN IF x>= –2 THEN IF y<= –x THEN PRINT «принадлежит» ELSE PRINT «не принадлежит» ENDIF ENDIF ENDIF END |
Си++ | Алгоритмический |
int main() { float x,y; cin >> x >> y; if (x*x+y*y>=4) if (x>= –2) if (y<= –x) cout << «принадлежит»; else cout << «не принадлежит»; } |
алг нач вещ x,y ввод x,y если x*x+y*y>=4 то если x>= –2 то если y<= –x то вывод ‘принадлежит’ иначе вывод ‘не принадлежит’ все все все кон |
Python | |
x = float(input()) y = float(input()) if x*x+y*y >= 4: if x >= −2: if у <= -x: print(«принадлежит») else: print(«не принадлежит») |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1
(x*x+y*y>=4) |
Условие 2
(x>= –2) |
Условие 3
(y<= –x) |
Программа выведет | Область обрабатывается верно |
A | |||||
В | |||||
С | |||||
D | |||||
Е | |||||
F | |||||
G | |||||
Н |
2
Задания Д24 C1 № 3597
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области. Программист торопился и написал программу неправильно.
Паскаль | Бейсик |
---|---|
var х,у: real; begin readln(x,y); if x*x+y*y >= 4 then if у >= −2 then if у <= x then write(‘принадлежит’) else write(‘не принадлежит’) end. |
INPUT x, у IF x*x+y*y >= 4 THEN IF у >= −2 THEN IF у <= x THEN PRINT «принадлежит» ELSE PRINT «не принадлежит» ENDIF ENDIF ENDIF END |
Си++ | Алгоритмический язык |
int main(void) { float x, у; cin >> x >> y ; if (x*x+y*y >= 4) if (у >= −2) if (у <= x) cout << «принадлежит»; else cout << «не принадлежит»; } |
алг нач вещ х, у ввод х, у если x*x+y*y >= 4 то если у >= −2 то если у <= x то вывод 1 принадлежит’ иначе вывод 1 не принадлежит’ все все все кон |
Python | |
x = float(input()) y = float(input()) if x*x+y*y >= 4: if у >= −2: if у <= x: print(«принадлежит») else: print(«не принадлежит») |
Последовательно выполните следующее:
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1
(x*x+y*y >= 4) |
Условие 2
(у >= −2) |
Условие 3
(у <= x) |
Программа выведет | Область обрабатывается верно |
A | |||||
В | |||||
С | |||||
D | |||||
Е | |||||
F | |||||
G | |||||
Н |
3
Задания Д24 C1 № 3629
Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (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 |
4
Задания Д24 C1 № 3787
Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (х, у — действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
---|---|
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 |
5
Задания Д24 C1 № 3788
Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (х, у — действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
---|---|
INPUT х, у IF х*х + у*у >=1 THEN IF x*x + у*у >= 49 THEN PRINT «принадлежит» ELSE PRINT «не принадлежит» ENDIF END IF END |
var x, у: real; begin readln(x,y); if x*x + y*y >= 1 then if x*x + y*y >= 49 then write(‘принадлежит’) else write(‘не принадлежит’) end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; int main (void) { float x,y; cin >> x >> y; if (x*x + y*y >= 1 ) if (x*x + y*y >= 49) cout << «принадлежит»; else cout << «не принадлежит»; } |
алг нач вещ х,у ввод х,у если х*х + у*у >= 1 то если х*х + у* у >= 49 то вывод ‘принадлежит’ иначе вывод ‘не принадлежит’ все все кон |
Python | |
x = float(input()) y = float(input()) if x*x + y*y >= 1 : if x*x + y*y >= 49: print(«принадлежит») else: print(«не принадлежит») |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1
(х*х+у*у >= 1) |
Условие 2
(х*х+у*у >= 49) |
Программа выведет | Область
обрабатывается верно |
---|---|---|---|---|
A | ||||
В | ||||
С | ||||
D |
Пройти тестирование по этим заданиям
Пусть необходимо определить попадает ли заданная точка с координатами (x,y) в заданную область:
В данном случае, очевидно, что точка (x,y) попадает на линию графика, если у=x. Точка попадает в закрашенную область, лежит выше линии графика, если y>x. Наконец, точка (x, y) лежит ниже линии графика, если yif y>x then writeln(‘Да, попадает’) else writeln(‘Нет’);
Аналогично, точка (x, y) попадает в закрашенную область,
если y>x2.
if y>x*x then writeln('Да, попадает') else writeln('Нет');
Рассмотрим попадание точки в круг. Уравнение окружности: x2+y2=r2, в представленном на рисунке случае r=1.
Точка (x, y) лежит на линии окружности, если расстояние до нее
$$l=sqrt{x^2+y^2}$$
, если l=r. Если l>r, то точка лежит вне окружности. Если l
readln(x,y);
l:=sqrt(x*x+y*y);
if l<1 then writeln(‘Да, попадает’)
else writeln(‘Нет’);
Для закрашенной области программный код имеет вид:
readln(x,y); l:=sqrt(x*x+y*y); if (l<1) and (y>x*x) then writeln('Да, попадает') else writeln('Нет');
Использование связок and, or весьма эффективно:
readln(x,y); l:=sqrt(x*x+y*y); if (l<1) and ((x>0) and (y>Sin(x)) or (x<0) and (y<Sin(x))) then writeln('Да, попадает') else writeln('Нет');
В демоверсии ЕГЭ 2010 была следующая графическая задача:
Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (x, y — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу
программа на паскале:
var x,y:real; begin readln(x,y); if x*x+y*y >= 4 then if x > -2 then if y < -x then write('принадлежит') else write('не принадлежит') end.
программа на бэйсике
INPUT X,Y IF X*X=Y*Y>=4 THEN IF X>=-2 THEN IF Y<=-X THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END
программа на Си
void main(void) { float x,y; scanf("%f%f",&x,&y); if (x*x+y*y>=4) if (x>-2) if (y<=-x) printf ("принадлежит"); else printf("не принадлежит"); }
Последовательно выполните следующее:
1. Приведите пример таких чисел x,y, при которых программа неверно решает поставленную задачу.
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими си достаточно указать любой способ доработки исходной программ:
В соответствии с приведенными программами нарисуем блок-схему алгоритма
из которой сразу видно, где программист сделал ошибку. Конструкция Else всегда отностится к ближайшему If. При X*X+Y*Y<4 программа НИЧЕГО НЕ ВЫВОДИТ. Это соответствует, например, точке X=1, Y=1. Из условия задачи достаточно указать ОДНУ точку.
Доработка программы:
var x,y:real; begin readln(x,y); if (x*x+y*y>=4) and(x>=-2) and (y<-x) then write('принадлежит') else write('не принадлежит') end.
Однако, эта доработка также не верна! Она не учитывает тот факт, что Y≥0. Приведенная программа будет считать лишние точки принадлежащими закрашенной области.
Правильная доработка программы:
var x,y:real; begin readln(x,y); if (x*x+y*y>=4) and(x>=-2) and (y<-x) and (y>=0) then write('принадлежит') else write('не принадлежит') end.
«A»: Напишите условие, которое определяет заштрихованную область.
«B»: Напишите условие, которое определяет заштрихованную область.
«C»: Напишите условие, которое определяет заштрихованную область.
определяет принадлежность точки заштрихованной области
определяет принадлежность точки заштрихованной области
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы.
Программист торопился и написал программу неправильно. Вот она:
var x, y: real; begin readln(x, y); if y <= 3—x*x then if y >= 0 then if y >= x+1 then write(‘принадлежит’) else write(‘не принадлежит’); end. |
#include <stdio.h> int main(void) { float x, y; scanf(″%f %f″, &x, &y); if (y <= 3—x*x) if (y >= 0) if (y >= x+1) printf(″принадлежит″); else printf(″не принадлежит″); } |
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G, H). Точки, лежащие на границах областей, отдельно не рассматривать.
Область | y <= 3-x*x | y >= 0 | y >= x+1 | вывод | верно? |
A | |||||
B | |||||
C | |||||
D | |||||
E | |||||
F | |||||
G | |||||
H | |||||
J | |||||
K |
В столбцах условий укажите «да», если условие выполнится, «нет» если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).