vector.cc
changeset 43 cf8c1b5127b2
child 45 7197576fedcf
new file mode 100644
--- /dev/null
+++ b/vector.cc
@@ -0,0 +1,105 @@
+/**
+ * DEREFERNCING CLASSES
+ */
+
+#include <cstdio>
+#include <cstdlib>
+#include <cmath>
+#include <ctime>
+
+#define GETRANDOM(max) (1+(int)((float)max*rand()/RAND_MAX+1.0))
+#define MAX 6
+
+namespace algebra {
+    class Vector {
+      private:
+        int x;
+        int y;
+
+      public:
+        Vector (int xx = 0, int yy = 0);
+       ~Vector ();
+
+        int X () { return x; }
+        int Y () { return y; }
+
+        Vector operator+ (Vector&);
+        Vector operator- (Vector&);
+
+        void vector ();
+        double abs ();
+    };
+
+    Vector::Vector (int xx, int yy) {
+        x = xx;
+        y = yy;
+    }
+
+    Vector::~Vector () {
+        fprintf (stderr, "Removing Vector (%.3d, %.3d)\n", x, y);
+    }
+
+    Vector Vector::operator+ (Vector& v) {
+        return Vector (x + v.X (), y + v.Y ());
+    }
+
+    Vector Vector::operator- (Vector& v) {
+        return Vector (x - v.X (), y - v.Y ());
+    }
+
+    double Vector::abs () {
+        return sqrt (x * x + y * y);
+    }
+
+    void Vector::vector () {
+        printf ("(%.3d, %.3d)", x, y);
+    }
+}
+
+using namespace algebra;
+
+int main (int argc, char **argv)
+{
+    Vector *v[MAX];
+    Vector result;
+
+    srand (time (NULL));
+
+    if ((MAX % 2) != 0) {
+        printf ("MAX %% 2 != 0\n");
+        return EXIT_FAILURE;
+    }
+
+    for (int i = 0; i < MAX; i++) {
+        v[i] = new Vector (GETRANDOM (100), GETRANDOM (100));
+    }
+
+    for (int i = 0; i < MAX; i += 2) {
+        v[i + 1]->vector ();
+        printf ("+");
+        v[i]->vector ();
+        printf ("=");
+        result = *v[i + 1] + *v[i];
+        result.vector ();
+        printf (" = %3.2f\n", result.abs ());
+    }
+
+    printf ("\n");
+
+    for (int i = 0; i < MAX; i += 2) {
+        v[i + 1]->vector ();
+        printf ("-");
+        v[i]->vector ();
+        printf ("=");
+        result = *v[i + 1] - *v[i];
+        result.vector ();
+        printf (" = %3.2f\n", result.abs ());
+    }
+
+    printf ("\nCLEANUP\n");
+
+    for (int i = 0; i < MAX; i++)
+        delete v[i];
+
+    return EXIT_SUCCESS;
+}