Подсчитать число строк в тексте - 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
включительно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д