Рисунок "Ромб" в консоли - C (СИ)
Формулировка задачи:
Здравствуйте. Есть ромб, как из него убрать выделенную линию?
#include <stdio.h> int main (){ int H, h1, h2, h3, h4, h5, h6; int c1, c2, c3 ,c4, c5, c6; printf ("Введите высоту ромба:\t"); scanf ("%d", &H); H /= 2; h1 = H - (H - 1); h2 = H; h3 = H - (H - 1); h4 = 2 * H; for (c1 = 0; c1 < H; c1++, h2--, h1 +=2){ for (c2 = 0; c2 < h2; c2++){ printf ("@"); } for (c3 = 0; c3 < h1; c3++){ printf ("*"); } printf ("\n"); } for (c4 = 0; c4 < H; c4++, h3++, h4 -= 2){ for (c5 = 0; c5 < h3; c5++){ printf ("@"); } for (c6 = 0; c6 < h4 - 1; c6++){ printf ("*"); } printf ("\n"); } }
Решение задачи: «Рисунок "Ромб" в консоли»
textual
Листинг программы
#include <stdio.h> void main (void) { float H, h1, h2, h3, h4, h5, h6; int c1, c2, c3 ,c4, c5, c6, s; printf ("Enter hight of romb:\t"); scanf ("%f", &H); H /= 2; h1 = H - (H - 1); h2 = H; h3 = H - (H - 1); h4 = 2 * H; { s = H; if (s == H) H += 1; } for (c1 = 0; c1 < H; c1++, h2--, h1 += 2){ for (c2 = 0; c2 < h2; c2++){ printf ("@"); } for (c3 = 0; c3 < h1; c3++){ printf ("*"); } printf ("\n"); } for (c4 = 0; c4 < H; c4++, h3++, h4 -= 2){ for (c5 = 0; c5 < h3; c5++){ printf ("@"); } for (c6 = 0; c6 < h4 - 1; c6++){ printf ("*"); } printf ("\n"); } return; }
Объяснение кода листинга программы
- Включаем файл стандартного ввода/вывода
- Объявляем переменные:
- float H;
- int c1, c2, c3, c4, c5, c6, s;
- float h1, h2, h3, h4, h5, h6;
- Выводим сообщение и призыв к вводу высоты ромба
- Считываем значение переменной H с помощью функции scanf
- Вычисляем половину значения H и сохраняем в переменную H
- Вычисляем значения переменных h1, h2, h3, h4, h5, h6
- Создаем дополнительную переменную s, которая будет использоваться в цикле
- Если значение s равно H, то увеличиваем H на единицу
- Запускаем цикл, который будет выводить ромб с высотой H
- Внешний цикл c1 от 0 до H-1
- Внутренний цикл c2 от 0 до h2-1 (значение h2 уменьшается на каждой итерации внешнего цикла)
- Выводим символ
@
c2 раз - Внутренний цикл c3 от 0 до h1-1 (значение h1 увеличивается на каждой итерации внешнего цикла)
- Выводим символ
*
c3 раз
- Запускаем цикл, который будет выводить ромб с высотой H
- Внешний цикл c4 от 0 до H-1
- Внутренний цикл c5 от 0 до h3-1 (значение h3 уменьшается на каждой итерации внешнего цикла)
- Выводим символ
@
c5 раз - Внутренний цикл c6 от 0 до h4-2 (значение h4 уменьшается на каждой итерации внешнего цикла)
- Выводим символ
*
c6 раз
- Конец программы