Убрать в строке все лишние пробелы и поменять четные и нечетные слова местами - PascalABC.NET

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

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

Помогите, пожалуйста, написать код: С клавиатуры вводится строка. Количество слов четно. Нужно поменять местами слова: первое и второе, третье и четвертое и т.д., а так же убрать все лишние пробелы. Массив использовать нельзя. Если строка без слов, то вывести сообщение об ошибке. Входные данные: aabb ddff iihh llkk Выходные данные: ddff aabb llkk iihh Пробелы удалились, а слова не получается.
Листинг программы
  1. var
  2. s:string;
  3. i:integer;
  4. begin
  5. writeln('Введите строку...');
  6. readln(s);
  7. for i:=1 to Length(s) do
  8. while pos(' ',s)>0 do begin
  9. delete(s,pos(' ',s),1);
  10. end;
  11. if s[1]=' ' then delete(s,1,1);
  12. if s[Length(s)]=' ' then delete(s,Length(s),1);
  13. writeln(s)
  14. end.
Спасибо!

Решение задачи: «Убрать в строке все лишние пробелы и поменять четные и нечетные слова местами»

textual
Листинг программы
  1. var
  2.   s,s1,snew:string;
  3.  i,n,a1,a2:integer;
  4. begin
  5.   writeln('Введите строку...');
  6.   readln(s);
  7. for i:=1 to Length(s) do  
  8. while pos('  ',s)>0 do
  9.     delete(s,pos('  ',s),1);
  10. s:=trim(s);  // эта функция заменяет две строки:
  11.           //if s[1]=' ' then delete(s,1,1);
  12.           //if s[Length(s)]=' ' then delete(s,Length(s),1);
  13. a1:=1; // позиция начала нечетного слова
  14. n:=1;  //счетчик слов
  15. For i:=1 to Length(s) do
  16.   begin
  17.     if  n mod 2=1 then s1:=s1+s[i];
  18.     if s[i]=' ' then
  19.       begin
  20.         if  n mod 2=0 then
  21.           begin
  22.             snew:=snew+copy(s,a2,i-a2)+' '+s1;
  23.             s1:='';
  24.           end
  25.           else a2:=i+1; //позиция начала четного слова
  26.         n:=n+1;
  27.       end;
  28.   end;
  29. snew:=snew+copy(s,a2,i-a2+1)+' '+s1;  
  30. writeln(snew)
  31. end.

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

  1. В первой строке объявлены четыре переменные: s, s1, snew и три переменные i, n, a1, a2 типа integer.
  2. Вторая строка - это запрос на ввод строки.
  3. Третья строка - это удаление всех лишних пробелов в строке s при помощи цикла while и функции delete.
  4. Четвертая строка - это замена двух строк кода: если первый символ строки s - это пробел, то он удаляется; если последний символ строки s - это пробел, то он удаляется.
  5. Пятая строка - это инициализация двух переменных: a1 - это позиция первого нечетного слова в строке s, n - это счетчик слов в строке s.
  6. В цикле for i от 1 до длины строки s выполняется следующая инструкция:
  7. Если n mod 2 = 1, то текущий символ s[i] добавляется к переменной s1.
  8. Если s[i] = ' ', то выполняется следующая инструкция:
  9. Если n mod 2 = 0, то текущий символ s[i] добавляется к переменной snew, а переменная s1 очищается.
  10. Если n mod 2 = 1, то переменная a2 инициализируется значением i + 1.
  11. Если n mod 2 = 0, то переменная n увеличивается на 1.
  12. Если s[i] = ' ', то цикл прерывается.
  13. После окончания цикла переменная snew дополняется символами из строки s, начиная с позиции a2 и до конца строки, а также добавляется переменная s1.
  14. Выводится результат на экран.

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


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

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

10   голосов , оценка 4 из 5

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

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

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