Általános kétdimenziós vektor

Írjunk egy kétdimenziós vektor osztályt!

  • A vektor egyes koordinátái valós számok.
  • Inicializáláskor a vektort meg lehessen adni 0, 1 vagy 2 értékkel is (ha nem adunk meg egy inicializáló értéket, akkor az nulla legyen!
  • A vektorhoz lehessen hozzáadni, belőle kivonni más kétdimenziós vektorokat, valamint más vektorral is össze lehessen szorozni (skaláris szorzat)!
  • A program tagolása (.h: osztálydeklaráció, .cpp: hosszabb implementációjú függvények törzse) a C++ programozók körében elterjedt konvenciók alapján történjen, és védjük le a többszörös beépítésből eredő újradefinicióról szóló hibaüzeneteket. A tesztelő függvény is külön állományba kerüljön.
  • Írjunk egy diagnosztikai függvényt, amely kiírja a tagváltozók értékét, és egy tesztelő függvényt (main), amely teszteli a konstruktorokat és a többi tagfüggvényt.


A megoldásért kattints ide!
A TwoDimVector.h állomány tartalma:

 

#ifndef TWO_DIM_VECTOR_H 
#define TWO_DIM_VECTOR_H      // A többszörös beépítés elkerülése

 

 

 

 

class TwoDimVector

{

     

public:

      double x,y; // publikus tagváltozók, mert tetszőleges valós érték érvényes 

 

    // Elegánsabb default értékkel megoldani, mint 3 konstruktorral

      TwoDimVector(double x=0, double y=0){this->x=x; this->y=y;};

 

      void Add(TwoDimVector tdv);         // Összeadás

      void Subtract(TwoDimVector tdv);  // Kivonás

      double Multiply(TwoDimVector tdv); // Szorzás

 

      void Print()const;                       // Publikus kiírófüggvény

 

};

#endif  /* TWO_DIM_VECTOR_H */ // A többszörös beépítés elkerülése


A TwoDimVector.cpp állomány:

#include "TwoDimVector.h"

#include <iostream>


using namespace std;
 

// Összeadás

void TwoDimVector::Add(TwoDimVector tdv)

{

      x+=tdv.x;

      y+=tdv.y;

}          

 

// Kivonás

void TwoDimVector::Subtract(TwoDimVector tdv)

{

      x-=tdv.x;

      y-=tdv.y;

} 

 

// Szorzás

double TwoDimVector::Multiply(TwoDimVector tdv)

{

      return x*tdv.x + y*tdv.y;

}

 

// Publikus kiírófüggvény

void TwoDimVector::Print()const

{

      printf("x= %lf  y=%lf\n",x,y);

}

Egy lehetséges tesztprogram:

#include "TwoDimVector.h"

#include <iostream>

 

using namespace std;

int
main()

{

      // Létrehozzuk az objektumokat

      TwoDimVector tdv1; 

      TwoDimVector tdv2(4);

      TwoDimVector tdv3(2,3);

      TwoDimVector tdv4(4,5);

      tdv1.x=7;

      tdv1.y=9;

 

      // Kiiratjuk a tagváltozókat

      tdv1.Print();

      tdv2.Print();

      tdv3.Print();

      tdv4.Print();

 

      // Műveletek végzése

      tdv2.Add(tdv3);

      tdv4.Subtract(tdv3);

     

      // Kiiratjuk a tagváltozókat

      tdv1.Print();

      tdv2.Print();

      tdv3.Print();

      tdv4.Print();

      printf("Szorzás: %lf\n",tdv3.Multiply(tdv4));

 }




2008.01.13. 9:56:36 |  Permalink  |  Hozzászólások száma: 0  |  Tárgyszavak: Osztályok


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások