Строки, удвоение самого короткого слова в предложении - Pascal

Узнай цену своей работы

Формулировка задачи:

Вот моя программа, она находит самое короткое слово в предложении и выводит его, ещё нужно сделать так, чтобы она удваивала это слово и выводила результат, как это сделать? Помогите пжл
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.
Например, должно быть так: Введите строку: Иду гулять Самое короткое слово "Иду" длиной в 3 символов Получившееся строка: Иду Иду гулять

Решение задачи: «Строки, удвоение самого короткого слова в предложении»

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.

Объяснение кода листинга программы

  1. Объявление переменных:
    • s, sl, smin, smax: string; - объявление строковых переменных
    • i, dmin, nsl: integer; - объявление целочисленных переменных
    • dmax, nmsl: integer; - объявление еще одной целочисленной переменной
  2. Инициализация переменных:
    • writeln('Введите строку:'); - вывод на экран приглашения для ввода строки
    • readln(s); - считывание строки с клавиатуры и запись в переменную s
    • s:=s+' '; sl:='';dmin:=length(s);nsl:=1;dmax:=0;nmsl:=length(s); - дополнение строки s пробелом, инициализация переменных sl, dmin, nsl, dmax, nmsl
  3. Цикл обработки строки:
    • 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 на каждой итерации
  4. Вывод результатов:
    • writeln ('Самое короткое слово',smin,'длиной в ',dmin,' символов'); - вывод самого короткого слова и его длины
    • writeln ('Самое длинное слово',smax,'длиной в ',dmax,' символов'); - вывод самого длинного слова и его длины
  5. Обработка результатов:
    • if dmin<>dmax then begin - начало блока условий
    • insert(smin+' ',s,nsl); - вставка самого короткого слова в строку s в позицию nsl
    • if nmsl>nsl then delete(s,nmsl+length(smin)+1,length(smax)+1) else delete(s,nmsl,length(smax)+1); - удаление самого длинного слова из строки
    • writeln('Полученная строка'); - вывод сообщения о полученной строке
    • writeln(s) - вывод результирующей строки
  6. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы