ďťż

Ładny brzuch

Witam.
Mam problem z następującym programem. Napisać klasę punkt i na jej podstawie stworzyć nowy typ prosta. Klasa prosta ma pozwalać na
sprawdzenie: punktu przecięcia z osią x, punktu przecięcia dwóch prostych, kąta między prostymi, kąta między prostą a osią x, czy proste są prostopadłe, czy proste są równoległe.
Czy ktoś mógłby mi pomóc w napisaniu operatorów tak, aby w mainie było możliwe chociaż sprawdzanie warunków czy punkty a1, a2 i b1, b2 to te same punkty? Dziękuję. Pozdrawiam.

Oto co do tej pory udało mi się napisać:
///////////////////////////////////////////////plik *.cpp /////////////////////////////////// #include <iostream.h> #include <string.h> //strcpy(dokąd, co_kopiować); #include "Zaliczenie - punkt, prosta.h" //odpowiednio klasy: podstawowa, pochodna //----------------------------------------------------------------------------------------------// int main() { punkt a1, a2, b1, b2; do { a1.wprowadz("I", 1); a2.wprowadz("II", 1); b1.wprowadz("I", 2); //aby obliczyś wsółczynnik kierunkowy oraz równanie prostej b2.wprowadz("II", 2); //musimy znać 2 punkty if(a1==a2 && b1==b2) cout << "BLAD - to musi byc prosta a nie punkt" <<endl; } while(a1!=a2 && b1!=b2);//jeżeli a1 == a2 lub b1 == b2 to znaczy że to jest punkt a nie prosta return 0; } /////////////treść pliku nagłówkowego Zaliczenie - punkt, prosta.h/////////////////// class punkt //klasa podstawowa dla klasy prosta { public: double _x, _y; void wprowadz(char *, int); //friend punkt operator==(punkt &); }; /*inline*/ void punkt::wprowadz(char *p, int w) //z operatorem zakresu :: bo NIE jest w ciele klasy. F. ta nie jest { //automatycznie inline dlatego trzeba dopiszać inline cout << "Podaj " << p <<" wsporzedna punktu " << w <<"\n\t\tx: "; cin >> _x; cout << "\t\ty: "; cin >> _y; } //*********************************************************************************************** class prosta : public punkt //klasa pochodna klsy punkt. Specyfikator dostępu odpowiada za to, { //czy odziedziczone nieprywatne składniki mają wejść w skład części pr. prot, pub public: punkt a1, a2, b1, b2, wynik; prosta(){_x=0; _y=0;} //------------------------------------------- bool operator==(const punkt a1/*, const punkt &a2*/) { if(_x == a1._x) return true; return false; } bool operator==(const punkt b1/*, const punkt &b2*/) { if(_x == b1._x) return true; return false; } //------------------------------------------ bool operator&&(const punkt &a1/*, const punkt &a2*/) { if(a1._x && a1._y) return true; return false; } bool operator&&(const punkt &b1/*, const punkt &b2*/) { if(b1._y && b2._x) return true; return false; } //------------------------------------------- bool operator!=(const punkt a1/*, const punkt &a2*/) { if(a1._x != a1._x) return true; return false; } bool operator!=(const punkt b1/*, const punkt &b2*/) { if(b1._y != b2._y) return true; return false; } };
codebox! - m
Użytkownik migajek edytował ten post 18 styczeń 2006, 19:02


while(a1!=a2 && b1!=b2);//jeżeli a1 == a2 lub b1 == b2 to znaczy że to jest punkt a nie prosta

Twój sposób myślenia jest dziwny... Dla czego while a nie if? Skąd ono się wzieło? Czy a1 i a2 to wsp. (x|y) a b1 i b2 to wsp. (x|y)?

Tak, racja, niepotrzebnie napisałem tą pętlę "do {} while", wystarczy poprostu if. Punkt a1,a2,b1,b2 to punkty w kartezjańskim układzie współrzędnych, dla karzdego z punktów podaje _x i _y.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •