# HG changeset patch
# User athos
# Date 1079707656 0
# Node ID 9910d5a5be7f393729051b513180a59591f82607
# Parent  47f62d789fe79b6a24f45ef55459ffea35d81332
M?g ?rtam bele 2 dolgot, meg a tesztelot is kibovitettem.

diff -r 47f62d789fe7 -r 9910d5a5be7f src/work/athos/xy/xy.cc
--- a/src/work/athos/xy/xy.cc	Fri Mar 19 09:09:20 2004 +0000
+++ b/src/work/athos/xy/xy.cc	Fri Mar 19 14:47:36 2004 +0000
@@ -1,26 +1,39 @@
 #include <xy.h>
 #include <iostream>
 using namespace std;
+using namespace hugo;
 int main()
 {
-	cout << "Kerek sok sikvektorokat." << endl;
+
+	cout << "Még egy skalárt is kérek (szépen)!" << endl;
+	int s;
+	cin >> s;
+
+	cout << "Kerek sok sikvektort." << endl;
 
 	xy<int> osszeg;
+	xy<int> kul;
 	xy<int> z;
 
 	vector< xy<int> > v;
-
+ 
 	while(cin >> z) {
 		v.push_back(z);
 		osszeg += z;
+		kul -= z;
        		cout << "Az összeg aktualisan: " << osszeg << endl;
+       		cout << "A különbség aktualisan: " << kul << endl;
 	}
 
-
-
 	cout << "A kovetkezo szamokat szoroztam ossze:" << endl;
 	for(unsigned int i=0; i<v.size(); ++i) {
 	  cout << v[i] << ", A normanégyzete: " << v[i].normSquare() <<endl;
+	  cout << v[i] << " " << s << " szorosa " << v[i]*s <<endl;
+	  cout << v[i] << " " << s << " edrésze " << v[i]/s <<endl;
 	}
+	if (v.size()>1){
+	  cout << "Az elsö kettö szorzata: " << v[0]*v[1] << endl;
+	}
+	
 	cout << "Eleg nehez volt." << endl;
 }
diff -r 47f62d789fe7 -r 9910d5a5be7f src/work/athos/xy/xy.h
--- a/src/work/athos/xy/xy.h	Fri Mar 19 09:09:20 2004 +0000
+++ b/src/work/athos/xy/xy.h	Fri Mar 19 14:47:36 2004 +0000
@@ -1,3 +1,4 @@
+// -*- c++ -*-
 /**
 2 dimensional vector (plainvector) implementation
 
@@ -7,111 +8,126 @@
 
 #include <iostream>
 
-using namespace std;
-template<typename T>
-class xy {
-  T _x,_y;
+namespace hugo {
 
-public:
+  template<typename T>
+    class xy {
+    T _x,_y;
 
-  ///Default constructor: both coordinates become 0
-  xy() { _x=_y=0; }
+    public:
+      
+      ///Default constructor: both coordinates become 0
+      xy() { _x=_y=0; }
 
-  ///Constructing from coordinates
-  xy(T a, T b) { _x=a; _y=b; }
+      ///Constructing from coordinates
+      xy(T a, T b) { _x=a; _y=b; }
 
-  ///Gives back the x coordinate
-  T x(){
-    return _x;
-  };
+      ///Gives back the x coordinate
+      T x(){
+	return _x;
+      };
 
-  ///Gives back the y coordinate
-  T y(){
-    return _y;
-  };
+      ///Gives back the y coordinate
+      T y(){
+	return _y;
+      };
 
-  ///Gives back the square of the norm of the vector
-  T normSquare(){
-    return _x*_x+_y*_y;
-  };
+      ///Gives back the square of the norm of the vector
+      T normSquare(){
+	return _x*_x+_y*_y;
+      };
   
-  ///Increments the left hand side by u
-  xy<T>& operator +=(const xy<T>& u){
-    _x += u._x;
-    _y += u._y;
-    return *this;
-  };
+      ///Increments the left hand side by u
+      xy<T>& operator +=(const xy<T>& u){
+	_x += u._x;
+	_y += u._y;
+	return *this;
+      };
   
-  ///Decrements the left hand side by u
-  xy<T>& operator -=(const xy<T>& u){
-    _x -= u._x;
-    _y -= u._y;
-    return *this;
-  };
+      ///Decrements the left hand side by u
+      xy<T>& operator -=(const xy<T>& u){
+	_x -= u._x;
+	_y -= u._y;
+	return *this;
+      };
 
-  ///Multiplying the left hand side with a scalar
-  xy<T>& operator *=(const T &u){
-    _x *= u;
-    _y *= u;
-    return *this;
-  };
+      ///Multiplying the left hand side with a scalar
+      xy<T>& operator *=(const T &u){
+	_x *= u;
+	_y *= u;
+	return *this;
+      };
+
+      ///Dividing the left hand side by a scalar
+      xy<T>& operator /=(const T &u){
+	_x /= u;
+	_y /= u;
+	return *this;
+      };
   
-  ///Returns the scalar product of two vectors
-  T operator *(const xy<T>& u){
-    return _x*u._x+_y*u._y;
-  };
+      ///Returns the scalar product of two vectors
+      T operator *(const xy<T>& u){
+	return _x*u._x+_y*u._y;
+      };
   
-  ///Returns the sum of two vectors
-  xy<T> operator+(const xy<T> &u) const {
-    xy<T> b=*this;
-    return b+=u;
-  };
+      ///Returns the sum of two vectors
+      xy<T> operator+(const xy<T> &u) const {
+	xy<T> b=*this;
+	return b+=u;
+      };
 
-  ///Returns the difference of two vectors
-  xy<T> operator-(const xy<T> &u) const {
-    xy<T> b=*this;
-    return b-=u;
-  };
+      ///Returns the difference of two vectors
+      xy<T> operator-(const xy<T> &u) const {
+	xy<T> b=*this;
+	return b-=u;
+      };
 
-  ///Returns a vector multiplied by a scalar
-  xy<T> operator*(const T &u) const {
-    xy<T> b=*this;
-    return b*=u;
-  };
+      ///Returns a vector multiplied by a scalar
+      xy<T> operator*(const T &u) const {
+	xy<T> b=*this;
+	return b*=u;
+      };
 
-  ///Testing equality
-  bool operator==(const xy<T> &u){
-    return (_x==u._x) && (_y==u._y);
-  };
+      ///Returns a vector divided by a scalar
+      xy<T> operator/(const T &u) const {
+	xy<T> b=*this;
+	return b/=u;
+      };
 
-  ///Testing inequality
-  bool operator!=(xy u){
-    return  (_x!=u._x) || (_y!=u._y);
-  };
+      ///Testing equality
+      bool operator==(const xy<T> &u){
+	return (_x==u._x) && (_y==u._y);
+      };
 
-};
-///Reading a plainvector from a stream
-template<typename T>
-inline
-istream& operator>>(istream &is, xy<T> &z)
-{
-  ///This is not the best solution here: I didn't know how to solve this with friend functions
-  T a,b;
-  is >> a >> b;
-  xy<T> buf(a,b);
-  z=buf;
-  return is;
-}
+      ///Testing inequality
+      bool operator!=(xy u){
+	return  (_x!=u._x) || (_y!=u._y);
+      };
 
-///Outputting a plainvector to a stream
-template<typename T>
-inline
-ostream& operator<<(ostream &os, xy<T> z)
-{
-	os << "(" << z.x() << ", " << z.y() << ")";
-	return os;
-}
+    };
 
+  ///Reading a plainvector from a stream
+  template<typename T>
+  inline
+  std::istream& operator>>(std::istream &is, xy<T> &z)
+  {
+    ///This is not the best solution here: I didn't know how to solve this with friend functions
+    T a,b;
+    is >> a >> b;
+    xy<T> buf(a,b);
+    z=buf;
+    return is;
+  }
 
+  ///Outputting a plainvector to a stream
+  template<typename T>
+  inline
+  std::ostream& operator<<(std::ostream &os, xy<T> z)
+  {
+    os << "(" << z.x() << ", " << z.y() << ")";
+    return os;
+  }
+
+} //namespace hugo
 
 #endif //HUGO_XY_H