::snoopy:: Opublikowano 14 Kwietnia 2009 Zgłoś Opublikowano 14 Kwietnia 2009 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? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
bilas Opublikowano 14 Kwietnia 2009 Zgłoś Opublikowano 14 Kwietnia 2009 x = (b1 - b2)/(a2 - a1); y = (a2 * b1 - b2 * a1) / (a2 - a1); Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
::snoopy:: Opublikowano 15 Kwietnia 2009 Zgłoś Opublikowano 15 Kwietnia 2009 @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(); } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
bilas Opublikowano 15 Kwietnia 2009 Zgłoś Opublikowano 15 Kwietnia 2009 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
::snoopy:: Opublikowano 15 Kwietnia 2009 Zgłoś Opublikowano 15 Kwietnia 2009 (edytowane) 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 15 Kwietnia 2009 przez ::snoopy:: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
bilas Opublikowano 15 Kwietnia 2009 Zgłoś Opublikowano 15 Kwietnia 2009 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
::snoopy:: Opublikowano 15 Kwietnia 2009 Zgłoś Opublikowano 15 Kwietnia 2009 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ą". Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...