После каждого слова вставить его порядковый номер через insert - Turbo Pascal
Формулировка задачи:
Помогите пожалуйста решить задачу:
Даны слова в предложении, после каждого слова вставить его порядковый номер через insert.
Решение задачи: «После каждого слова вставить его порядковый номер через insert»
textual
Листинг программы
var s,ss:string;
i,a,d:integer;
begin
writeln('vvedite stroku');
readln(s);
if (s[length(s)]<>' ') and (s[length(s)]<>'.') then s:=s+' ';
a:=0;
i:=1;
d:=length(s);
while i<=d do
begin
if (s[i]=' ') or (s[i]='.') then
begin
inc(a);
str(a,ss);
insert(ss,s,i);
if i<10 then
begin
inc(i);
inc(d);
end else
begin
i:=i+2;
d:=d+2;
end;
end;
inc(i);
end;
writeln('poluchennaja stroka');
writeln(s);
readln;
end.
Объяснение кода листинга программы
- В первой строке запрашивается ввод строки.
- Строка вводится в переменную s.
- Проверяется, состоит ли строка только из букв и пробелов. Если нет, то к строке добавляются пробелы до тех пор, пока условие не будет выполнено.
- Инициализируются три переменные: a, i и d. Переменная a отвечает за количество вхождений слова в строке, переменная i отвечает за номер текущего символа в строке, а переменная d отвечает за длину строки.
- Запускается цикл while, который выполняется до тех пор, пока i меньше или равно d.
- Внутри цикла проверяется, является ли текущий символ пробелом или точкой. Если это так, то увеличиваются значения переменных a и i, а затем к строке s добавляется пробел или точка и текущий символ.
- Если значение i меньше 10, то увеличивается значение i и d, чтобы перейти к следующему слову.
- Если значение i больше или равно 10, то увеличивается только значение i, а значение d остается неизменным.
- После завершения цикла выводится исходная строка.