Рисование звёздочками букв z - Free Pascal
Формулировка задачи:
Привет.
Такая задача:
Вводится 2 числа k и n, где k-это ширина и высота буквы "z", а n- это кол-во нарисованных букв "z".
при k=7 и n=4, программа рисует звёздочками букву z размером 7 на 7 и со сдвигом в половину вниз ещё такие же 4 раза. Скриншот.
Нужно, что бы программа была гибкая, т.е. что бы программа могла бы нарисовать и при значениях k=103 n=50.
Заранее спасибо!Очень нужно!
Решение задачи: «Рисование звёздочками букв z»
textual
Листинг программы
const xm = 80; //размер вывода по горизонтали ym = 25; //размер вывода по вертикали var k, n, x, y, dx, dy, my, d: integer; scr: array [0..ym-1, 0..xm-1] of char; begin //ввод k и n с проверкой repeat repeat write('Размер буквы (1..', ym, '): '); readln(k) until k in [1..ym]; repeat write('Количество букв (1..', xm, '): '); readln(n) until n in [1..xm]; d := k div 2; //шаг смещения букв по вертикали my := d * (n + 1) + k mod 2 - 1; //максимальная позиция по вертикали - 1 if (k * n > xm) or (my >= ym) then writeln('Не помещается, повторите ввод.') until (k * n <= xm) and (my < ym); //формируем массив for y := 0 to ym - 1 do for x := 0 to xm - 1 do scr[y, x] := ' '; for y := 0 to n - 1 do for x := 0 to n - 1 do for dy := 0 to k - 1 do for dx := 0 to k - 1 do if (dy mod (k - 1) = 0) or (k - 1 - dy = dx) then scr[y * d + dy, y * k + dx] := '*'; //выводим for y := 0 to my do begin for x := 0 to k * n - 1 do write(scr[y, x]); if y < my then writeln end; readln end.
Объяснение кода листинга программы
- Задаются размеры вывода по горизонтали и вертикали с помощью переменных xm и ym.
- Вводятся размеры буквы и количество букв с помощью цикла repeat-readln.
- Вычисляется шаг смещения букв по вертикали d и максимальная позиция по вертикали my.
- Проверяется, поместится ли заданное количество букв в заданный размер. Если нет, выводится сообщение об ошибке.
- Формируется массив scr размером [ym-1][xm-1] с помощью циклов for.
- Внутренний цикл формирует звёздочки в виде буквы, проверяя условие для каждой позиции.
- Внешний цикл выводит получившийся массив на экран.
- Программа завершается чтением из консоли.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д