"Форматированная печать" - Free Pascal
Формулировка задачи:
Бодрого дня, господа.
Никак не могу справиться, казалось бы, элементарной задачей - нужно на экран вывести информацию в столбик так, чтобы строки в столбиках были одинаковой ширины.
Привожу пример (прошу сильно не пинать, т.к. пример очень условный):Подскажите - как же их сделать одинаковой ширины?
const n=10; var i:byte; mas:array[1..n] of string; a:longint; begin mas[1]:='один'; mas[1]:='два'; mas[1]:='три'; mas[1]:='четыре'; mas[1]:='пять'; mas[1]:='шесть'; a:=1; for i:=1 to n do begin a:=a*5; writeln('|',mas[i],'|':8,a,'|':6); end; end.
Решение задачи: «"Форматированная печать"»
textual
Листинг программы
function Utf8Length(const s: String): Integer; var c: Char; begin Result:=0; for c in s do Inc(Result,Ord(Byte(c) and $C0<>$80)); end;
Объяснение кода листинга программы
В данном коде реализована функция Utf8Length
, которая принимает на вход строку s
и возвращает количество байт, которое занимает эта строка в кодировке UTF-8.
Алгоритм работы функции следующий:
- Инициализируется переменная
Result
со значением 0. Она будет использоваться для подсчета количества байт. - Происходит итерация по каждому символу строки
s
. - Для каждого символа выполняется операция
Inc(Result,Ord(Byte(c) and $C0<>$80))
, которая увеличивает значение переменнойResult
на 1, если символc
не является байтовым символом в кодировке UTF-8 (то есть, его кодовое значение не равно 0x80). - По завершении итерации по всем символам строки, функция возвращает значение переменной
Result
. Строкаs
должна быть представлена в кодировке UTF-8. Если это не так, то результат работы функции может быть некорректным.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д