Дана строка, слова разделены одним пробелом, в конце точка - Pascal ABC

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

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

Дана строка, слова разделены одним пробелом, в конце точка. Если последняя буква последнего слова и первая буква слова минимальной длины одинаковы, то поменять их местами. В противном случае удалить слово минимальной длины. Буду очень благодарна за помощь.

Решение задачи: «Дана строка, слова разделены одним пробелом, в конце точка»

textual
Листинг программы
  1. var s,s1,sp,sm:string;
  2.     i,j,im,ip,mn:byte;
  3. begin
  4. writeln('Введите строку из слов, разделенных одним пробелом в конце точка');
  5. readln(s);
  6. //составляем последнее слово
  7. sp:='';
  8. i:=length(s)-1;
  9. while (i>=1)and(s[i]<>' ') do
  10.  begin
  11.   sp:=s[i]+sp;
  12.   i:=i-1;
  13.  end;
  14. ip:=i+1; //его начало
  15. //ищем слово минимальной длины
  16. mn:=255;
  17. i:=1;
  18. while i<length(s) do
  19. if (s[i]<>' ')and((i=1)or(s[i-1]=' ')) then
  20.  begin
  21.   s1:='';
  22.   j:=i;
  23.   while(j<length(s))and(s[j]<>' ')do
  24.    begin
  25.     s1:=s1+s[j];
  26.     j:=j+1;
  27.    end;
  28.   if length(s1)<mn then
  29.    begin
  30.     mn:=length(s1);
  31.     im:=i;  //его начало
  32.     sm:=s1; //само слово
  33.    end;
  34.   i:=i+length(s1);
  35.  end
  36. else i:=i+1;
  37. if sm[1]=sp[1] then //если первые буквы одинаковые
  38.  begin
  39.   delete(s,ip,length(sp)); //удаляем последнее
  40.   insert(sm,s,ip); //на его место вставляем минимальное
  41.   delete(s,im,length(sm)); //удаляем минимальное
  42.   insert(sp,s,im);         //вставляем последнее
  43.  end
  44. else delete(s,im,length(sm)); //иначе удаляем минимальное
  45. write(s)
  46. end.

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

  1. Создаются переменные для хранения строки, слов и их длин, а также байтовые переменные для работы с байтами.
  2. Выводится сообщение для ввода строки.
  3. Строка разделяется на слова, которые сохраняются в переменной s.
  4. Создается пустая строка sp для последнего слова.
  5. Переменная i устанавливается равной длине s минус 1, а переменная j устанавливается равной i.
  6. Пока i больше или равно 1 и символ s[i] не равен пробелу, выполняется следующая последовательность действий:
    • Строка sp увеличивается на текущий символ s[i].
    • Переменная i уменьшается на 1.
  7. Если длина слова s1 меньше min_length, то обновляется min_length, переменная im устанавливается равной i, а переменная sm устанавливается равной s1.
  8. Если первые буквы слов sm и sp одинаковы, выполняется следующая последовательность действий:
    • Строка s удаляется от i до ip, включая сам ip.
    • Строка sp вставляется на место строки s в позиции i.
    • Переменная im устанавливается равной i.
  9. Если первые буквы слов sm и sp не одинаковы, выполняется следующая последовательность действий:
    • Переменная im устанавливается равной i.
  10. В конце выводится строка s.

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


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

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

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы