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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2020, 11:56   #1
Usernameistaken
 
Регистрация: 18.11.2020
Сообщений: 6
По умолчанию Нужно исправить код

Помогите пожалуйста исправить код, а именно нужно исправить проверку вхоят ли точки в квадрат.

Вот код:

Код:
#include <iostream> 
using namespace std; 
 
 
struct Point 
{ 
    double x, y; 
} a[10], lh[10], rh[10]; 
 
int distanceSquare(Point a, Point b) 
{ 
    return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); 
} 
 
bool IsItSquare(Point p1, Point p2, Point p3, Point p4) 
{ 
    int d2 = distanceSquare(p1, p2); 
    int d3 = distanceSquare(p1, p3); 
    int d4 = distanceSquare(p1, p4); 
 
    if (d2 == 0 || d3 == 0 || d4 == 0)
    {
        return false; 
    }
 
 
    if (d2 == d3 && 2 * d2 == d4 && 2 * distanceSquare(p2, p4) == distanceSquare(p2, p3)) 
    { 
        return true; 
    } 
 
    
    if (d3 == d4 && 2 * d3 == d2 && 2 * distanceSquare(p3, p2) == distanceSquare(p3, p4)) 
    { 
        return true; 
    } 
    if (d2 == d4 && 2 * d2 == d3 && 2 * distanceSquare(p2, p3) == distanceSquare(p2, p4)) 
    { 
        return true; 
    } 
 
    return false; 
} 
 
 
 
 
 
 
double dot(Point lh, Point rh)
{ return lh.x * rh.x + lh.y * rh.y; }
 
Point operator-(Point lh, Point rh)
{ return {lh.x - rh.x, lh.y - rh.y}; }
 
 
bool IsItInside(Point p, Point a, Point b, Point c)
{
    Point bp = p - b;
    Point ba = a - b;
    double t = dot(bp, ba) / dot(ba, ba);
    if (0 <= t && t <= 1)
    {
        Point bc = c - b;
        t = dot(bp, bc) / dot(bc, bc);
        return 0 <= t && t <= 1;
    }
    return false;
}
 
 
int main() 
{ 
    int NumberOfPoints;
 
    
    cout << "Please, input the coordinates of square:" << endl;
    
   for (int i=1; i<=4; i++)
    {
        cout << 'x' << i << '='; cin >> a[i].x;
        cout << 'y' << i << '='; cin >> a[i].y;
    }
    
    Point p1 = { a[1].x, a[1].y }, p2 = { a[2].x, a[2].y }, 
        p3 = { a[3].x, a[3].y }, p4 = { a[4].x, a[4].y }; 
        
    Point p = { lh[1].x, lh[1].y }, a = { rh[1].x, rh[1].y }, b = { lh[1].x, rh[1].y }, c = { rh[1].x, lh[1].y };
        
    if (IsItSquare(p1, p2, p3, p4))
    {
        cout << "It's a square." << endl;
        
        
        
        cout << "Let's check whether points are included in the square!" << endl;
        cin.get();
        cout << "How many points?(n > 2): " << endl;
        cin >> NumberOfPoints;
        
        do {
        if (NumberOfPoints <= 2)
        {
            cout << "It's too few! The number of points must be more than 2." << endl;
            
            cout << "How many points?(n > 2): " << endl;
            cin >> NumberOfPoints;
        }
        
        
        
        
        for (int i=1; i<=NumberOfPoints; i++)
        {
        cout << 'x' << i << '='; cin >> lh[i].x;
        cout << 'y' << i << '='; cin >> lh[i].y;
        }
        
        if (IsItInside(p, a, b, c))
        {
            cout << "These points are inside of the square. " << endl;
        }
        else 
        {
            cout << "These points aren't inside in the square!" << endl;
        }
        
        
        } while (NumberOfPoints <= 2);
        
    }
    
    else
    {
        cout << "It's not a square!" << endl; 
    }
    
    
    system("pause");
 
    
}
Usernameistaken вне форума Ответить с цитированием
Старый 03.12.2020, 12:16   #2
FrosyaZZ
Форумчанин
 
Регистрация: 16.11.2020
Сообщений: 243
По умолчанию

Массивы нумеруются с 0
FrosyaZZ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
100р нужно исправить код. Александр121 Фриланс 4 19.04.2018 18:03
нужно исправить код melkaya9112 Помощь студентам 1 09.12.2010 00:56
нужно исправить код Alt_Shift Общие вопросы C/C++ 4 14.11.2010 16:16
нужно исправить готовый код Алексей Долгов Помощь студентам 2 02.06.2010 15:46