Skocz do zawartości
::snoopy::

[c++] Współrzędne Punktu Przecięcia Dwóch Prostych

Rekomendowane odpowiedzi

Zacząłem pisać programik ale nie wiem jak to rozwinąć. Od razu mówię, że nie proszę o wyręczanie mnie z tego tylko o jakieś wskazówki.

 

Program ma obliczać współrzędne punktu przecięcia dwóch prostych o takich równaniach:

y = a1 * x + b1

y = a2 * x + b2

Program ma pobierać od nas a1, b1, a2, b2. Przedstawić przecięcia podanych prostych na wykresie.

 

Zacząłem tak:

#include <iostream>#include <conio.h>#include <math.h>using namespace std;int main(){	  int a1, b1, a2, b2; //paramatry do pobrania	  float y, x; //niewiadome	  float rownanie; 	  	  cout<<"Podaj parametry do pierwszego rownania"<<endl;	  cout<<"Podaj a1: \n";	 	  cin>>a1;	  cout<<"Podaj b1: \n";	  cin>>b1;	  cout<<"Podaj parametry do drugiego rownania"<<endl;	  cout<<"Podaj a2: \n";	 	  cin>>a2;	  cout<<"Podaj b2: \n";	 	  cin>>b2;	  	  cout<<"Twoje 1-sze rownanie: y="<<a1<<"*"<<"x"<<"+"<<b1<<endl;	  cout<<"Twoje 2-gie rownanie: y="<<a2<<"*"<<"x"<<"+"<<b2<<endl;			getch();	  }
TUTAJ jest teoria na ten temat. Pytanie jak wpisać te układy równań i wyznaczniki?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@bilas, dzięki użyłem wskazówki. Musiałem trochę pokombinować, wcześniej zapomniałem o liczbach na "-" i czasem pokazywało w wyniku 0 , 0. Nie jestem pewiem czy to robi to co powinno. Zerknij czy jest dobrze.

 

#include <iostream>#include <conio.h>#include <math.h>using namespace std;/* Program obliczajacy wspolrzedne punktu przeciecia dwoch prostych o rownaniach:		y = a1 * x + b1		y = a2 * x + b2Program ma pobierać dane a1, b1, a2, b2.Przedstawienie przeciecia podanych prostych na wykresie.*/int main(){	  signed int a1, b1, a2, b2; //paramatry do pobrania	  signed int x, y; //niewiadome	  signed int c1, c2; //oznaczenia wyrazu wolnego	  signed int rownanie; 	  signed int W; //wyznacznik	  signed int Wx, Wy; //wyznaczniki x y	  	  cout<<"Podaj parametry do pierwszego rownania \ny = a1 * x + b1"<<endl;	  cout<<"Podaj wspolczynnik przy x [a1]: \n";	 	  cin>>a1;	  cout<<"Podaj wspolczynnik przy y [b1]: \n";	  cin>>b1;	  cout<<"Podaj parametry do drugiego rownania \ny = a2 * x + b2"<<endl;	  cout<<"Podaj wspolczynnik przy  x [a2]: \n";	 	  cin>>a2;	  cout<<"Podaj wspolczynnik przy y [b2]: \n";	 	  cin>>b2;	  	  cout<<"Podaj wyraz wolny pierwszego rownania: \n";	  cin>>c1;	  cout<<"Podaj wyraz wolny drugiego rownania: \n";		  cin>>c2;	  cout<<"Twoje 1-sze rownanie: "<<b1<<"y="<<a1<<"*"<<"x"<<"+"<<c1<<endl;	  cout<<"Twoje 2-gie rownanie: "<<b2<<"y="<<a2<<"*"<<"x"<<"+"<<c2<<endl;	  	  W = a1 * b2 - b2 * a1; // 1etap	  	  Wx = (-c1) * b2 - (-c2) * b1; // 2etap	  Wy = a1 * (-c2) - a2 * (-c1); // 2etap	  	  x = (b1 - b2)/(a2 - a1); // 3etap Wx/w	  y = (a2 * b1 - b2 * a1) / (a2 - a1); // 3etap Wy/W	  	  cout<<"Proste przecinaja sie w punkcie: X["<<x<<"] Y["<<y<<"]"<<endl; 	  	  cout<<"\nNacisnij dowolny klawisz aby zamknac.";getch();	  }

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po pierwsze wszystkie zmienne powinny byc raczej typu float/double.

Po drugie musisz zdecydowac sie czy korzystasz z równania normalnego prostej czy z rownania w postaci kierunkowej. Moje rozwiazanie dotyczy postaci kierunkowej.

Teraz jest zle - zastanow sie czym u Ciebie sa a, b, c. Poza tym po co zmienne W, Wx, Wy - nie wykorzystujesz ich nigdzie.

Wzor na punkt przeciecia mozna latwo wyznaczyc np. z ukladu rownan - ot caly problem, ktorego rozwiazanie podalem powyzej.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po drugie musisz zdecydowac sie czy korzystasz z równania normalnego prostej czy z rownania w postaci kierunkowej. Moje rozwiazanie dotyczy postaci kierunkowej.

Szczerze to nie wiem jak ma być, w poleceniu nie pisze. W kodzie jest zakomentowana treść tego zadania.

Teraz jest zle - zastanow sie czym u Ciebie sa a, b, c. Poza tym po co zmienne W, Wx, Wy - nie wykorzystujesz ich nigdzie.

"a i b" to współczynniki a "c" to miał być wyraz wolny.

Sugerowałem się podaną wyżej stroną i chciałem to liczyć tymi wyznacznikami.

Wzor na punkt przeciecia mozna latwo wyznaczyc np. z ukladu rownan - ot caly problem, ktorego rozwiazanie podalem powyzej.

No więc rozumiem że mam wywalić z kodu te linie

W = a1 * b2 - b2 * a1; // 1etap	  Wx = (-c1) * b2 - (-c2) * b1; // 2etapWy = a1 * (-c2) - a2 * (-c1); // 2etap
?? Edytowane przez ::snoopy::

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

y = ax + b to postac kierunkowa.

Na stronie, ktora podales, wykorzystywane jest rownanie normalne - w tresci zadania jest rownanie kierunkowe. Wzory na x i y jakie Ci podalem dotycza rownania kierunkowego.

 

Linie z W, Wx. Wy mogą być pominiete - do wyliczenia x i y wykorzystuje tylko a i b.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

y = ax + b to postac kierunkowa.

Na stronie, ktora podales, wykorzystywane jest rownanie normalne - w tresci zadania jest rownanie kierunkowe. Wzory na x i y jakie Ci podalem dotycza rownania kierunkowego.

 

Linie z W, Wx. Wy mogą być pominiete - do wyliczenia x i y wykorzystuje tylko a i b.

Ok, dzięki wielkie.

Biorę się za przeróbkę na wersję "okienkową".

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...