Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Thomas Zeitlhofer
ESE_Zeitlhofer_Bajer
Commits
21e906d2
Commit
21e906d2
authored
May 24, 2020
by
Mario Bajer
Browse files
added changes based on feedback from haas.c
made +- const removed 2nd ()overload fixed binary error for multiplication
parent
fa51fdaa
Changes
3
Hide whitespace changes
Inline
Side-by-side
Matrix.cpp
View file @
21e906d2
...
...
@@ -36,6 +36,7 @@ void Matrix::print(){
int
Matrix
::
generateMatrix
(
int
dimension
){
dim
=
dimension
;
delete
[]
data
;
data
=
new
int
[
dim
*
dim
];
srand
(
time
(
NULL
));
for
(
int
i
=
0
;
i
<
dim
*
dim
;
i
++
)
...
...
@@ -59,29 +60,18 @@ int Matrix::generateMatrix(int dimension){
ifstream
in1
(
configloc
);
in1
>>
jconfig
;
// in.close();
this
->
ID
=
jconfig
[
"counter"
];
//rand() % 100;
// cout << "<p> this->ID=" << this->ID << endl;
this
->
ID
=
jconfig
[
"counter"
];
int
temp_ID
=
jconfig
[
"counter"
];
temp_ID
++
;
// cout << "<p> temp_ID=" << temp_ID << endl;
jconfig
[
"counter"
]
=
temp_ID
;
ofstream
writecounter
;
writecounter
.
open
(
configloc
);
writecounter
<<
jconfig
<<
endl
;
writecounter
.
close
();
// cout << "<p> counter in json=" << jconfig["counter"] << endl;
// cout << "<p>" << "post ID setzen" << "</p>" << endl;
string
folderpath
=
"Json/"
;
// string testpath = folderpath + to_string(this->ID);
// while(existsm(testpath)){
// cout << "<p>" << "File mit ID: " << this->ID << " existiert bereits!" << "</p>";
// this->ID = rand() % 100;
// testpath = folderpath + to_string(this->ID);
// }
folderpath
+=
to_string
(
this
->
ID
)
+
".json"
;
json
j
;
...
...
@@ -104,7 +94,6 @@ Matrix::Matrix(int dim) {
while
(
dim2
<
dim
)
dim2
*=
2
;
this
->
dim
=
dim2
;
// this->ID = 101;
this
->
data
=
new
int
[
dim
*
dim
];
...
...
@@ -113,21 +102,20 @@ Matrix::Matrix(int dim) {
}
Matrix
Matrix
::
operator
+
(
Matrix
b
)
{
Matrix
Matrix
::
operator
+
(
const
Matrix
&
b
)
const
{
Matrix
c
(
b
.
dim
);
for
(
int
i
=
0
;
i
<
b
.
dim
;
i
++
)
for
(
int
j
=
0
;
j
<
b
.
dim
;
j
++
)
c
(
i
,
j
)
=
(
*
this
)(
i
,
j
)
+
b
(
i
,
j
);
c
(
i
,
j
)
=
(
(
*
this
)(
i
,
j
)
+
b
(
i
,
j
)
)
%
2
;
return
c
;
}
Matrix
Matrix
::
operator
-
(
Matrix
b
)
{
Matrix
Matrix
::
operator
-
(
const
Matrix
&
b
)
const
{
Matrix
c
(
b
.
dim
);
// this->dim = b.dim;
for
(
int
i
=
0
;
i
<
this
->
dim
;
i
++
)
for
(
int
j
=
0
;
j
<
this
->
dim
;
j
++
)
c
(
i
,
j
)
=
(
*
this
)(
i
,
j
)
-
b
(
i
,
j
);
c
(
i
,
j
)
=
(
(
*
this
)(
i
,
j
)
-
b
(
i
,
j
)
)
%
2
;
return
c
;
}
\ No newline at end of file
Matrix.hpp
View file @
21e906d2
...
...
@@ -24,25 +24,25 @@ using json = nlohmann::json;
*/
class
Matrix
{
public:
Matrix
(
int
dim
);
explicit
Matrix
(
int
dim
);
int
ID
;
int
ID
{}
;
int
dim
;
int
*
data
;
int
generateMatrix
(
int
dimension
);
void
print
();
inline
int
&
operator
()(
unsigned
row
,
unsigned
col
)
{
inline
int
&
operator
()(
unsigned
row
,
unsigned
col
)
const
{
return
data
[
dim
*
row
+
col
];
}
inline
int
operator
()(
unsigned
row
,
unsigned
col
)
const
{
return
data
[
dim
*
row
+
col
];
}
//
inline int operator()(unsigned row, unsigned col) const {
//
return data[dim*row + col];
//
}
Matrix
operator
+
(
Matrix
b
);
Matrix
operator
+
(
const
Matrix
&
b
)
const
;
Matrix
operator
-
(
Matrix
b
);
Matrix
operator
-
(
const
Matrix
&
b
)
const
;
private:
...
...
multi.cpp
View file @
21e906d2
...
...
@@ -14,7 +14,7 @@ Matrix mult_std(Matrix a, Matrix b) {
for
(
int
i
=
0
;
i
<
a
.
dim
;
i
++
)
for
(
int
k
=
0
;
k
<
a
.
dim
;
k
++
)
for
(
int
j
=
0
;
j
<
a
.
dim
;
j
++
)
c
(
i
,
j
)
=
(
c
(
i
,
j
)
+
a
(
i
,
k
)
*
b
(
k
,
j
))
%
2
;
c
(
i
,
j
)
=
(
c
(
i
,
j
)
+
(
a
(
i
,
k
)
*
b
(
k
,
j
))
)
%
2
;
return
c
;
}
...
...
@@ -26,7 +26,7 @@ Matrix get_part(int pi, int pj, Matrix m) {
for
(
int
i
=
0
;
i
<
p
.
dim
;
i
++
)
for
(
int
j
=
0
;
j
<
p
.
dim
;
j
++
)
p
(
i
,
j
)
=
m
(
i
+
pi
,
j
+
pj
);
p
(
i
,
j
)
=
m
(
i
+
pi
,
j
+
pj
)
%
2
;
return
p
;
}
...
...
@@ -37,7 +37,7 @@ void set_part(int pi, int pj, Matrix* m, Matrix p) {
for
(
int
i
=
0
;
i
<
p
.
dim
;
i
++
)
for
(
int
j
=
0
;
j
<
p
.
dim
;
j
++
)
(
*
m
)(
i
+
pi
,
j
+
pj
)
=
p
(
i
,
j
);
(
*
m
)(
i
+
pi
,
j
+
pj
)
=
p
(
i
,
j
)
%
2
;
}
Matrix
mult_strassen
(
Matrix
a
,
Matrix
b
)
{
...
...
@@ -74,7 +74,7 @@ Matrix mult_strassen(Matrix a, Matrix b) {
Matrix
run
(
Matrix
(
*
f
)(
Matrix
,
Matrix
),
Matrix
a
,
Matrix
b
)
{
Matrix
c
(
a
.
dim
);
if
(
a
.
dim
!=
b
.
dim
)
{
cout
<<
"Dimensions of Matrices do not match!"
<<
endl
;
cout
<<
"
ERROR:
Dimensions of Matrices do not match!"
<<
endl
;
return
c
;
}
c
=
f
(
a
,
b
);
...
...
@@ -86,10 +86,8 @@ int main(){
htmlHeader
(
"multi.cgi"
);
cout
<<
"<body>
\n
"
;
// cout << "<br>" << endl;
cout
<<
"<div class=
\"
container
\"
>"
<<
endl
;
string
matrixs1
=
""
;
string
matrixs2
=
""
;
string
matrixs3
=
""
;
...
...
@@ -97,7 +95,7 @@ int main(){
form_iterator
fi1
=
formData
.
getElement
(
"multi1"
);
if
(
!
fi1
->
isEmpty
()
&&
fi1
!=
(
*
formData
).
end
())
{
matrixs1
=
"Json/"
+
**
fi1
+
".json"
;
cout
<<
matrixs1
<<
endl
;
cout
<<
"Multiplying "
<<
matrixs1
<<
" with "
<<
endl
;
}
else
{
cout
<<
"Error on Matrix 1!"
<<
endl
;
...
...
@@ -106,7 +104,7 @@ int main(){
form_iterator
fi2
=
formData
.
getElement
(
"multi2"
);
if
(
!
fi2
->
isEmpty
()
&&
fi2
!=
(
*
formData
).
end
())
{
matrixs2
=
"Json/"
+
**
fi2
+
".json"
;
cout
<<
matrixs2
<<
endl
;
cout
<<
matrixs2
<<
" and storing result in "
<<
endl
;
}
else
{
cout
<<
"Error on Matrix 2!"
<<
endl
;
...
...
@@ -122,45 +120,27 @@ int main(){
cout
<<
"Error on Matrix 3 (result)!"
<<
endl
;
}
string
debug
=
"debug 0"
;
cout
<<
debug
<<
endl
;
json
json1
;
json
json2
;
json
json3
;
ifstream
in1
(
matrixs1
);
ifstream
in2
(
matrixs2
);
// ifstream in3(matrixs3);
in1
>>
json1
;
in2
>>
json2
;
cout
<<
"debug 1"
<<
endl
;
// cout << "<p style=\"word-wrap: break-word\">" << json1 << "</p>" << endl;
// cout << "<a href=\"http://localhost:80/index.html\">Back to Index</a>";
// cout << "<p style=\"word-wrap: break-word\">" << json1 << "</p>" << endl;
Matrix
matrix1
(
2
);
vector
<
int
>
v1
=
json1
[
"matrix"
];
const
vector
<
int
>
&
v1
=
json1
[
"matrix"
];
matrix1
.
ID
=
json1
[
"id"
];
matrix1
.
dim
=
json1
[
"dimension"
];
matrix1
.
data
=
&
v1
[
0
];
cout
<<
to_string
(
matrix1
.
ID
)
<<
endl
;
// matrix.print();
matrix1
.
data
=
const_cast
<
int
*>
(
&
v1
[
0
]);
Matrix
matrix2
(
2
);
vector
<
int
>
v2
=
json1
[
"matrix"
];
matrix2
.
ID
=
json1
[
"id"
];
matrix2
.
dim
=
json1
[
"dimension"
];
matrix2
.
data
=
&
v1
[
0
];
cout
<<
to_string
(
matrix2
.
ID
)
<<
endl
;
cout
<<
"debug 2"
<<
endl
;
const
vector
<
int
>&
v2
=
json1
[
"matrix"
];
matrix2
.
ID
=
json2
[
"id"
];
matrix2
.
dim
=
json2
[
"dimension"
];
matrix2
.
data
=
const_cast
<
int
*>
(
&
v2
[
0
]);
Matrix
result
(
matrix1
.
dim
);
cout
<<
"dim for result"
<<
to_string
(
result
.
dim
)
<<
endl
;
cout
<<
"debug 3"
<<
endl
;
result
=
run
(
mult_strassen
,
matrix1
,
matrix2
);
cout
<<
"debug 4"
;
// json3["id"] = result.ID;
// json3["dimension"] = result.dim;
int
size
=
result
.
dim
*
result
.
dim
;
vector
<
int
>
v
(
result
.
data
,
result
.
data
+
size
);
json3
[
"id"
]
=
targetID
;
...
...
@@ -171,27 +151,6 @@ int main(){
o
<<
json3
<<
endl
;
o
.
close
();
// string folderpath = "Json/";
// string testpath = folderpath + to_string(result.ID);
// while(existsm(testpath)){
// cout << "<p>" << "File mit ID: " << result.ID << " existiert bereits!" << "</p>";
// result.ID = rand() % 100;
// testpath = folderpath + to_string(result.ID);
// }
// folderpath += to_string(result.ID) + ".json";
// json3["id"] = result.ID;
// json3["dimension"] = result.dim;
// int size = result.dim * result.dim;
// vector<int> v(result.data, result.data + size);
// json3["matrix"] = v;
// ofstream o;
// o.open(folderpath);
// o << json3 << endl;
// o.close();
// result.generateMatrix(result.dim);
cout
<<
"Resulting Matrix saved at ID: "
+
to_string
(
result
.
ID
)
<<
endl
;
cout
<<
"</div>"
<<
endl
;
cout
<<
"<a href=
\"
http://localhost:80/index.html
\"
>Back to Index</a>"
;
cout
<<
"</body>
\n
"
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment