Подсчитать число строк в тексте - Turbo Pascal

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

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

Одно из возможных представлений "длинного" текста - это разделить его участки (строки) равной длины и создать массив ссылок на эти строки. Используя данное представление текста написать программу, печающую текст и подсчитывающую число строк в тексте.

Решение задачи: «Подсчитать число строк в тексте»

textual
Листинг программы
const
  delimiter = [#32, ',', '.', '!', ':'];
type
  wrd_info = record
    start, len: byte;
  end;
 
function get_words(s: string;
         var words: array of wrd_info): integer;
var
  count: integer;
 
  i, curr_len: byte;
 
begin
  count := -1; i := 1;
  while i <= length(s) do begin
 
    while (s[i] in delimiter) and (i <= length(s)) do inc(i);
 
    curr_len := 0;
    while not (s[i] in delimiter) and (i <= length(s)) do begin
      inc(i); inc(curr_len);
    end;
 
    if curr_len > 0 then begin
      inc(count);
      with words[count] do begin
        start := i - curr_len;
        len := curr_len
      end;
    end;
 
  end;
  get_words := count + 1;
end;
 
 
const
  max_word = 255;
var
  words: array[1 .. max_word] of wrd_info;
  i, n: integer;
 
const
  s: string = 'thats,,, all :: folks !!! bye...';
 
begin
  n := get_words(s, words);
  writeln('words:');
  for i := 1 to n do
    writeln(copy(s, words[i].start, words[i].len));
end.

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

  1. В начале кода объявляются необходимые переменные и константы.
  2. В функции get_words переменной words присваивается тип array of wrd_info. Это означает, что words будет массивом структур wrd_info.
  3. Переменная count инициализируется значением -1. Переменная i инициализируется значением 1.
  4. Затем начинается цикл while, который выполняется до тех пор, пока i не станет равным длине строки s. Внутри цикла происходит проверка: если текущий символ s[i] является одним из символов-разделителей (delimiter), то значение i увеличивается на единицу.
  5. После этого начинается вложенный цикл while, который выполняется до тех пор, пока символ s[i] не станет равным одному из символов-разделителей или не станет равным концу строки (s[i] <= length(s)). Внутри цикла происходит проверка: если символ s[i] не является символом-разделителем, то значения i и curr_len увеличиваются на единицу.
  6. Если после окончания вложенного цикла while значение curr_len больше нуля, то увеличивается значение count и для элемента массива words[count] устанавливаются значения start и len.
  7. После завершения внешнего цикла while функция get_words возвращает значение count + 1.
  8. В основной части кода объявляется строка s и вызывается функция get_words с этой строкой и массивом words. Затем выводится количество слов в строке s.
  9. Для вывода каждого слова выводится часть строки от start до len включительно.

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


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

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

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