[Algorytmy] Punkt przecięcia prostych

Baridiusz
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 5 gru 2012, o 23:09
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 1 raz

[Algorytmy] Punkt przecięcia prostych

Post autor: Baridiusz »

Jaś bardzo lubi rozwiązywać zagadki logiczne. Zaprosił Małgosię do zabawy w następującą grę. Małgosia podaje Jasiowi współczynniki a i b dwóch różnych prostych z układu współrzędnych, natomiast Jaś w pamięci oblicza ich punkt przecięcia \(\displaystyle{ (x,y)}\). Jaś ustalił z Małgosią, że proste podawane przez Małgosię zawsze mają dokładnie jeden punkt przecięcia.

Wejście:

W pierwszym wierszu wejścia znajduje się liczba całkowita n (n>0) oznaczająca liczbę przypadków do sprawdzenia przez Jasia.

Kolejne n-wierszy zawiera dwie pary liczb rzeczywistych oznaczających współczynniki prostych \(\displaystyle{ k}\) i \(\displaystyle{ l}\): \(\displaystyle{ a_k}\), \(\displaystyle{ b_k}\), \(\displaystyle{ a_l}\), \(\displaystyle{ b_l}\),

Wyjście:

Każdy z \(\displaystyle{ n}\)-wierszy wyjścia zawiera oddzielone spacjami współrzędne punktu przecięcia \(\displaystyle{ (x, y)}\) z dokładnością do dwóch miejsc po przecinku.

Przykład:

Wejście:

Kod: Zaznacz cały

2

2.1 1 4 2.31

2.3 1.1 4.1 2.76
Wyjście:

Kod: Zaznacz cały

-1.45 6.08

-1.08 5.40

Próbowałem już wszystkiego, nic a nic nie wychodzi.
Ostatnio zmieniony 5 gru 2012, o 23:17 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania. Nieczytelny zapis - brak LaTeX-a. Proszę zapoznaj się z instrukcją: http://matematyka.pl/latex.htm .
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Algorytmy] Punkt przecięcia prostych

Post autor: royas »

Z czym konkretnie masz problem? Wczytywanie danych, obliczenie punktu?
Baridiusz
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 5 gru 2012, o 23:09
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 1 raz

[Algorytmy] Punkt przecięcia prostych

Post autor: Baridiusz »

Dokładnie z obliczeniem pkt - tzn obliczałem ,ale nigdy nie wychodzi mi taki wzór , że gdy podstawię przykładowe wejście to wyjdzie dobry wynik.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Algorytmy] Punkt przecięcia prostych

Post autor: royas »

A jako dobry wynik przyjmujesz ten z "przykładowego wyjścia"? Wydaje mi się, że te dwa przykładowe pliki są niezależne. Zauważ, że punkt \(\displaystyle{ (-1.45;6.08)}\) Leży daleko od prostej \(\displaystyle{ y=2.1x+1}\).
Baridiusz
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 5 gru 2012, o 23:09
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 1 raz

[Algorytmy] Punkt przecięcia prostych

Post autor: Baridiusz »

No dobra, nie zwracajmy uwagi na te przykłady.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Algorytmy] Punkt przecięcia prostych

Post autor: royas »

Ok. To nie zwracając uwagi na przykład masz jeszcze problem, czy już działa dobrze?
Baridiusz
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 5 gru 2012, o 23:09
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 1 raz

[Algorytmy] Punkt przecięcia prostych

Post autor: Baridiusz »

Mam dalej problem, gdyż to co ja próbowałem jest złe ;F
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Algorytmy] Punkt przecięcia prostych

Post autor: royas »

To pokaż jaki masz wzór/algorytm na obliczanie tego punktu przecięcia.
Baridiusz
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 5 gru 2012, o 23:09
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 1 raz

[Algorytmy] Punkt przecięcia prostych

Post autor: Baridiusz »

Kod: Zaznacz cały

#include <iostream>
#include <cmath>
using namespace std;
 
int main(){
int n;
cin>>n;
float xS,yS,aK,bK,aL,bL,e,f,w;
for (int i=0;i<n;i++){
cin >>aK>>bK>>aL>>bL;
e=aK*aK+bK*bK;
f=aL*aL+bL*bL;
w = 2*(aK*bL-bK*aL);
xS = (bL*e - bK*f)/w;
yS = (aK*f - aL*e)/w;
cout.flags(ios::fixed);
cout.precision(2);
cout <<xS<<" "<<yS<<endl;
}
 
return 0;
 
}
Ostatnio zmieniony 8 gru 2012, o 21:49 przez Anonymous, łącznie zmieniany 2 razy.
Powód: Nie usuwaj treści posta po odpowiedzi
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Algorytmy] Punkt przecięcia prostych

Post autor: royas »

Tego nie jestem pewny, ale przyjąłem, że \(\displaystyle{ a,b}\) to współczynniki z takiego równania \(\displaystyle{ y=ax+b}\).
Wtedy wychodzą takie obliczenia

Kod: Zaznacz cały

x=(b2-b1)/(a1-a2);
y=a1*x+b1;
Baridiusz
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 5 gru 2012, o 23:09
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 1 raz

[Algorytmy] Punkt przecięcia prostych

Post autor: Baridiusz »

Ok dzięki, temat do usunięcia.
ODPOWIEDZ