Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

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

По дате
По рейтингу
Аватар пользователя
Знаток
3мес

Это очень легко делается, если понимаешь основы матричной алгебры

12345678910111213141516171819202122232425262728
 #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);  
} 
Аватар пользователя
Мудрец
3мес

Бредовое задание, циклы используются для вывода динамических данных, а тут если написать программу циклом для вывода этой снежинки, то можно будет выводить только эту снежинку. Если нужно будет отобразить снежинку, которая больше, то все выше решения придётся переделывать.

Аватар пользователя
Просветленный
3мес

Там всего 49 клеточек, что циклы-то плодить. Одним cout-ом всё и выведи на экран.
Ну или сделай цикл в одну итерацию, если по правилам игры его просят.

Аватар пользователя
Мастер
3мес

С добрым утром! Эта "снежинка" - просто вывод символов по определённой схеме. Нужно два цикла: один по строкам, другой - внутри - по столбцам. Внутри проверяешь, нужно ли в этой позиции вывести звездочку или пробел

Типа такого:

#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 определяет, что рисовать. Главное - понять, как индексы соотносятся с позициями звездочек