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