Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как нарисовать снежинку циклом в C++

Artur Tv Ученик (91), на голосовании 2 дня назад
Голосование за лучший ответ
svofard 61 Ученик (180) 1 месяц назад
#include <iostream>

int main() {
int size = 7; // Размер сетки (7x7)

for (int i = 0; i < size; ++i) {
for (int j = 0; j < size; ++j) {
// Условия для размещения '*'
if ((i == 0 && (j == 2 || j == 4)) ||
(i == 1 && (j == 1 || j == 3 || j == 5)) ||
(i == 2 && (j == 2 || j == 3 || j == 4)) ||
(i == 3) ||
(i == 4 && (j == 2 || j == 3 || j == 4)) ||
(i == 5 && (j == 1 || j == 3 || j == 5)) ||
(i == 6 && (j == 2 || j == 4)))
{
std::cout << "* ";
} else {
std::cout << " "; // Два пробела для выравнивания
}
}
std::cout << std::endl; // Переход на новую строку после каждой строки сет
ки
}

return 0;
}
Линкольн для Адвоката Мастер (2053) 1 месяц назад
С добрым утром! Эта "снежинка" - просто вывод символов по определённой схеме. Нужно два цикла: один по строкам, другой - внутри - по столбцам. Внутри проверяешь, нужно ли в этой позиции вывести звездочку или пробел

Типа такого:

#include <iostream>

using namespace std;

int main() {
for (int i = 0; i < 7; ++i) {
for (int j = 0; j < 7; ++j) {
// Тут пишем условия, когда печатать звездочку
if ((i == 0 && (j == 1 || j == 3 || j == 5)) || // Верхняя строка
(i == 1 && (j == 0 || j == 2 || j == 4 || j == 6)) || // Вторая строка и т.д.
(i == 2 && (j == 1 || j == 3 || j == 5)) ||
(i == 3 && (j == 2 || j == 3 || j == 4)) ||
(i == 4 && (j == 0 || j == 2 || j == 4 || j == 6)) ||
(i == 5 && (j == 1 || j == 3 || j == 5)) ||
(i == 6 && (j == 1 || j == 3 || j == 5))
) {
cout << "*";
} else {
cout << " ";
}
}
cout << endl; // Переход на новую строку
}
return 0;
}

Вместо кучи if можно использовать массив или функцию, которая по i и j определяет, что рисовать. Главное - понять, как индексы соотносятся с позициями звездочек
Тадасана Просветленный (44707) 1 месяц назад
Там всего 49 клеточек, что циклы-то плодить. Одним cout-ом всё и выведи на экран.
Ну или сделай цикл в одну итерацию, если по правилам игры его просят.
Джек Барден Знаток (251) 1 месяц назад
Это очень легко делается, если понимаешь основы матричной алгебры
 #include <iostream>  

void foo(int n)
{
using std::cout;
using std::exception;

if (n <= 3 || (n & 1) == 0) throw new exception();

for (size_t i = 0; i < n; ++i)
{
for (size_t j = 0; j < n; ++j)
{
(i == j || i + j == n - 1 || i == (n - 1) / 2 || j == (n - 1) / 2) ?
cout << " * " :
cout << " ";


}
cout << '\n';
}

}

int main()
{
foo(7);
}
Не Вася и не Петя Мудрец (13342) 3 недели назад
Бредовое задание, циклы используются для вывода динамических данных, а тут если написать программу циклом для вывода этой снежинки, то можно будет выводить только эту снежинку. Если нужно будет отобразить снежинку, которая больше, то все выше решения придётся переделывать.
Похожие вопросы