Вывести фигуру Z из символов (*) - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Каждая последующая фигура начинается с середины предыдущей, те c n div 2 +1.
Никак не могу разобраться со внутреннем циклом , а конкретно заставить Z выводится именно с середины предыдущей Z

Решение задачи: «Вывести фигуру Z из символов (*)»

textual
Листинг программы
  1. uses crt;
  2. const nm = 25; {высота дисплея в символах}
  3.       sp = 4; {пробел между Z}
  4. var n, k, i, j, x, y: integer;
  5. begin
  6.   repeat {ввод высоты с контролем}
  7.     write('n in [1..', nm, '];  n = ');
  8.     readln(n)
  9.   until (n >= 1) and (n <= nm);
  10.   repeat {ввод количества с контролем}
  11.     write('k > 0;  k = ');
  12.     readln(k)
  13.   until k > 0;
  14.   y := n; {координата Y низа букв}
  15.   n := n * 2; {коррекция n перед циклом}
  16.   x := 1; {начальная координата X нижнего левого угла буквы}
  17.   clrscr; {чистим экран}
  18.   while (k > 0) and (n > 1) do {цикл, пока количество и высота актуальны}
  19.     begin
  20.       n := n div 2 + n mod 2; {следующая высота буквы}
  21.       dec(k); {сколько букв осталось вывести}
  22.       for i := 0 to n - 1 do {цикл по приращению координаты X}
  23.         for j := 0 to 2 do {цикл вывода низа, диагонали и верха}
  24.           begin
  25.             gotoxy(x + i, y - j div 2 * (n - 1) - j mod 2 * i); {переход к координате}
  26.             write('*') {печать}
  27.           end;
  28.       x := x + n + sp; {следующая координата X нижнего левого угла буквы}
  29.     end;
  30.   gotoxy(x, y); {убираем курсор в эстетически оправданное место}
  31.   repeat until keypressed {ждём нажатия любой клавиши для выхода из программы}
  32. end.

Объяснение кода листинга программы

  1. Ввод высоты и количества символов для вывода.
  2. Инициализация переменной y значением n, где n — это высота дисплея.
  3. Корректировка значения n путем умножения на 2 и сохранения остатка от деления.
  4. Инициализация переменной x значением 1, что является начальной координатой нижнего левого угла буквы.
  5. Очистка экрана с помощью функции clrscr.
  6. Цикл, выполняющийся до тех пор, пока k больше 0 и n больше 1.
  7. Внутри цикла корректировка значения n путем деления на 2 и получения остатка от деления, что дает следующую высоту буквы.
  8. Уменьшение значения k на 1.
  9. Два вложенных цикла, первый итерации по i от 0 до n — 1, а второй итерации по j от 0 до 2.
  10. Внутри вложенных циклов переход к соответствующей координате с помощью функции gotoxy, и вывод символа * с помощью функции write.
  11. Увеличение значения x на n + sp, что является следующей координатой нижнего левого угла буквы.
  12. После окончания вложенных циклов переход к новой координате x и y с помощью функции gotoxy.
  13. Цикл, выполняющийся до тех пор, пока не будет нажата любая клавиша.
  14. Код ожидает ввода, пока не будет нажата клавиша, с помощью функции keypressed.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы