Проверьте принадлежит ли точка данной закрашенной области

Проверьте принадлежит ли точка данной закрашенной области

Ну вот и подошли к концу новогодние каникулы, а с ними и мое обучение по C++. Как говорил, закончил его с отличием. Сегодня рассмотрим задачи с использованием функций. Часть задач будет решаться с использованием рекурсивных функций. Напомню, что эти задачи рассматривались в курсе Введение в программирование (С++) на сайте steptic.org. Сейчас немного поделюсь новостями, а потом приступим к задачам.

Немного доработал сайт

  • Сделал рубрикатор, за одно переделал состав рубрик. Добавил ссылку на рубрики на главную страницу.
  • Немного доработал лайки. Теперь зарегистрированные пользователи не смогут их накрутить. Пока оставил возможность ставить лайки незарегистрированным пользователям, но теперь без возможности накрутки. Пришлось обнулить все лайки к статьям для функционирования новой механики.
  • Сделал еще несколько небольших улучшений и поправил несколько ошибок.
  • Регистрацию так и не удалось побороть, так что лучше регистрироваться через социальные сети.

Задача №1

Напишите функцию min(a, b) , вычисляющую минимум двух чисел. Затем напишите функцию min4(a, b, c, d) , вычисляющую минимум 4 чисел с помощью функции min . Считайте четыре целых числа и выведите их минимум.
Формат входных данных
Вводятся четыре целых числа.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №2

Даны четыре действительных числа: $%x_1$%, $%y_1$%, $%x_2$%, $%y_2$%. Напишите функцию distance(x1, y1, x2, y2) , вычисляющую расстояние между точкой $%(x_1, y_1)$% и $%(x_2, y_2)$%. Считайте четыре действительных числа и выведите результат работы этой функции.
Формат входных данных
Вводятся четыре действительных числа.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №3

Даны два действительных числа $%x$% и $%y$%. Проверьте, принадлежит ли точка с координатами $%(x, y)$% заштрихованному квадрату (включая его границу). Если точка принадлежит квадрату, выведите слово YES , иначе выведите слово NO .

На рисунке сетка проведена с шагом 1.
Решение должно содержать функцию IsPointInSquare(x, y) , возвращающую true , если точка принадлежит квадрату и false , если не принадлежит. Основная программа должна считать координаты точки, вызвать функцию IsPointInSquare и в зависимости от возвращенного значения вывести на экран необходимое сообщение.
Функция IsPointInSquare не должна содержать инструкцию if .
Формат входных данных
Вводятся два действительных числа.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №4

Даны пять действительных чисел: $%x$%, $%y$%, $%x_c$%, $%y_c$%, $%r$%. Проверьте, принадлежит ли точка $%(x, y)$% кругу с центром $%(x_c, y_c)$% и радиусом $%r$%. Если точка принадлежит кругу, выведите слово YES , иначе выведите слово NO .
Решение должно содержать функцию IsPointInCircle(x, y, xc, yc, r) , возвращающую True , если точка принадлежит кругу и False , если не принадлежит.
Основная программа должна считать координаты точки, вызвать функцию IsPointInCircle и в зависимости от возвращенного значения вывести на экран необходимое сообщение.
Функция IsPointInCircle не должна содержать инструкцию if .
Формат входных данных
Вводятся пять действительных чисел.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №5

Проверьте, принадлежит ли точка данной закрашенной области:

Если точка принадлежит области (область включает границы), выведите слово YES , иначе выведите слово NO .
Решение должно содержать функцию IsPointInArea(x, y) , возвращающую True , если точка принадлежит области и False , если не принадлежит. Основная программа должна считать координаты точки, вызвать функцию IsPointInArea и в зависимости от возвращенного значения вывести на экран необходимое сообщение.
Функция IsPointInArea не должна содержать инструкцию if .
Формат входных данных
Вводятся два действительных числа.
Формат выходных данных
Выведите ответ на задачу.

Читайте также:  Мазда сх 5 отключить подушку безопасности

Решение

Задача №6

Дано действительное положительное число $%a$% и целоe число $%n$%. Вычислите $%a^n$%. Решение оформите в виде функции power(a, n) .
Формат входных данных
Вводится действительное положительное число $%a$% и целоe число $%n$%.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №7

Дано натуральное число $%n > 1$%. Выведите его наименьший делитель, отличный от 1.
Решение оформите в виде функции MinDivisor(n) . Количество операций в программе должно быть пропорционально $%sqrt$%.
Указание
Если у числа $%n$% нет делителя, меньшего $%n$% , то число $%n$% — простое и ответом будет само число $%n$%.
Формат входных данных
Вводится натуральное число.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №8

Дано натуральное число $%n > 1$%. Проверьте, является ли оно простым. Программа должна вывести слово YES , если число простое и NO , если число составное.
Решение оформите в виде функции IsPrime(n) , которая возвращает True для простых чисел и False для составных чисел. Количество операций в программе должно быть пропорционально $%sqrt$%.
Формат входных данных
Вводится натуральное число.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №9

Возводить в степень можно гораздо быстрее, чем за $%n$% умножений! Для этого нужно воспользоваться следующими рекуррентными соотношениями:
$%a^n = (a^2)^$%, при четном $%n$%,
$%a^n = a × a^$%, при нечетном $%n$%

Реализуйте алгоритм быстрого возведения в степень с помощью рекурсивной функции.
Формат входных данных
Вводятся действительное число a и целое неотрицательное число $%n$%.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №10

Дана последовательность чисел, завершающаяся числом 0. Найдите сумму всех этих чисел, не используя цикл.
Формат входных данных
Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №11

Напишите функцию fib(n) , которая по данному целому неотрицательному $%n$% возвращает $%n$%-e число Фибоначчи. В этой задаче нельзя использовать циклы — используйте рекурсию.
Первое и второе числа Фибоначчи равны 1, а каждое следующее равно сумме двух предыдущих.
Формат входных данных
Вводится целое число.
Формат выходных данных
Выведите ответ на задачу.

Решение

Задача №12

Дано число N. Определите, сколькими способами можно расставить на доске $%N×N$% $%N$% ферзей, не бьющих друг друга.
Формат входных данных
Задано единственное число $%N$%. $%(N ≤ 10)$%
Формат выходных данных
Выведите ответ на задачу.

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

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

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

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

Читайте также:  Ob3368ap уменьшить ток подсветки
Область Условие 1

(x*x+y*y >= 4)

Условие 2

(у >= −2)

Условие 3

(у = 4)

Условие 2

(у >= −2)

Условие 3

(у if (х * х + у * у >= 4) and (у >= −2) and (у

Определение принадлежности точки плоскости заштрихованной

области на графике

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

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

Выписав все неравенства, которые "ограничивают" закрашенную/заштрихованную область, и объединив их логической операцией «И» («AND»), получим условие, которое должна проверять программа. Если условие выполняется — точка принадлежит области, если не выполняется — не принадлежит.

Так, если искомую область ограничивает вертикальная прямая линия, то в общем виде уравнение этой прямой выглядит как

где а — то значение на оси х, через которое проходит данная прямая (напомним, что если эта прямая совпадает с осью у, то уравнение прямой будет "х=0").

Так как ось х направлена вправо (на что указывает "стрелка"), то все значения координаты x справа от нашей прямой будут больше числа а. А все значения координаты х слева от нашей прямой ("х=а") будут меньше а. Получаем, что если закрашенная/заштрихованная область лежит справа от прямой "х=а", то все ее точки удовлетворяют условию "х>=а", а если слева — то условию "х =a v вместо "х>а"): так как на графике все прямые и кривые нарисованы сплошной линией, то закрашенная/заштрихованная область включает свои границы. Поэтому мы и пишем "больше или равно" или "меньше или равно". Строгие неравенства (строго больше/меньше) нужно было бы использовать, если бы границы области были бы нарисованы пунктиром.

Все остальные прямые и кривые, ограничивающие область, уравнения которых сводятся к виду "у=какое-то_выражение" нужно рассматривать с позиции у-координаты (ведь это именно она стоит в левой части уравнения). Так как ось "у" направлена вверх, то все точки, которые лежат выше прямой/кривой, должны удовлетворять условию "у>=это_выражение", а все точки, лежащие ниже нее- условию "у =это_выражение", а если ниже — то условию " у 2 +y 2 =R 2 "

где R — радиус этой окружности.

Как вы, вероятно, понимаете, левая часть этого уравнения (х 2 +у 2 ) задает квадрат расстояния от начала координат до точки плоскости. Для всех точек нашей окружности это расстояние равно ее радиусу R. Именно в этом смысл уравнения окружности. Значит, для всех точек внутри окружности, включая саму окружность, это расстояние будет меньше R. Это можно выразить неравенством

А для всех точек снаружи окружности неравенство будет "x 2 +y 2 >R 2 ". Рассмотрим пример:

В данной задаче закрашенную область ограничивают три прямые линии: горизонтальная (ее уравнение "у=2"), наклонная (ее уравнение "у=х") и вертикальная (она совпадает с осью у, ее уравнение "х=0").

Относительно горизонтальной прямой закрашенная область находится снизу, поэтому знак неравенства должен быть "меньше или равно" — "у =х".

Относительно вертикальной прямой закрашенная область находится справа, поэтому знак неравенства должен быть "больше или равно" — "x>=0".

Итого получаем условие:

на Паскале и на Бейсике:

На Бейсике и Си, в данном случае, скобки можно не писать. Но лучше приучиться писать их всегда, чтобы не задумываться каждый раз, нужны они или нет.

Читайте также:  Станции горьковского направления без турникетов

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

И тогда получится, что набора ограничений, который мы написали, просто перечислив линии, ограничивающие область, может оказаться недостаточно. Рассмотрим пример:

Линий, ограничивающих закрашенную область, три: вертикальная прямая х=1,5, горизонтальная прямая у=0 и кривая у=х 2 .

Руководствуясь вышеприведенными рассуждениями, строим систему условий:

х =0 (закрашенная область лежит выше горизонтальной прямой) и у 2 (закрашенная область лежит ниже кривой).

Однако, этих условий недостаточно, чтобы ограничить закрашенную область.

Например, чтобы это понять, можно воспользоваться методом "штриховки": для каждого условия заштрихуем разными способами область плоскости, удовлетворяющую этому условию. Там, где все штриховки пересекутся (наложатся одна на другую), все условия будут выполняться.

На рисунке видно, что все три штриховки накладываются друг на друга не только на закрашенной области, но и в области, на которую указывает пунктирная стрелка. Этот эффект объясняется очень просто — правило, которое позволяет задать область плоскости, просто перечислив уравнения ограничивающих линий с соответствующим знаком, действует только в том случае, если эти линии не изменяют своего направления (т.е. функции, графиками которых они являются — возрастающие или убывающие). В случае с параболой у=х это не так — слева от начала координат функция у=х2 убывает, а справа — возрастает, в результате чего наши условия неверно ограничивают закрашенную область.

Для исправления этой ошибки нужно добавить еще одно условие. Например, "х>=0".

Таким образом, правильным ответом в данном случае будет: На Паскале и Бейсике:

(х>=0) AND (x =0) AND (y 0, х =0 и y 2 , которые должны выполниться одновременно.

Изучаем предложенную программу и замечаем, что одного условия — х>=0 — не хватает. Без него под систему условий х =0 и у 2 подпадают также точки под параболой слева от оси OY и сверху от оси ОХ. Чтобы ответить на первый вопрос задачи (и получить свой первый балл), вычислим какую-нибудь точку из этой области. Она должна быть сверху от оси ОХ (значит, у>0), слева от оси OY (значит, х 2 ). Возьмем какую-нибудь точку на оси ОХ такую, что х =0 и у 2 . Например, 0,5.

Отвечаем на первый вопрос: х=-1y=0,5

Теперь постараемся исправить программу. Основное (и очевидное), что нужно в программу добавить — проверку еще одного условия (х>0).

Однако за такое решение мы получим еще только один балл (из двух возможных).

Второй балл нам не дадут, потому что в программе "спрятана" не одна ошибка, а две — во-первых, программа не проверяет условие х х 2 и при х>1.5). В этих случаях программа просто ничего не выдает в качестве ответа (а должна выдавать "не принадлежит").

Чтобы исправить эту ошибку нужно либо добавить еще столько ELSE, сколько не хватает (в нашем, исправленном, случае — еще три).

Либо (что гораздо проще и короче) записать условие принадлежности точки области через сложное условие (через логическое И). Рекомендуемый ответ должен выглядеть так:

Ссылка на основную публикацию
Приложение pc companion остановило загрузку непроверенного файла
Версия: полная, бесплатная Ограничения: нет Язык: русский, английский, украинский Разработчик: Sony Операционка: Windows XP, 7, 8, 8.1, 10 Разрядность: x32,...
Почему не сохраняется номер телефона в контактах
Большинство владельцев современных смартфонов не дублируют контактную книгу в бумажном виде. Поэтому потеря этих данных часто наиболее страшна для пользователей,...
Почему печь булерьян пыхает дымом внутрь помещения
ОТГРУЗКА ПРОДУКЦИИ НАПРЯМУЮ С ЗАВОДА! Наша продукция Телефоны:мобильные номера:(050) 488-40-88 МТС (050) 493-03-99 (097) 452-25-95 Kyivstar (093) 977-34-90 Life производственный...
Приложению powerpoint не удается вставить видео
Достаточно часто так происходит, что базовых средств для демонстрации чего-то важного в презентации не хватает. В такой ситуации может помочь...
Adblock detector