Struktura odcinka na podstawie struktury punktu

Odpowiedz Nowy wątek
2015-01-17 20:50
0

Mam taki kod:

#include <iostream>

using namespace std;

struct Punkt {
int x;
int y;
};

struct Linia {
Punkt A, B;
}; 

To struct Linia domyślam się że jest źle, dlatego bardzo proszę o pomoc, wskazówkę jak to zrobić lub jakiś link gdyż sam nie mogę znaleźć.

Pozostało 580 znaków

2015-01-17 21:08
1

Dlaczego źle? Wygląda ok.

Pozostało 580 znaków

2015-01-17 21:19
0

A to w takim razie podeśle cały kod.
I tak: Muszę sprawdzić, czy dwie proste są prostopadłe, jeśli tak to zwracam 1, a jeśli nie to 0. Może mi ktoś podpowiedzieć jak to teraz zrobić za pomocą tej struktury Linia?


#include <iostream>
#include <cmath>

using namespace std;

struct Punkt
{
    int x;
    int y;
};

struct Linia
{
    Punkt A, B;
};

double dwie_linie (Punkt a, Punkt b, Punkt c, Punkt d)
{
    double dlugosc1, dlugosc2, skalarny, alfa;
    dlugosc1 = sqrt (pow(b.x-a.x,2)+pow(b.y-a.y,2));
    dlugosc2 = sqrt (pow(d.x-c.x,2)+pow(d.y-c.y,2));
    alfa = (((b.x-a.x)*(d.x-c.x) + (b.y-a.y) * (d.y-c.y)) / dlugosc1 * dlugosc2);
    if (dlugosc1 * dlugosc2 == 0)
    {
        cout << "Podaj inne wspolrzedne";
    }
    skalarny = dlugosc1 * dlugosc2 * cos(alfa);

    if (skalarny == 0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int main()
{
    Punkt a,b,c,d;
    Linia i,j;
    cout << "Podaj wspolrzedne punktow a,b,c,d (x i y): ";
    cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y >> d.x >>d.y;
    cout << dwie_linie(a,b,c,d);

    return 0;
}
edytowany 1x, ostatnio: rijusaki, 2015-01-17 21:20

Pozostało 580 znaków

2015-01-17 21:33
0
int dwie_linie(const Linia &p,const Linia &q)
  {
   ...
   double len1=hypot(p.B.x-p.A.x,p.B.y-p.A.y),len2=hypot(q.B.x-q.A.x,q.B.y-q.A.y);
   if((!len1)||(!len2)) return -1;
   ...
   ...
   return !skalarny;
  }
...
    Linia p,q;
    cout<<"Podaj wspolrzedne punktow a,b,c,d (x i y): ";
    cin>>p.A.x>>p.A.y>>p.B.x>>p.B.y>>q.A.x>>q.A.y>>q.B.x>>q.B.y;
    cout<<dwie_linie(p,q);

Z tym że wyniki masz niepoprawnie zapisane równanie.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-17 21:52
0

A może ktoś pomóc w poprawie równania?

Pozostało 580 znaków

2015-01-17 22:01
0

A sam nie możesz?
Radzę zmienić podejście, sprawdź czy: fabs(DeltaX(p)*DeltaY(q))==fabs(DeltaY(p)*DeltaX(q))
Oczywiście pod warunkiem: (DeltaX(p)||DeltaY(p))&&(DeltaX(q)||DeltaY(q))


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2015-01-17 22:25

Pozostało 580 znaków

2015-01-17 22:17
0
_13th_Dragon napisał(a):

A sam nie możesz?
Radzę zmienić podejście

Nie o to chodzi że nie mogę, ale o to że nie wiedziałem gdzie jest błąd.

Pozostało 580 znaków

2015-01-17 22:21
0

Zdefiniowałeś odcinek, a nie prostą...
Dlaczego nie sprawdzisz po prostu współczynnika kierunkowego?

edytowany 1x, ostatnio: satirev, 2015-01-17 22:22
Bo może być nieskończonością dla pionowej linii. - _13th_Dragon 2015-01-17 22:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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