Program w C++ (programowanie obiektowe)

0

Program powinien stwierdzić że czworościan o współrzędnych wierzchołków:

A (tan(M_PI/4), 2)

B (5,2)

C (10*sin(M_PI/6), sin(1.0)*sin(1.0) + cos(1.0)*cos(1.0)+ 0.5)

D (1, 1.5)

jest prostokątem.

#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace std;

struct point
{
double x,y; // zadeklarowanie w strukturze dwóch zmienych zmienopozycyjnych
};

struct prostokat
{
point A,B,C,D; // zadeklarowanie w strukturze punktów prostok¹ta
};

double dlugosc(point A , point 
{
    double wynik1, wynik2;
    wynik1 = sqrt(((B.x-A.x)*(B.x-A.x))+((B.y-A.y)*(B.y-A.y)));
    return wynik1;
}
void wyswietl(Prostokat &p)
{
    
}


int main()
{
prostokat zmien; // wyswietlenie punktow poprzez strukture

cout << "Podaj wspolrzedne punktu A(x):" << endl;
cin >> zmien.A.x;
cout << "Podaj wspolrzedne punktu A(y):" << endl;
cin >> zmien.A.y;
cout << "Podaj wpolrzedne punktu B(x):" << endl;
cin >> zmien.B.x;
cout << "Podaj wspolrzedne punktu B(y):" << endl;
cin >> zmien.B.y;
cout << "Podaj wspolrzedne punktu C(x):" << endl;
cin >> zmien.C.x;
cout << "Podaj wsporzedne punktu C(y):" << endl;
cin >> zmien.C.y;
cout << "Podaj wspolrzedne punktu D(x):" << endl;
cin >> zmien.D.x;
cout << "Podaj wsporzedne punktu D(y):" << endl;
cin >> zmien.D.y;

cout << "Dlugosc odcinka AB:" << endl;
cout << dlugosc(zmien.A, zmien.B)<< endl;
cout << "Dlugosc odcinka CD:" << endl;
cout << dlugosc(zmien.C, zmien.D) << endl;

return 0;
}

Prosiłabym o pomoc z napisaniem tego programu

0

Takie miałam polecenie, podejrzewam że chodzi o czworokąt bo inaczej to zupełnie nielogiczne

0

Podsumowując chcesz sprawdzić, czy czworościan opisany na dwuwymiarowym układzie kartezjańskim jest prostokątem, przez co rozumiesz, że jest czworokątem. Dokładniej, masz udowodnić istnienie 4 kątów w czworościanie. Zadanie godne nagrody Darwina.

0

Masz 6 wariantów do sprawdzenia, pierwszy z nich ABCD
więc sprawdzasz czy AB równolegle do CD oraz czy BC równolegle do AD oraz czy jeden z kątów np ABC jest kontem prostym.

Jeżeli dla jednego z 6-ciu sprawdzeń wszystkie trzy warunki będą prawdą to masz prostokąt.

1

@_13th_Dragon - mi się wydaje, że szybsze będzie sprawdzenie czy obie przekątne są równe i czy przecinają się w połowie.

0

@winerfresh, aż musiałem sprawdzić, no i masz racje, przy okazji sprawdzenia wyprowadziłem wzór na punkt przecięcia się A-B z C-D:

x=((Bx-Ax)*(Dx*Cy-Dy*Cx)-(Dx-Cx)*(Bx*Ay-By*Ax))/((By-Ay)*(Dx-Cx)-(Dy-Cy)*(Bx-Ax))
y=((Dy-Cy)*(Bx*Ay-By*Ax)-(By-Ay)*(Dx*Cy-Dy*Cx))/((Dy-Cy)*(Bx-Ax)-(By-Ay)*(Dx-Cx))

1 użytkowników online, w tym zalogowanych: 0, gości: 1