Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2013, 16:52   #11
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Цитата:
легко.
(-1,-3) (3,-3) (3, 1)
я может конечно чего-то не понимаю, но мне кажется что это прямоугольный треугольник.
А вот предидущее да, согласен.тест y=kx+b(прямая) будет провален.
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 09.10.2013 в 16:56.
SaLoKiN вне форума Ответить с цитированием
Старый 09.10.2013, 16:56   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
я может конечно чего-то не понимаю, но мне кажется что это прямоугольный треугольник.
да. и что. какое это имеет отношение к задаче:
Лежит ли начало координат внутри треугольника с вершинами в заданных точках ?!
Ваша программа сообщает, что начало координат ЛЕЖИТ внутри треугольника (я же правильно интерпретирую ответ true). Это не так.

смысл в программе, которая что-то делает, но не всегда правильно?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.10.2013, 17:06   #13
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Аааа... =) просто вы так быстро переключаетесь от одних условий к другим что я запутался =)

Я и не претендую на лучшее решение поставленной задачи.
Не буду отрицать, упустил пару моментов. Но для этого и существует данный форум и люди,которые всегда готовы указать на твои ошибки и помогут их исправить!
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 09.10.2013, 17:32   #14
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Погуглил и нашел аж 5 способов - один краше другого
http://cyber-code.ru/tochka_v_treugolnike
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.10.2013, 19:55   #15
oceanbreak
Новичок
Джуниор
 
Аватар для oceanbreak
 
Регистрация: 09.10.2013
Сообщений: 1
По умолчанию

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

Код рабочий, но написан только для треугольника, знаний сишника пока не хватает, чтобы написать для n углов. Щас массивы почетче разберу и переделаю)

Код:
#include <iostream>
#include <math.h>

using namespace std;

// Function that takes (x,y) coordinates and defines angle of vector from (0,0) to (x,y)
float transformToPolar(float x, float y);



int main()
{
    //Input triangle tops coordinates
    float x1, x2, x3, y1, y2, y3;
    cout << "Enter x1: ";
    cin >> x1;
    cout << "Enter y1: ";
    cin >> y1;
    cout << "Enter x2: ";
    cin >> x2;
    cout << "Enter y2: ";
    cin >> y2;
    cout << "Enter x3: ";
    cin >> x3;
    cout << "Enter y3: ";
    cin >> y3;

    // Check for 0,0 vertex was inputed
    if ( (x1==0 && y1 ==0) || (x2==0 && y2 ==0) || (x3==0 && y3 ==0) )
    {
        cout << "0,0 point is inside the triangle";
        return 0;
    }


    float angles[3];    // array containing angles of triangle vertexies
    angles[0] = transformToPolar(x1, y1);
    angles[1] = transformToPolar(x2, y2);
    angles[2] = transformToPolar(x3, y3);


    // Sorting the array of angles from max to min
    float key = 0;       // variable that stores temp. value of array
    for(int j = 2; j>=0; j--)
    {
        key = angles[j];
        int k = j+1;
        while( k<3 && angles[k]>key )
        {
            angles[k-1] = angles[k];
            k++;
        }
        angles[k-1]=key;
    }


    // Calculate differences of angles
    float angleDiffs[3];
    angleDiffs[0] = angles[0]-angles[1];
    angleDiffs[1] = angles[1]-angles[2];
    angleDiffs[2] = 360.0 + angles[2]-angles[0];  // Add 360 to consider that angle should be > 0


    // Check if 0,0 point is in triangle
    bool isInaTriangle = true;
    for (int i=0; i<3; i++)
    {
        if ( angleDiffs[i]>180 )
            isInaTriangle = false;
    }


    if (isInaTriangle)
        cout << "0,0 point is inside the triangle";
    else
        cout << "0,0 point is not inside the triangle";


    return 0;
}


float transformToPolar(float x, float y)
{
    // Calculating arctanget y/x to define angle phi (in radians)
    float phi;
    if ( x>0 && y>=0 )
        phi = atan(y/x);
    if ( x>0 && y<0 )
        phi = atan(y/x) + 2*M_PI;
    if ( x<0 )
        phi = atan(y/x) + M_PI;
    if ( x==0 && y>0 )
        phi = M_PI/2;
    if ( x==0 && y<0 )
        phi = 3*M_PI/2;

    // Converting phi to degrees
    return (180/M_PI)*phi;
}
/* Давайте жить дружно */
oceanbreak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны действительные положительные числа a, b, c, d. Определить, можно ли прямоугольник со сторонами a, b уместить внутри прямоуг Proskurina Помощь студентам 1 27.03.2013 21:03
написать программу на turbo вычислить min если даны числа.задание внутри Di@nk@ Паскаль, Turbo Pascal, PascalABC.NET 0 07.02.2012 15:51
Даны действительные числа a1,...,a20. Получить числа b1,...,b20, ... Alfa.Shadow Паскаль, Turbo Pascal, PascalABC.NET 2 21.12.2011 15:55
VBA. Excel. определить сколько треугольников лежит внутри окружности радиуса R с центром вначале координат. Dus master Помощь студентам 6 20.06.2011 01:48
лежит ли точка внутри треугольника х-prof Помощь студентам 1 16.06.2011 20:16