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