Zakhar_lutii, сказала Lisic,
а сумеешь ли ты написать программу, которая воспроизведет мою шедевральную
картину, название которой “Улитки после дождя?”. Помогите Zakhar_lutii справиться
с заданием, а именно: по заданному натуральному числу n вывести изображение, которое
имеет n строк и 2 * n – 1 столбцов, образованное символами улитка ‘@’ и символом ‘:’, как показано в примере.
Вход. Одно натуральное число
n (n > 1).
Выход. Вывести изображение n * (2 * n – 1).
Пример
входа |
Пример
выхода |
5 |
@@@@@@@@@ :@@@@@@@: ::@@@@@:: :::@@@::: ::::@:::: |
двойной цикл
Картина
содержит n строк.
В i-ой строке в позициях от l
до r будут выводиться символы улитки. В
остальных позициях строки выводим ‘:’. Изначально положим l = 1 и r = 2 * n – 1.
Первая строка состоит из одних улиток:
Для отображения
второй строки сдвинем указатели навстречу друг другу на одну
позицию (i++ и j--):
Следующая выводимая
строка имеет вид:
Продолжаем
выводить строки и сдвигать указатели пока не напечатаем всю картину.
Реализация алгоритма
Читаем входное значение n.
scanf("%d", &n);
Инициализируем
указатели l = 1 на начало и r = 2 * n – 1 на конец строки.
l = 1; r = 2 * n - 1;
Картина содержит n строк.
for (i = 1; i <= n; i++)
{
Выводим i-ую
строку. Символами
в позициях l ≤ j ≤ r являются
улитки. В
остальных позициях выводим ‘:’.
for (j = 1; j <= 2 *
n - 1; j++)
{
if (j
>= l && j <=
r) printf("@");
else printf(":");
}
Выводим символ ‘\n’ и уменьшаем
интервал улиток, передвигая указатели навстречу друг другу на одну позицию.
printf("\n");
l++; r--;
}