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

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

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

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

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

textual
Листинг программы
  1. const
  2.   delimiter = [#32, ',', '.', '!', ':'];
  3. type
  4.   wrd_info = record
  5.     start, len: byte;
  6.   end;
  7.  
  8. function get_words(s: string;
  9.          var words: array of wrd_info): integer;
  10. var
  11.   count: integer;
  12.  
  13.   i, curr_len: byte;
  14.  
  15. begin
  16.   count := -1; i := 1;
  17.   while i <= length(s) do begin
  18.  
  19.     while (s[i] in delimiter) and (i <= length(s)) do inc(i);
  20.  
  21.     curr_len := 0;
  22.     while not (s[i] in delimiter) and (i <= length(s)) do begin
  23.       inc(i); inc(curr_len);
  24.     end;
  25.  
  26.     if curr_len > 0 then begin
  27.       inc(count);
  28.       with words[count] do begin
  29.         start := i - curr_len;
  30.         len := curr_len
  31.       end;
  32.     end;
  33.  
  34.   end;
  35.   get_words := count + 1;
  36. end;
  37.  
  38.  
  39. const
  40.   max_word = 255;
  41. var
  42.   words: array[1 .. max_word] of wrd_info;
  43.   i, n: integer;
  44.  
  45. const
  46.   s: string = 'thats,,, all :: folks !!! bye...';
  47.  
  48. begin
  49.   n := get_words(s, words);
  50.   writeln('words:');
  51.   for i := 1 to n do
  52.     writeln(copy(s, words[i].start, words[i].len));
  53. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы