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