Программа должна нарисовать домик, как показано на рисунке 1. Строительным материалом являются: символы слэша (прямой /
, обратный , вертикальный
|
), знак минуса, символ подчёркивания.
Используйте управляющие символы новой строки и табуляции. Для решения этой задачи вам могут понадобятся знания об использовании управляющих символов в С++, которые вы можете получить, прочитав у нас на сайте статью.
Рисунок 1 — Управляющие символы С++
Вот что у вас должно получиться, когда вы решите данную задачу. Вывод программы не обязательно должен быть идентичный данному, но, все же, у вас должно получиться нечто, похожее на домик.
Вот первое решение данной задачи, оно же и самое простое.
#include <iostream> using namespace std; int main(int argc,char *argv[]) { cout << "t House:nn"; cout << "t / \n"; cout << "t / \n"; cout << "t / \n"; cout << "t /------ \n"; cout << "t / | | \n"; cout << "t | | \n"; cout << "t | | \n"; cout << "t |____| \n"; system("PAUSE"); return 0; }
У этой задачи есть еще одно решение, не самое простое, но все же интересное. Это решение нам любезно согласился предоставить пользователь нашего сайта — Dred. Огромное спасибо ему за это. Смотрим код ниже:
/* Использование escape-последовательностей для рисования домика в консольном режиме */ #include <iostream> /* директивой препроцессора подключаем заголовочный файл с определением объектов cin и cout */ using std::cout; // подключаем объекты стандартного пространства имен using std::endl; using std::cin; int main() // заголовок главной функции программы { // определяем в массиве рисуемый объект int dom [][10]={ {0,0,0,0,1,2,0,0,0,0}, {0,0,0,1,0,0,2,0,0,0}, {0,0,1,0,0,0,0,2,0,0}, {0,1,3,3,3,3,3,3,2,0}, {1,0,4,0,0,0,0,4,0,2}, {0,0,4,0,0,0,0,4,0,0}, {0,0,4,0,0,0,0,4,0,0}, {0,0,4,0,0,0,0,4,0,0}, {0,0,4,0,0,0,0,4,0,0}, {0,0,4,5,5,5,5,4,0,0}, }; char symbol [6]={' ','/','','--','|','_'}; // массив символов рисования // рисуем объект for(int i=0;i<10;i++) //цикл по строкам { for(int j=0;j<10;j++) //цикл по столбцам { switch(dom[i][j]) { case 0: cout<<symbol[0];continue; case 1: cout<<symbol[1];continue; case 2: cout<<symbol[2];continue; case 3: cout<<symbol[3];continue; case 4: cout<<symbol[4];continue; case 5: cout<<symbol[5];continue; } } cout<<endl; } cin.get(); return 0; }
Как видите суть данного решения сводится к образованию своеобразной маски, маской я называю двумерный массив. То есть, если вывести на экран этот массив, и вместо цифр поставить соответствующие символы, получим домик.
Заметьте, что в этом исходнике приятно читать код, это потому, что автор данной программы старается соблюдать хороший стиль программирования. Что это значит? Он ставит отступы, комментарии и дает осмысленные имена переменным. Это огромный плюс, особенно для начинающего программиста.
House: /\ / \ / \ /------\ / | | \ | | | | |____|
Комментарии
rigitek
#include<iostream>
using namespace std;
int main()
{
int i;
int niz = 205, nlugol = 200, npugol = 188;
int stena = 186, vnyt = 253;
int trava = 178, vozd = 176;
int vlugol = 187, vpugol = 201;
int kl = 47, kp = 92;
{
for (i = 0;i < 14;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
cout << static_cast<char>(kp);
for (i = 0;i < 14;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 13;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 2;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 13;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 12;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 4;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 12;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 11;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 6;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 11;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 10;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 8;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 10;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 9;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 10;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 9;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 8;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 12;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 8;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 7;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 14;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 7;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 6;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 16;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 6;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 4;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 20;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 4;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 3;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 22;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 3;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 2;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(kl);
for (i = 0;i < 24;i++)//нижняя часть
{
cout << » «;
}
cout << static_cast<char>(kp);
for (i = 0;i < 2;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 2;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(niz);
cout << static_cast<char>(niz);
cout << static_cast<char>(niz);
cout << static_cast<char>(vlugol);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(vpugol);
cout << static_cast<char>(niz);
cout << static_cast<char>(niz);
cout << static_cast<char>(niz);
for (i = 0;i < 2;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(stena);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(vnyt);
}
cout << static_cast<char>(stena);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
{
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << static_cast<char>(nlugol);
for (i = 0;i < 18;i++)//нижняя часть
{
cout << static_cast<char>(niz);
}
cout << static_cast<char>(npugol);
for (i = 0;i < 5;i++)//воздух
{
cout << static_cast<char>(vozd);
}
cout << endl;
}
cout << endl;
return 0;
}
Tobi Fisher
На основе решения сделал ёлку , особо не чего сам не сделал но хотя бы для себя разобрался во многом сайт хороший
#include «stdafx.h»
#include <iostream>
using namespace std;
int main() //заголовок главной функции программы
{
setlocale(LC_ALL, «RUS»); // могу использовать русский текст ввод\ввывод
cout << «\t\t\t Учимся рисовать с помощью кода \n\n\n» << endl;
// определяем в массиве рисуемый объект
int risunok[][34] = { { 0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,5,0,0,0,5,0,0,0,0,0,0 },//34 —
{ 0,0,5,0,0,0,0,0,0,0,5,0,0,5,0,1,3,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,5,0,0,5,0,0,0,0,0,0,1,0,3,3,0,2,0,0,0,5,0,0,0,0,0,0,5,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,5,0,1,0,0,3,3,0,0,2,0,0,0,0,5,0,0,0,0,0,0,5,0 },
{ 0,0,5,0,0,0,0,0,0,0,0,0,1,4,4,4,3,3,4,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,1,3,3,2,0,0,0,0,5,0,0,0,5,0,0,0,0,5,0 },
{ 0,0,5,0,0,5,0,0,0,0,0,0,0,0,1,0,3,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,5,0,0,0,0,0,0,0,0,0,1,0,0,3,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,5,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,3,0,0,0,2,0,0,5,0,0,0,0,5,0,0,0,0 },
{ 0,5,0,0,0,5,0,0,0,0,0,1,0,0,0,0,3,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,3,3,0,0,0,0,0,2,0,0,0,5,0,0,0,5,0,5 },
{ 0,0,0,5,0,0,0,0,0,1,0,0,0,0,0,0,3,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,5,0,0,1,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,2,0,0,0,0,0,0,0,0 },
{ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,5,0,0,0,0,0,0,0,0,1,0,3,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,3,0,0,2,0,0,0,0,0,0,0,0,0,5,0,0,0 },
{ 0,0,5,0,0,0,0,0,0,0,0,0,1,0,0,0,3,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,3,3,0,0,0,0,2,0,0,5,0,0,5,0,0,0,5,0 },
{ 0,0,0,0,5,0,0,0,0,0,1,0,0,0,0,0,3,3,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,5,0,0,0,0,0,0,1,0,0,0,0,0,0,3,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0 },
{ 0,0,5,0,0,0,0,1,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,2,0,0,5,0,0,0,0 },
{ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0 },
{ 5,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0 },
{ 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0 },//35 |
{ 0,0,0,1,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,2,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
char symbol[6] = { ‘ ‘,’/’, ‘\/’ ,’|’,’__’,’*’ };
//рисуем объект
for (int i = 0; i < 34; i++)//цикл по строкам
{
for (int j = 0; j < 35; j++)//цикл по столбцам
{
switch (risunok[i][j])
{
case 0: cout << symbol[0]; continue;
case 1: cout << symbol[1]; continue;
case 2: cout << symbol[2]; continue;
case 3: cout << symbol[3]; continue;
case 4: cout << symbol[4]; continue;
case 5: cout << symbol[5]; continue;
}
}
cout << endl;
}
system(«pause»);
return 0;
}
DanilSava
Теперь рисуем слешами / \ —
//рисуем домик
#include<iostream>
#include<conio.h>
using namespace std;
int x, y, z;
void xy(int y, int x)// функция перемещение курсора по координатам
{
for (int i = 0; i<y; i++)
cout << endl;
for (int j = 0; j<x; j++)
cout << » «;
}
int main()
{
cout << «risuem domik»;
cout << «\nvedite koordinat y=»; cin >> y; //ввод координат начальнй точки по вертикали
cout << «\nvedite koordinat x=»; cin >> x;//ввод координат начальнй точки по горизонтали
cout << «\nvedite razmer z=»; cin >> z;// размер домика
for (int k = 0; k<(z + 1); k++) // цикл рисования
{
if (k == 0) // верхушка
{
xy(y, x); cout << «*»;
}
else if (k>0 && k<z)
{
xy(1, (x — k)); cout << «/»; // лнвая крыша
xy(0, k + k); cout << «\\»; // правая крыша
}
else
{
xy(1, x — z — 1);
for (int l = 0; l<(z); l++)
{
xy(0, 1); cout << «—«;
}
}
}
for (int k = 0; k<(z + 1); k++) // рисование стен
{
xy(1, (x — z)); cout << «|»;
xy(0, z + z); cout << «|»;
}
xy(1, x — z — 1);
for (int l = 0; l<(z); l++)
{
xy(0, 1); cout << «—«; // рисование пол
}
cout << endl;
_getch();
}
DanilSava
Я нарисовал домик звездочками.
Координаты и размер домика задаются в параметрах.
Перемещение курсора задается функцией.
//рисуем домик
#include<iostream>
#include<conio.h>
using namespace std;
int x, y, z;
void xy(int y, int x)
{
for (int i = 0; i<y; i++)
cout << endl;
for (int j = 0; j<x; j++)
cout << » «;
}
int main()
{
cout << «risuem domik»;
cout << «\nvedite koordinat y=»; cin >> y;
cout << «\nvedite koordinat x=»; cin >> x;
cout << «\nvedite razmer z=»; cin >> z;
for (int k = 0; k<(z + 1); k++)
{
if (k == 0)
{
xy(y, x); cout << «*»;
}
else if (k>0 && k<z)
{
xy(1, (x — k)); cout << «*»;
xy(0, k + k); cout << «*»;
}
else
{
xy(1, x — z — 1);
for (int l = 0; l<(1 + z); l++)
{
xy(0, 1); cout << «* «;
}
}
}
for (int k = 0; k<(z + 1); k++)
{
xy(1, (x — z)); cout << «*»;
xy(0, z + z); cout << «*»;
}
xy(1, x — z — 1);
for (int l = 0; l<(1 + z); l++)
{
xy(0, 1); cout << «* «;
}
cout << endl;
_getch();
}
cppg0d