Используя процедуры, выделить в строке слова и вывести их потом в заданном формате - Turbo Pascal
Формулировка задачи:
Преобразовать строку, используя две подпрограммы: первая выделяет в строке слово, вторая выводить слово на экран в формате:
1_слово1
1_2_слово2
1_2_3_слово3 и так далее.
Слова в строке разделены знаками препинания и пробелами, которые могут стоять как по одиночке, так и несколько подряд
Программа написана, компиляция проходит успешно, однако она просто не работает.
Предложение ввода названия файла идет, а после этого ничего.
Ошибку найти сама не могу, возможно, кто-то сможет помочь.
Решение задачи: «Используя процедуры, выделить в строке слова и вывести их потом в заданном формате»
textual
Листинг программы
program LB6; const del=[' ',',','.','!','?','-']; type starray=array[1..50] of string; {массив для записи слов} var s,w,name,prob,n1:string; f:text; words:starray; l,i,n,k,p,code:integer; {l-длина строки, k-количество слов в строке} procedure vydelenie(s:string;l:integer;var k:integer); const del=[' ',',','.','!','?','-']; var w:string; i:integer; {процедура выделяет в строке слова и записывает их в массив} begin k:=0; w:=''; for i:=1 to l do begin if not (s[i] in del) then w:=w+s[i]; if (not (s[i-1] in del) and (s[i] in del) or (i=l)) then begin k:=k+1; words[k]:=w; w:=''; end; end; end; procedure format(var w:string; n,k:integer); var i,code:integer; prob,n1:string; {prob-промежуточное значение будущей выводимой строки, n1-число n в виде строковой переменной} begin for i:=1 to k do begin n:=1; while n<=i do begin str(n,n1); prob:=prob+n1+' '; val(n1,n,code); inc(n); end; prob:=prob+w; words[i]:=prob; end; end; begin p:=0; while p=0 do begin write('Введите название файла - '); readln(name); {$I-} assign(f, name); reset(f); {$I+} if IORESULT<>0 then writeln('Файл не существует.') else p:=1; end; while not Eof(f) do begin readln(f,s); l:=length(s); vydelenie(s,l,k); format(s,k,k); for i:=1 to k do writeln(words[i]); end; close(f); readln; end.
Объяснение кода листинга программы
- В программе используется константа
del
, которая содержит символы, которые не могут быть использованы в качестве слов. - Тип
starray
представляет собой массив строк, который используется для хранения выделенных слов. - Переменные
s
,w
,name
,prob
иn1
используются для хранения входной строки, промежуточных значений и числаn
. - Процедура
vydelenie
выделяет слова из входной строки и сохраняет их в массивеwords
. - Процедура
format
форматирует выделенные слова и сохраняет результат в переменнойs
. - Вложенный цикл
for
используется для обработки каждого слова в строке. - Функция
IORESULT
используется для проверки успешности операций ввода-вывода. - Переменная
p
используется для контроля над циклом чтения файла. - Цикл
while
используется для обработки каждой строки в файле до тех пор, пока не будет достигнут конец файла. - Функция
readln
используется для чтения строки из файла. - Переменная
l
используется для хранения длины входной строки. - Процедура
vydelenie
использует циклfor
для обработки каждого символа во входной строке. - Функция
str
используется для преобразования числа в строку. - Переменная
code
используется для хранения кода числа. - Цикл
while
используется для обработки каждого слова в строке до тех пор, пока не будет достигнут конец строки. - Функция
val
используется для преобразования строки в число. - Переменная
n1
используется для хранения числаn
. - Переменная
k
используется для хранения количества слов в строке. - Цикл
for
используется для обработки каждого слова в строке. - Выводится результат форматирования в виде отформатированной строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д