Строки, удвоение самого короткого слова в предложении - Pascal
Формулировка задачи:
Вот моя программа, она находит самое короткое слово в предложении и выводит его, ещё нужно сделать так, чтобы она удваивала это слово и выводила результат, как это сделать? Помогите пжл
Например, должно быть так:
Введите строку:
Иду гулять
Самое короткое слово "Иду" длиной в 3 символов
Получившееся строка:
Иду Иду гулять
var s,sl,smin,s1,n: string;
i,dmin,k,x: integer;
begin
writeln('Введите строку:');
readln(s);
s:=s+' '; sl:='';dmin:=length(s);
for i:=1 to length(s) do
if s[i]<>' ' then sl:=sl+s[i]
else
begin
if (length(sl)<dmin) and (length(sl)<>0) then
begin
dmin:=length(sl);
smin:=sl;
end;
sl:='';
end;
writeln ('Самое короткое слово "',smin,'" длиной в ',dmin,' символов');
?
?
?
?
?
end.Решение задачи: «Строки, удвоение самого короткого слова в предложении»
textual
Листинг программы
var s,sl,smin,smax: string;
i,dmin,nsl: integer;
dmax,nmsl:integer;
begin
writeln('Введите строку:');
readln(s);
s:=s+' '; sl:='';dmin:=length(s);nsl:=1;dmax:=0;nmsl:=length(s);
for i:=1 to length(s) do
if s[i]<>' ' then sl:=sl+s[i]
else
begin
if (length(sl)<dmin) and (length(sl)<>0) then
begin
dmin:=length(sl);
smin:=sl;
nsl:=i-length(sl);
end;
if (length(sl)>dmax) and (length(sl)<>0) then
begin
dmax:=length(sl);
smax:=sl;
nmsl:=i-length(sl);
end;
sl:='';
end;
writeln ('Самое короткое слово "',smin,'" длиной в ',dmin,' символов');
writeln ('Самое длинное слово "',smax,'" длиной в ',dmax,' символов');
if dmin<>dmax
then begin
insert(smin+' ',s,nsl);
if nmsl>nsl then delete(s,nmsl+length(smin)+1,length(smax)+1)
else delete(s,nmsl,length(smax)+1);
end;
writeln('Полученная строка');
writeln(s)
end.
Объяснение кода листинга программы
- Объявление переменных:
s, sl, smin, smax: string;- объявление строковых переменныхi, dmin, nsl: integer;- объявление целочисленных переменныхdmax, nmsl: integer;- объявление еще одной целочисленной переменной
- Инициализация переменных:
writeln('Введите строку:');- вывод на экран приглашения для ввода строкиreadln(s);- считывание строки с клавиатуры и запись в переменную ss:=s+' '; sl:='';dmin:=length(s);nsl:=1;dmax:=0;nmsl:=length(s);- дополнение строки s пробелом, инициализация переменных sl, dmin, nsl, dmax, nmsl
- Цикл обработки строки:
for i:=1 to length(s) do- цикл перебора символов в строкеif s[i]<>' ' then sl:=sl+s[i]- добавление символов к sl до тех пор, пока не встретится пробелif (length(sl)<dmin) and (length(sl)<>0) then- проверка на минимальную длину словаif (length(sl)>dmax) and (length(sl)<>0) then- проверка на максимальную длину словаsl:='';- обнуление sl на каждой итерации
- Вывод результатов:
writeln ('Самое короткое слово',smin,'длиной в ',dmin,' символов');- вывод самого короткого слова и его длиныwriteln ('Самое длинное слово',smax,'длиной в ',dmax,' символов');- вывод самого длинного слова и его длины
- Обработка результатов:
if dmin<>dmax then begin- начало блока условийinsert(smin+' ',s,nsl);- вставка самого короткого слова в строку s в позицию nslif nmsl>nsl then delete(s,nmsl+length(smin)+1,length(smax)+1) else delete(s,nmsl,length(smax)+1);- удаление самого длинного слова из строкиwriteln('Полученная строка');- вывод сообщения о полученной строкеwriteln(s)- вывод результирующей строки
- Конец программы.