diff --git a/exercises/4/seminar/4/Matrix/Matrix.cbp b/exercises/4/seminar/4/Matrix/Matrix.cbp new file mode 100644 index 0000000..0ca3aba --- /dev/null +++ b/exercises/4/seminar/4/Matrix/Matrix.cbp @@ -0,0 +1,29 @@ + + + + + + diff --git a/exercises/4/seminar/4/Matrix/Matrix.depend b/exercises/4/seminar/4/Matrix/Matrix.depend new file mode 100644 index 0000000..7c6617d --- /dev/null +++ b/exercises/4/seminar/4/Matrix/Matrix.depend @@ -0,0 +1,18 @@ +# depslib dependency file v1.0 +1584117413 source:c:\users\dtrz\desktop\sem3\new folder\matrix\rational.cpp + "ration.hpp" + +1584117865 c:\users\dtrz\desktop\sem3\new folder\matrix\ration.hpp + +1584117687 source:c:\users\dtrz\desktop\sem3\new folder\matrix\main.cpp + + "ration.hpp" + "matrix.hpp" + +1584117920 c:\users\dtrz\desktop\sem3\new folder\matrix\matrix.hpp + "ration.hpp" + +1584117754 source:c:\users\dtrz\desktop\sem3\new folder\matrix\matrix.cpp + + "matrix.hpp" + diff --git a/exercises/4/seminar/4/Matrix/Matrix.layout b/exercises/4/seminar/4/Matrix/Matrix.layout new file mode 100644 index 0000000..83ca1ca --- /dev/null +++ b/exercises/4/seminar/4/Matrix/Matrix.layout @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/exercises/4/seminar/4/Matrix/bin/Debug/Matrix.exe b/exercises/4/seminar/4/Matrix/bin/Debug/Matrix.exe new file mode 100644 index 0000000..2a28c16 Binary files /dev/null and b/exercises/4/seminar/4/Matrix/bin/Debug/Matrix.exe differ diff --git a/exercises/4/seminar/4/Matrix/main.cpp b/exercises/4/seminar/4/Matrix/main.cpp new file mode 100644 index 0000000..bb6323c --- /dev/null +++ b/exercises/4/seminar/4/Matrix/main.cpp @@ -0,0 +1,21 @@ +#include +#include "ration.hpp" +#include "matrix.hpp" +using namespace std; + +int main () { + Rational r1(5, 2), r2(1, 1); + Rational r3, r4; + + Rational data[2][2]; + data[0][0] = r1; + data[0][1] = r2; + data[1][0] = r3; + data[1][1] = r4; + + Matrix m1(data, 2, 2); + + cout<< r3.getA()<< " "<< r3.getB()<< endl; + + return 0; +} diff --git a/exercises/4/seminar/4/Matrix/matrix.cpp b/exercises/4/seminar/4/Matrix/matrix.cpp new file mode 100644 index 0000000..8f66e95 --- /dev/null +++ b/exercises/4/seminar/4/Matrix/matrix.cpp @@ -0,0 +1,60 @@ +#include +#include "matrix.hpp" + + +void Matrix::clearData() { + for(int i = 0; i< N; ++i) { + delete [] data[i]; + } + delete [] data; +} + +void Matrix::copyData(const Matrix& m) { + data = new Rational*[N]; + for(int i = 0; i< m.N; ++i) { + data[i] = new Rational[m.M]; + } + + for(int i = 0; i< m.N; ++i) { + for(int j = 0; j< m.M; ++j) { + data[i][j] = m.data[i][j]; + } + } +} + +Matrix::Matrix(Rational** data, int N, int M): data(NULL), N(N), M(M) { + if(data == NULL) { + return; + } + + this->data = new Rational*[N]; + for(int i = 0; i< N; ++i) { + this->data[i] = new Rational[M]; + } + + for(int i = 0; i< N; ++i) { + for(int j = 0; j< M; ++j) { + this->data[i][j] = data[i][j]; + } + } +} + +Matrix::Matrix(const Matrix& m) { + copyData(); +} + +Matrix::Matrix& operator=(const Matrix& m) { + if(this == &m) { + return *this; + } + clearData(); + copyData(m); + return *this; +} + +Matrix::~Matrix() { + for(int i = 0; i< N; ++i) { + delete [] data[i]; + } + delete [] data; +} diff --git a/exercises/4/seminar/4/Matrix/matrix.hpp b/exercises/4/seminar/4/Matrix/matrix.hpp new file mode 100644 index 0000000..969c034 --- /dev/null +++ b/exercises/4/seminar/4/Matrix/matrix.hpp @@ -0,0 +1,20 @@ +#include +#include "ration.hpp" +#ifndef MATRIX +#define MATRIX + +class Matrix { + int N, M; + Rational** data; + + void clearData(); + void copyData(const Matrix& m); + +public: + Matrix(Rational** data = NULL, int N = 0, int M = 0); + Matrix(const Matrix& m); + Matrix& operator=(const Matrix& m); + ~Matrix(); +}; + +#endif diff --git a/exercises/4/seminar/4/Matrix/obj/Debug/main.o b/exercises/4/seminar/4/Matrix/obj/Debug/main.o new file mode 100644 index 0000000..af3eb6c Binary files /dev/null and b/exercises/4/seminar/4/Matrix/obj/Debug/main.o differ diff --git a/exercises/4/seminar/4/Matrix/obj/Debug/matrix.o b/exercises/4/seminar/4/Matrix/obj/Debug/matrix.o new file mode 100644 index 0000000..ee28bd9 Binary files /dev/null and b/exercises/4/seminar/4/Matrix/obj/Debug/matrix.o differ diff --git a/exercises/4/seminar/4/Matrix/obj/Debug/rational.o b/exercises/4/seminar/4/Matrix/obj/Debug/rational.o new file mode 100644 index 0000000..19030fa Binary files /dev/null and b/exercises/4/seminar/4/Matrix/obj/Debug/rational.o differ diff --git a/exercises/4/seminar/4/Matrix/ration.hpp b/exercises/4/seminar/4/Matrix/ration.hpp new file mode 100644 index 0000000..209afb5 --- /dev/null +++ b/exercises/4/seminar/4/Matrix/ration.hpp @@ -0,0 +1,16 @@ +#ifndef RATIONAL +#define RATIONAL + +class Rational { + int a; + int b; + +public: + + int getA() const; + int getB() const; + + Rational(int c = 0, int d = 1); +}; + +#endif diff --git a/exercises/4/seminar/4/Matrix/rational.cpp b/exercises/4/seminar/4/Matrix/rational.cpp new file mode 100644 index 0000000..52e1ee9 --- /dev/null +++ b/exercises/4/seminar/4/Matrix/rational.cpp @@ -0,0 +1,18 @@ +#include "ration.hpp" + +int Rational::getA() const { + return a; +} + +int Rational::getB() const { + return b; +} + +Rational::Rational(int c, int d) { + a = c; + if(b == 0) { + b = 1; + } else { + b = d; + } +} diff --git a/exercises/4/seminar/4/string.cpp b/exercises/4/seminar/4/string.cpp new file mode 100644 index 0000000..5321068 --- /dev/null +++ b/exercises/4/seminar/4/string.cpp @@ -0,0 +1,105 @@ +#include +#include +using namespace std; + +int strlen(const char* str) { + int i = 0; + for(; str[i] != '\0'; ++i); + return i; +} + +void strcpy(char* destination, const char* source) { + int i = 0; + for(; source[i] != '\0'; ++i) { + destination[i] = source[i]; + } + destination[i] = '\0'; +} + +// strlen, strcpy, strcat +class String { + +private: + char* data; + int length; + + void copyData(const String& str) { + length = str.length; + this->data = new char[length + 1]; + strcpy(this->data, str.data); + } + + void clearData() { + delete [] data; + } + +public: + // resource aquisition is initialization + String(const char* data = ""): data(NULL), length(0) { + length = strlen(data); + this->data = new char[length + 1]; + strcpy(this->data, data); + } + + String(const String& str) { + copyData(str); + } + + String& operator=(const String& str) { + if(this == &str) { + return *this; + } + clearData(); + copyData(str); + + return *this; + } + + ~String() { + clearData(); + } + + void strcat(const String& str) { + char* newData = new char[length + str.length + 1]; + for(int i = 0; data[i] != '\0'; ++i) { + newData[i] = data[i]; + } + cout<< length<< endl; + for(int i = 0; str.data[i] != '\0'; ++i) { + newData[i + length] = str.data[i]; + } + newData[length + str.length] = '\0'; + + delete [] data; + + data = newData; + length = length + str.length; + } + + static String strcat(const String& s1, const String& s2) { + String result; + result.strcat(s1); + result.strcat(s2); + return result; + } + + int getLength() const { + return length; + } + + const char* getData() const { + return data; + } +}; + +int main () { + String s1("str1"), s2("str2"); + + s1.strcat(s2); + cout<< s1.getData()<< endl; + + String s3 = String::strcat(s1, s2); + cout<< s3.getData()<< endl; + + return 0; +} diff --git a/exercises/4/seminar/4/stringBuild.cpp b/exercises/4/seminar/4/stringBuild.cpp new file mode 100644 index 0000000..2cdd741 --- /dev/null +++ b/exercises/4/seminar/4/stringBuild.cpp @@ -0,0 +1,36 @@ +#include +using namespace std; + +int strlen(const char* str) { + int i = 0; + for(; str[i] != '\0'; ++i); + return i; +} + +void strcpy(char* destination, const char* source) { + int i = 0; + for(; source[i] != '\0'; ++i) { + destination[i] = source[i]; + } + destination[i] = '\0'; +} + +class String { + char* data; + int length; + +public: + String(const char* data) {} + String(const String& str) = delete; + String& operator=(const String& str) = delete; + ~String() {} +}; + +int main () { + + String s1("str1"), s2("str2"); + + cout<< s1.getData()<< " "<< s2.getData()<< endl; + + return 0; +} diff --git a/exercises/4/seminar/4/test.cpp b/exercises/4/seminar/4/test.cpp new file mode 100644 index 0000000..1932411 --- /dev/null +++ b/exercises/4/seminar/4/test.cpp @@ -0,0 +1,18 @@ +#include +using namespace std; + +int main() { + char* arr = new char[10]; + for(int i = 0; i< 9; ++i) { + arr[i] = 'a' + i; + } + arr[9] = '\0'; + cout<< arr<< endl; + if(true) { + char* arr2 = arr; + delete [] arr2; + } + cout<< arr<< endl; + + return 0; +} diff --git a/exercises/4/seminar/4/test1.cpp b/exercises/4/seminar/4/test1.cpp new file mode 100644 index 0000000..cc2b3c0 --- /dev/null +++ b/exercises/4/seminar/4/test1.cpp @@ -0,0 +1,31 @@ + +#include +using namespace std; + +struct Str { + char* data; + + Str(const char* data) { + int len = 0; + for(; data[len] != '\0'; ++len); + this->data = new char[len + 1]; + for(int i = 0; i< len+1; ++i) { + this->data[i] = data[i]; + } + } + + ~Str() { + delete [] data; + }; +}; + +int main() { + Str str1("asdf"); + cout<< str1.data<< endl; + if(true) { + Str str2(str1); + } + cout<< str1.data<< endl; + + return 0; +}