Проверить попадает ли точка в заданную область

199
23 февраля 2018, 18:22

Есть 2 действительных числа, x и y, которые вводятся с клавиатуры. Нужно проверить попадет ли точка в заданную область, область это рисунок. Если да, то выполняется одно уравнение, если нет, то другое. Нужно помочь с проверкой на то попадает точка или нет, немного не знаю как это сделать

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    void main()
    {
    setlocale(LC_ALL, "Russian");
    float x, y, p;  char n;
m1: cout << "Ввкдите кординаты точек:";
    cout << "\n\t x=";  cin >> x;
    cout << "\t y=";    cin >> y;
    if (y >= 0 && x >= 0 && x*x + y * y <= 1 || y >= 0 && x <= 0 && x*x + y * y <= -1)
        p = sin(x);
    else p = x+2*y;
    cout << "\t p=" << p;
    cout << "\nПродолжить?: Y/N -> ";   cin >> n;
    if (n == 'Y') goto m1;
    else cout << "Конец\n";
    system("PAUSE");
}

]1

Answer 1

Ну давайте подумаем... Ломаная линия - это график y = |x|, так что чтоб точка была выше - надо, чтоб выполнялось условие y > |x|. А чтоб было в заштрихованной области - нужно выполнение y*y + x*x < 1 (пересечение круга и угла).

Вместе -

if (y > abs(x) && x*x+y*y < 1) ...

Примерно так.

Можно, чтоб не использовать функцию abs, записать неравенство как y*y > x*x && y > 0.

Знаки могут быть <= и >= - в зависимости от того, должны ли граничные точки учитываться как часть фигуры.

Answer 2
private static void Main(string[] args)
{
    double x = GetCoord("x"), y = GetCoord("y");
    Console.WriteLine(y >= x && x >= -1 && y <= 1 ? "Попадает" : "Не попадает");
    Console.ReadKey();
}
static double GetCoord(string name = null)
{
    Console.Write("Введите координату {0}: ", name ?? "\b");
    var input = Console.ReadLine();
    try
    {
        return double.Parse(input, CultureInfo.InvariantCulture);
    }
    catch 
    {
        Console.WriteLine("Неверный ввод!");
        return GetCoord(name);
    }
}

http://www.cyberforum.ru/csharp-beginners/thread976436.html

READ ALSO
Правый клик на неактивную вкладку

Правый клик на неактивную вкладку

Почему для табов, которые активны (2 и 3), пкм срабатывает, а для 4, который неактивен - не срабатывает? Надо mouseevent'ы включить для него?

237
QString как сравнить с LineEdit

QString как сравнить с LineEdit

Как сравнить написано в LineEdit с каким-нибудь QString и вывести true/false

220
Java Random генерация случайных слов

Java Random генерация случайных слов

Добрый день! Занимаюсь по книге Эккеля и столкнулся с ниже представленным примеромНе могу понять, почему на выводе программа всегда выдает...

172