aboutsummaryrefslogtreecommitdiff
path: root/challenge-011/paulo-custodio/cpp/ch-2.cpp
diff options
context:
space:
mode:
authorPaulo Custodio <pauloscustodio@gmail.com>2021-06-27 14:47:40 +0100
committerPaulo Custodio <pauloscustodio@gmail.com>2021-06-27 14:47:40 +0100
commit51109a5e84bc635dabe896eeafbca10909db095c (patch)
treef9f62651aec348c1539ab906770c254cf061f273 /challenge-011/paulo-custodio/cpp/ch-2.cpp
parent553115b6b775de8fa1f94b359857e41922d86925 (diff)
downloadperlweeklychallenge-club-51109a5e84bc635dabe896eeafbca10909db095c.tar.gz
perlweeklychallenge-club-51109a5e84bc635dabe896eeafbca10909db095c.tar.bz2
perlweeklychallenge-club-51109a5e84bc635dabe896eeafbca10909db095c.zip
Add C and C++ solutions to challenge 011
Diffstat (limited to 'challenge-011/paulo-custodio/cpp/ch-2.cpp')
-rw-r--r--challenge-011/paulo-custodio/cpp/ch-2.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/challenge-011/paulo-custodio/cpp/ch-2.cpp b/challenge-011/paulo-custodio/cpp/ch-2.cpp
new file mode 100644
index 0000000000..d2847da6ec
--- /dev/null
+++ b/challenge-011/paulo-custodio/cpp/ch-2.cpp
@@ -0,0 +1,49 @@
+/*
+Challenge 011
+
+Challenge #2
+Write a script to create an Indentity Matrix for the given size. For example,
+if the size is 4, then create Identity Matrix 4x4. For more information about
+Indentity Matrix, please read the wiki page.
+*/
+
+#include <iostream>
+#include <vector>
+using namespace std;
+
+vector<vector<int>> identity_matrix(int n) {
+ vector<vector<int>> id;
+ for (int row = 0; row < n; row++) {
+ id.push_back({});
+ for (int col = 0; col < n; col++)
+ id[row].push_back(col == row ? 1 : 0);
+ }
+ return id;
+}
+
+void print_matrix(ostream& os, vector<vector<int>>& m) {
+ os << "[";
+ const char* row_sep = "";
+ for (size_t row = 0; row < m.size(); row++) {
+ os << row_sep << "[";
+ row_sep = ",\n ";
+ const char* col_sep = "";
+ for (size_t col = 0; col < m[row].size(); col++) {
+ os << col_sep << m[row][col];
+ col_sep = ", ";
+ }
+ os << "]";
+ }
+ os << "]\n";
+}
+
+int main(int argc, char* argv[]) {
+ int n = 0;
+ if (argc == 2)
+ n = atoi(argv[1]);
+ if (n < 1)
+ n = 4;
+
+ vector<vector<int>> id = identity_matrix(n);
+ print_matrix(cout, id);
+}