Текстовый ProgressBar - Pascal

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

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

Извиняюсь если тема уже создавалась. Мне тут хочется узнать как можно сделать текстовой ProgressBar в консольном приложение проще говоря на паскале и желательно без использования дополнительных модулей. Вот в таком стиле:
[*##### 50 % -----*]
Правдо с заданым количеством символов (имеется в виду # и -)

Решение задачи: «Текстовый ProgressBar»

textual
Листинг программы
{$mode ObjFpc}
uses Crt;
 
function pBar(w, p: Integer): String;
var t: String[7];
begin
  Str(p,t); t:=t+'%';
  SetLength(Result,w);
  p:=Round(w*p/100); if p>w then p:=w;
  FillChar(Result[1],p,'#');
  FillChar(Result[p+1],w-p,'_');
  if Length(t)<=w then
    Move(t[1],Result[1+(1+w-Length(t)) div 2],Length(t));
end;
 
var i: Integer;
begin
  for i:=0 to 100 do begin
    Write(#13,'[',pBar(20,i),']'); Delay(50);
  end;
end.

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

  1. Объявляется функция pBar с параметрами w (ширина прогресс-бара) и p (процент выполнения).
  2. Объявляется переменная t типа String[7].
  3. Преобразуется значение переменной p в строку и добавляется символ процента в конец строки.
  4. Задается длина результата как w.
  5. Вычисляется значение p как округленное значение отношения w*p/100, при этом если p больше w, то p принимает значение w.
  6. Заполняется прогресс-бар символами # в количестве p и символами _ в оставшейся части.
  7. Если длина строки t меньше или равна w, то строка t сдвигается по центру результата.
  8. Осуществляется цикл от 0 до 100, в котором выводится прогресс-бар с использованием функции pBar.
  9. Производится задержка в 50 миллисекунд для каждого шага цикла.

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


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

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

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