From 7b7c97be0cba9282c01d6661e0eff394e7c0ebbb Mon Sep 17 00:00:00 2001 From: Paulo Custodio Date: Wed, 23 Jun 2021 21:51:59 +0100 Subject: Add C and C++ solutions to challenge 008 --- challenge-008/paulo-custodio/cpp/ch-2.cpp | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 challenge-008/paulo-custodio/cpp/ch-2.cpp (limited to 'challenge-008/paulo-custodio/cpp/ch-2.cpp') diff --git a/challenge-008/paulo-custodio/cpp/ch-2.cpp b/challenge-008/paulo-custodio/cpp/ch-2.cpp new file mode 100644 index 0000000000..aeca0d65e4 --- /dev/null +++ b/challenge-008/paulo-custodio/cpp/ch-2.cpp @@ -0,0 +1,38 @@ +/* +Challenge 008 + +Challenge #2 +Write a function, ‘center’, whose argument is a list of strings, which will +be lines of text. The function should insert spaces at the beginning of the +lines of text so that if they were printed, the text would be centered, and +return the modified lines. +*/ + +#include +#include +#include +using namespace std; + +void center(vector& lines) { + size_t max_len = 0; + + for (auto& line : lines) + if (line.size() > max_len) + max_len = line.size(); + + for (auto& line : lines) + line = string((max_len - static_cast(line.size())) / 2, ' ') + line; +} + +int main(int argc, char* argv[]) { + argc--; argv++; + + vector lines; + for (int i = 0; i < argc; i++) + lines.push_back(argv[i]); + + center(lines); + + for (auto& line : lines) + cout << line << endl; +} -- cgit