Рисование звёздочками букв z - Free Pascal

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

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

Привет. Такая задача: Вводится 2 числа k и n, где k-это ширина и высота буквы "z", а n- это кол-во нарисованных букв "z". при k=7 и n=4, программа рисует звёздочками букву z размером 7 на 7 и со сдвигом в половину вниз ещё такие же 4 раза. Скриншот. Нужно, что бы программа была гибкая, т.е. что бы программа могла бы нарисовать и при значениях k=103 n=50. Заранее спасибо!Очень нужно!

Решение задачи: «Рисование звёздочками букв z»

textual
Листинг программы
  1. const xm = 80; //размер вывода по горизонтали
  2.       ym = 25; //размер вывода по вертикали
  3. var k, n, x, y, dx, dy, my, d: integer;
  4.     scr: array [0..ym-1, 0..xm-1] of char;
  5. begin
  6.   //ввод k и n с проверкой
  7.   repeat
  8.     repeat
  9.       write('Размер буквы (1..', ym, '): ');
  10.       readln(k)
  11.     until k in [1..ym];
  12.     repeat
  13.       write('Количество букв (1..', xm, '): ');
  14.       readln(n)
  15.     until n in [1..xm];
  16.     d := k div 2; //шаг смещения букв по вертикали
  17.     my := d * (n + 1) + k mod 2 - 1; //максимальная позиция по вертикали - 1
  18.     if (k * n > xm) or (my >= ym) then writeln('Не помещается, повторите ввод.')
  19.   until (k * n <= xm) and (my < ym);
  20.   //формируем массив
  21.   for y := 0 to ym - 1 do
  22.     for x := 0 to xm - 1 do
  23.       scr[y, x] := ' ';
  24.   for y := 0 to n - 1 do
  25.     for x := 0 to n - 1 do
  26.       for dy := 0 to k - 1 do
  27.         for dx := 0 to k - 1 do
  28.           if (dy mod (k - 1) = 0) or (k - 1 - dy = dx)
  29.             then scr[y * d + dy, y * k + dx] := '*';
  30.   //выводим
  31.   for y := 0 to my do
  32.     begin
  33.       for x := 0 to k * n - 1 do write(scr[y, x]);
  34.       if y < my then writeln
  35.     end;
  36.   readln
  37. end.

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

  1. Задаются размеры вывода по горизонтали и вертикали с помощью переменных xm и ym.
  2. Вводятся размеры буквы и количество букв с помощью цикла repeat-readln.
  3. Вычисляется шаг смещения букв по вертикали d и максимальная позиция по вертикали my.
  4. Проверяется, поместится ли заданное количество букв в заданный размер. Если нет, выводится сообщение об ошибке.
  5. Формируется массив scr размером [ym-1][xm-1] с помощью циклов for.
  6. Внутренний цикл формирует звёздочки в виде буквы, проверяя условие для каждой позиции.
  7. Внешний цикл выводит получившийся массив на экран.
  8. Программа завершается чтением из консоли.

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


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

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

11   голосов , оценка 3.818 из 5

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

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

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