2022.11.01 House drawing
VikiePikie
c_cpp
3 years ago
944 B
9
Indexable
#include <iostream>
#define repeat(code, i, n) for (int i = 0; i < (n); i++) (code);
struct stroke {
stroke(int length, char symbol = ' ') : n(length), c(symbol) {}
int n; char c;
};
struct house {
house(int width, int height) : w(width / 2), h(height) {}
int w, h;
};
std::ostream& operator<< (std::ostream& out, const stroke& s) {
repeat((out << s.c), i, s.n);
return out;
}
std::ostream& operator<< (std::ostream& out, const house& h) {
repeat(out << stroke(h.w - i - 1) << "/" << stroke(2 * i) << "\\\n", i, h.w - 2);
repeat(out << " /" << stroke(2 * h.w - 4, '-') << "\\\n", i, 1);
repeat(out << "/ |" << stroke(2 * h.w - 6) /**/ << "| \\\n", i, 1);
repeat(out << "> |" << stroke(2 * h.w - 6) /**/ << "|\n", i, h.h - 2);
repeat(out << "> |" << stroke(2 * h.w - 6, '_') << "|\n", i, 1);
return out;
}
int main() {
std::cout << "House Drawing:\n" << house(30, 7) << "\n";
return 0;
}Editor is loading...