From 1b279892b824f1bad9de35ee2772db479e66aab5 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Tue, 5 Jan 2016 17:41:23 +0300 Subject: [PATCH 1/7] first try --- src/vector.cpp | 144 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/vector.cpp diff --git a/src/vector.cpp b/src/vector.cpp new file mode 100644 index 0000000..31b1eac --- /dev/null +++ b/src/vector.cpp @@ -0,0 +1,144 @@ +#include +#include "vector.h" +#include + +Vector::Vector() { + for(unsigned long i = 0; i < n; i++) { + coords_[i] = 0; + } +} + +Vector::Vector(double a) { + for(unsigned long i = 0; i < n; i++) { + coords_[i] = a; + } +} + +Vector::Vector(const Vector &B) { + for(unsigned long i = 0; i < n; i++) { + coords_[i] = B.coords_[i]; + } +} + +Vector & Vector::operator=(const Vector &B) { + for(unsigned long i = 0; i < n; i++) { + coords_[i] = B.coords_[i]; + } + return *this; +} + +double Vector::operator[](unsigned long i) const { + return coords_[i]; +} + +double & Vector::operator[](unsigned long i) { + return coords_[i]; +} + +Vector & Vector::operator+=(const Vector &B) { + for(unsigned long i = 0; i < n; i++) { + coords_[i] += B.coords_[i]; + } + return *this; +} + +Vector & Vector::operator-=(const Vector &B) { + for(unsigned long i = 0; i < n; i++) { + coords_[i] -= B.coords_[i]; + } + return *this; +} + +Vector & Vector::operator*=(double B) { + for(unsigned long i = 0; i < n; i++) { + coords_[i] *= B; + } + return *this; +} + +Vector & Vector::operator/=(double B) { + if (B == 0) { + printf("error, division 0"); + *this; + } + for(unsigned long i = 0; i < n; i++) { + coords_[i] /= B; + } + return *this; +} + +bool operator==(const Vector &left, const Vector &right) { + for(unsigned long i = 0; i < Vector::n; i++) { + if (left.coords_[i] != right.coords_[i]) { + return false; + } + } + return true; +} + +Vector operator+(const Vector &left, const Vector &right) { + Vector res; + for(unsigned long i = 0; i < Vector::n; i++) { + res.coords_[i] = left.coords_[i] + right.coords_[i]; + } + return res; +} + +Vector operator-(const Vector &left, const Vector &right) { + Vector res; + for(unsigned long i = 0; i < Vector::n; i++) { + res.coords_[i] = left.coords_[i] - right.coords_[i]; + } + return res; +} + +Vector operator*(const Vector &left, double A) { + Vector res; + for(unsigned long i = 0; i < Vector::n; i++) { + res.coords_[i] = left.coords_[i] * A; + } + return res; +} + +Vector operator*(double A, const Vector &right) { + Vector res; + for(unsigned long i = 0; i < Vector::n; i++) { + res.coords_[i] = A * right.coords_[i]; + } + return res; +} + +Vector operator/(const Vector &left, double A) { + if (A == 0) { + printf("error, division 0\n"); + } + Vector res; + for(unsigned long i = 0; i < Vector::n; i++) { + res.coords_[i] = left.coords_[i]/A; + } + return res; +} + +double operator^(const Vector &left, const Vector &right) { + double dot = 0; + for(unsigned long i = 0; i < Vector::n; i++) { + dot = dot + left.coords_[i]*right.coords_[i]; + } + return dot; +} + +Vector Vector::operator-() const { + Vector res; + for(unsigned long i = 0; i < n; i++) { + res[i] = -1*coords_[i]; + } + return res; +} + +bool operator!=(const Vector &left, const Vector &right) { + if (left == right) { + return false; + } + return true; +} + From 11c12a5f8f88ba1f90e8cf67b8d6ce8601fbd2e4 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Tue, 5 Jan 2016 17:49:09 +0300 Subject: [PATCH 2/7] travis-CI --- src/vector.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vector.cpp b/src/vector.cpp index 31b1eac..2895d19 100644 --- a/src/vector.cpp +++ b/src/vector.cpp @@ -5,6 +5,7 @@ Vector::Vector() { for(unsigned long i = 0; i < n; i++) { coords_[i] = 0; + } } From 3c28c068d2afa195159a41e580dd852ba7d69862 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Tue, 5 Jan 2016 17:57:14 +0300 Subject: [PATCH 3/7] travis-CI passed --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f536447..d147997 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # vector Linear space element representation +[![Build Status](https://travis-ci.org/Demitriy/vector.svg?branch=MyBranch)](https://travis-ci.org/Demitriy/vector) From 78e3b0d9fdb4d0813775eb53bb7f2439b7df21b7 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Tue, 5 Jan 2016 18:08:41 +0300 Subject: [PATCH 4/7] appviyor --- src/vector.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vector.cpp b/src/vector.cpp index 2895d19..31b1eac 100644 --- a/src/vector.cpp +++ b/src/vector.cpp @@ -5,7 +5,6 @@ Vector::Vector() { for(unsigned long i = 0; i < n; i++) { coords_[i] = 0; - } } From e44a0fd7d7417bbdb65585953a88bd49f04fbc65 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Tue, 5 Jan 2016 18:15:10 +0300 Subject: [PATCH 5/7] appveyor and travis - CI passed --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d147997..e245b98 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ # vector Linear space element representation [![Build Status](https://travis-ci.org/Demitriy/vector.svg?branch=MyBranch)](https://travis-ci.org/Demitriy/vector) +[![Build status](https://ci.appveyor.com/api/projects/status/t1hlcj3e9vqjp5f7?svg=true)](https://ci.appveyor.com/project/Demitriy/vector-0b8gv) From d83be190ed50b97b6ac73a32f6e5450f38d9ba0b Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Tue, 12 Jan 2016 16:36:19 +0300 Subject: [PATCH 6/7] change --- src/vector.cpp | 62 ++++++++++++-------------------------------------- 1 file changed, 14 insertions(+), 48 deletions(-) diff --git a/src/vector.cpp b/src/vector.cpp index 31b1eac..f0eb587 100644 --- a/src/vector.cpp +++ b/src/vector.cpp @@ -20,7 +20,7 @@ Vector::Vector(const Vector &B) { } } -Vector & Vector::operator=(const Vector &B) { +Vector &Vector::operator=(const Vector &B) { for(unsigned long i = 0; i < n; i++) { coords_[i] = B.coords_[i]; } @@ -31,36 +31,32 @@ double Vector::operator[](unsigned long i) const { return coords_[i]; } -double & Vector::operator[](unsigned long i) { +double &Vector::operator[](unsigned long i) { return coords_[i]; } -Vector & Vector::operator+=(const Vector &B) { +Vector &Vector::operator+=(const Vector &B) { for(unsigned long i = 0; i < n; i++) { coords_[i] += B.coords_[i]; } return *this; } -Vector & Vector::operator-=(const Vector &B) { +Vector &Vector::operator-=(const Vector &B) { for(unsigned long i = 0; i < n; i++) { coords_[i] -= B.coords_[i]; } return *this; } -Vector & Vector::operator*=(double B) { +Vector &Vector::operator*=(double B) { for(unsigned long i = 0; i < n; i++) { coords_[i] *= B; } return *this; } -Vector & Vector::operator/=(double B) { - if (B == 0) { - printf("error, division 0"); - *this; - } +Vector &Vector::operator/=(double B) { for(unsigned long i = 0; i < n; i++) { coords_[i] /= B; } @@ -77,68 +73,38 @@ bool operator==(const Vector &left, const Vector &right) { } Vector operator+(const Vector &left, const Vector &right) { - Vector res; - for(unsigned long i = 0; i < Vector::n; i++) { - res.coords_[i] = left.coords_[i] + right.coords_[i]; - } - return res; + return Vector(left) += right; } Vector operator-(const Vector &left, const Vector &right) { - Vector res; - for(unsigned long i = 0; i < Vector::n; i++) { - res.coords_[i] = left.coords_[i] - right.coords_[i]; - } - return res; + return Vector(left) -= right; } Vector operator*(const Vector &left, double A) { - Vector res; - for(unsigned long i = 0; i < Vector::n; i++) { - res.coords_[i] = left.coords_[i] * A; - } - return res; + return Vector(left) *= A; } Vector operator*(double A, const Vector &right) { - Vector res; - for(unsigned long i = 0; i < Vector::n; i++) { - res.coords_[i] = A * right.coords_[i]; - } - return res; + return right * A; } Vector operator/(const Vector &left, double A) { - if (A == 0) { - printf("error, division 0\n"); - } - Vector res; - for(unsigned long i = 0; i < Vector::n; i++) { - res.coords_[i] = left.coords_[i]/A; - } - return res; + return Vector(left) /= A; } double operator^(const Vector &left, const Vector &right) { double dot = 0; for(unsigned long i = 0; i < Vector::n; i++) { - dot = dot + left.coords_[i]*right.coords_[i]; + dot += left.coords_[i]*right.coords_[i]; } return dot; } Vector Vector::operator-() const { - Vector res; - for(unsigned long i = 0; i < n; i++) { - res[i] = -1*coords_[i]; - } - return res; + return Vector(*this) *= -1; } bool operator!=(const Vector &left, const Vector &right) { - if (left == right) { - return false; - } - return true; + return !(left == right); } From 92e41d2fa2df99bb6bc914c8ba425ce6432ec24f Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Tue, 12 Jan 2016 16:45:53 +0300 Subject: [PATCH 7/7] travis CI appveyor after corrections --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e245b98..6009c39 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ # vector Linear space element representation -[![Build Status](https://travis-ci.org/Demitriy/vector.svg?branch=MyBranch)](https://travis-ci.org/Demitriy/vector) -[![Build status](https://ci.appveyor.com/api/projects/status/t1hlcj3e9vqjp5f7?svg=true)](https://ci.appveyor.com/project/Demitriy/vector-0b8gv) +[![Build Status](https://travis-ci.org/Demitriy/vector.svg)](https://travis-ci.org/Demitriy/vector) +[![Build status](https://ci.appveyor.com/api/projects/status/tvujfqa7o74n1w8c?svg=true)](https://ci.appveyor.com/project/Demitriy/vector)