rijads

zadatak c++ duz

Dec 5th, 2013
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.73 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class tacka {
  5.     int x;
  6.     int y;
  7.     char * oznaka;
  8. public:
  9.     tacka();
  10.     tacka(char *, int, int);
  11.     tacka(const tacka & druga);
  12.     ~tacka();
  13.     double udaljenost(const tacka &);
  14.     int getX() const;
  15.     int gety() const;
  16.     int setx(int);
  17.     int sety(int);
  18.     char * getOznaka() const;
  19.     tacka & operator=(const tacka &);
  20.     tacka & operator+(const tacka&);
  21.     tacka & operator-(const tacka&);
  22.     tacka & operator++();
  23.     tacka operator++(int);
  24.     bool operator>(tacka&);
  25.     bool operator<(tacka&);
  26.     bool operator==(tacka&);
  27.     friend ostream& operator<<(ostream &out, tacka& l);
  28.     friend istream& operator>>(istream &in, const tacka& l);
  29. };
  30. tacka::tacka() {
  31.     oznaka = new char(' ');
  32.     x = y = 0;
  33. }
  34. tacka::tacka(char * _oznaka, int _x, int _y) {
  35.     oznaka = new char[strlen(_oznaka) + 1];
  36.     strcpy_s(oznaka, strlen(_oznaka) + 1, _oznaka);
  37.     x = _x;
  38.     y = _y;
  39. }
  40. tacka::tacka(const tacka & original) {
  41.     oznaka = new char[strlen(original.oznaka) + 1];
  42.     strcpy_s(oznaka, strlen(original.oznaka) + 1, original.oznaka);
  43.     x = original.x;
  44.     y = original.y;
  45. }
  46. tacka::~tacka() { delete[] oznaka; oznaka = NULL; }
  47. double tacka::udaljenost(const tacka & druga) {
  48.     return sqrt(pow((druga.y - y), 2) + pow((druga.x - x), 2));
  49. }
  50. int tacka::getX() const {
  51.     return x;
  52. }
  53. int tacka::gety() const {
  54.     return y;
  55. }
  56. char * tacka::getOznaka() const {
  57.     return oznaka;
  58. }
  59. tacka & tacka::operator=(const tacka &druga) {
  60.     if (this != &druga) {
  61.         oznaka = new char[strlen(druga.oznaka) + 1];
  62.         strcpy_s(oznaka, strlen(druga.oznaka) + 1, druga.oznaka);
  63.         x = druga.x;
  64.         y = druga.y;
  65.     }
  66.     return *this;
  67. }
  68. tacka& tacka::operator+(const tacka& d){
  69.     x += d.x;
  70.     y += d.y;
  71.     return *this;
  72. }
  73. tacka & tacka::operator-(const tacka& d){
  74.     x -= d.x;
  75.     y -= d.y;
  76.     return *this;
  77. }
  78. tacka & tacka::operator++(){
  79.     ++x;
  80.     ++y;
  81.     return *this;
  82. }
  83. tacka tacka::operator++(int a){
  84.     tacka temp=*this;
  85.     x++;
  86.     y++;
  87.     return temp;
  88. }
  89. bool tacka::operator>(tacka& d){
  90.     return (x > d.x&&y > d.y);
  91. }
  92. bool tacka::operator<(tacka& d){
  93.     return (!operator>(d));
  94. }
  95. bool tacka::operator==(tacka& d){
  96.     return (x==d.x&&y==d.y);
  97. }
  98. int tacka::setx(int x){
  99.     this->x = x;
  100.     return this->x;
  101. }
  102. int tacka::sety(int y){
  103.     this->y = y;
  104.     return this->y;
  105. }
  106. ostream& operator<<(ostream& out,const tacka& l){
  107.     out << "Tacka x: " << l.x << "; Tacka y: " << l.y << endl;
  108.     return out;
  109. }
  110. istream& operator>>(istream &in, tacka& l){
  111.     in>>l.x>>l.y;
  112.     return in;
  113. }
  114.  
  115. class duz {
  116.     char * oznaka;
  117.     tacka a;
  118.     tacka b;
  119.     double duzina;
  120. public:
  121.     duz();
  122.     duz(char *, tacka &, tacka &);
  123.     duz(const duz &);
  124.     ~duz();
  125.     char * getOznaka() const;
  126.     tacka getA() const;
  127.     tacka getB() const;
  128.     double getDuzina() const;
  129. };
  130. duz::duz() {
  131.     oznaka = new char(' ');
  132.     a = tacka("", 0, 0);
  133.     b = tacka("", 0, 0);
  134.     duzina = 0;
  135. }
  136. duz::duz(char * _oznaka, tacka & _a, tacka & _b) {
  137.     oznaka = new char[strlen(_oznaka) + 1];
  138.     strcpy_s(oznaka, strlen(_oznaka) + 1, _oznaka);
  139.     a = _a;
  140.     b = _b;
  141.     duzina = a.udaljenost(b);
  142. }
  143. duz::duz(const duz & original) {
  144.     oznaka = new char[strlen(original.oznaka) + 1];
  145.     strcpy_s(oznaka, strlen(original.oznaka) + 1, original.oznaka);
  146.     a = original.a;
  147.     b = original.b;
  148.     duzina = a.udaljenost(b);
  149. }
  150. duz::~duz() { delete[] oznaka; oznaka = NULL; }
  151. char * duz::getOznaka() const {
  152.     return oznaka;
  153. }
  154. tacka duz::getA() const {
  155.     return a;
  156. }
  157. tacka duz::getB() const {
  158.     return b;
  159. }
  160. double duz::getDuzina() const {
  161.     return duzina;
  162. }
  163.  
  164. void main() {
  165.     tacka A("A", 4, 0);
  166.     tacka B("B", 0, 3);
  167.  
  168.     duz a("a", A, B);
  169.  
  170.     cout << a.getOznaka() << "(" << a.getA().getOznaka() << "," << a.getB().getOznaka() << ")" << endl;
  171.     cout << "Duzina duzi " << a.getOznaka() << " iznosi: " << a.getDuzina() << endl;
  172.     cout << "\nTest novih funkcija:\n";
  173.     //cout << "A: " << A;
  174. }
Advertisement
Add Comment
Please, Sign In to add comment