"Форматированная печать" - 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. Алгоритм работы функции следующий:

  1. Инициализируется переменная Result со значением 0. Она будет использоваться для подсчета количества байт.
  2. Происходит итерация по каждому символу строки s.
  3. Для каждого символа выполняется операция Inc(Result,Ord(Byte(c) and $C0<>$80)), которая увеличивает значение переменной Result на 1, если символ c не является байтовым символом в кодировке UTF-8 (то есть, его кодовое значение не равно 0x80).
  4. По завершении итерации по всем символам строки, функция возвращает значение переменной Result. Строка s должна быть представлена в кодировке UTF-8. Если это не так, то результат работы функции может быть некорректным.

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


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

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

10   голосов , оценка 4.4 из 5
Похожие ответы