Понедельник, 29.04.2024, 03:45
"I-School" - школа знаний XXI века
     In doing we learn
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Форма входа
Категории раздела
Пользователь ПК [0]
WEB-дизайн [0]
Программирование [18]
Корзина
Пользователь ПК [0]
WEB-дизайн [0]
Программирование [18]
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Главная » Статьи » Информатика, программирование » Программирование

    Образуют ли 4 точки параллелограмм? C++
    //Даны четыре точки А1(x1, y1), А2(x2, y2), А3(x3, y3), А4(x4, y4).
    //Определить будут ли они вершинами параллелограмма.

    #include <iostream>
    #include <math.h>
    using namespace std;

    //длина стороны АВ
    double side(double xa, double ya, double xb, double yb)
    {return sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya));}

    //отклонение С от АВ
    double deviation(double x1, double y1, double x2, double y2, double x3, double y3)
    {
        double r=side(x1,y1,x2,y2);
        double A=(y2-y1)/r;
        double B=(x2-x1)/r;
        double C=(x1*(y2-y1)-y1*(x2-x1))/r;
        return (x3*A-y3*B-C);
    }

    int main()
    {
    setlocale(LC_ALL, "");
    double x[4],y[4];
    int i,j, yes=0;

    cout<<"Введите координаты точек\n";
    for(i=0;i<4;i++)
    {
        cout<<"x["<<i+1<<"] = ";
            cin>>x[i];
        cout<<"y["<<i+1<<"] = ";
            cin>>y[i];
    }

    //Проверка на совпадение двух точек
    for(i=0;i<3;i++)
        for(j=i+1;j<4;j++)
            if(side(x[i],y[i],x[j],y[j])==0)
                {    cout<<"Две точки совпадают\n";
                    system("pause");
                    return 0;
                }
    //Проверка на находжение трех точек на одной прямой
    double dev12_3 = deviation(x[0],y[0],x[1],y[1],x[2],y[2]);
    double dev12_4 = deviation(x[0],y[0],x[1],y[1],x[3],y[3]);
    double dev23_4 = deviation(x[1],y[1],x[2],y[2],x[3],y[3]);
    double dev13_4 = deviation(x[0],y[0],x[2],y[2],x[3],y[3]);
    if(dev12_3==0 || dev12_4==0 || dev23_4==0 || dev13_4==0)
            {    cout<<"Три точки лежат на одной прямой\n";
                system("pause");
                return 0;
            }

    cout<<"Множество точек образует четырехугольник\n";
    system("pause");

    //определяем диагональ, проходящую через А1
    //если А1А2 - диагональ, попарные стороны "А1А3/А2А4" "А2А3/А1А4"
    //если А1А3 - диагональ, попарные стороны "А1А2/А3А4" "А2А3/А1А4"
    //если А1А4 - диагональ, попарные стороны "А1А2/А3А4" "А2А4/А1А3"

    double dev13_2 = deviation(x[0],y[0],x[2],y[2],x[1],y[1]);

    if(dev12_3*dev12_4<0) //диагональ 12
        {if(side(x[0],y[0],x[2],y[2])==side(x[1],y[1],x[3],y[3]) && side(x[1],y[1],x[2],y[2])==side(x[0],y[0],x[3],y[3])) yes++;}
    else
    {
        if(dev13_2*dev13_4<0) //диагональ 13
            {if(side(x[0],y[0],x[1],y[1])==side(x[2],y[2],x[3],y[3]) && side(x[1],y[1],x[2],y[2])==side(x[0],y[0],x[3],y[3])) yes++;}
        else  //диагональ 14
            {if(side(x[0],y[0],x[1],y[1])==side(x[2],y[2],x[3],y[3]) && side(x[0],y[0],x[2],y[2])==side(x[1],y[1],x[3],y[3])) yes++;}
    }

    if(yes)
        cout<<"\nЭто - параллелограмм\n";
    else
        cout<<"\nЭто - не параллелограмм\n";

    system("pause");
     
    return 0;
    }
    Категория: Программирование | Добавил: IrineK (27.02.2011)
    Просмотров: 4011 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Copyright MyCorp © 2024
    Конструктор сайтов - uCoz