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

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

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

Помогите, пожалуйста, написать код: С клавиатуры вводится строка. Количество слов четно. Нужно поменять местами слова: первое и второе, третье и четвертое и т.д., а так же убрать все лишние пробелы. Массив использовать нельзя. Если строка без слов, то вывести сообщение об ошибке. Входные данные: aabb ddff iihh llkk Выходные данные: ddff aabb llkk iihh Пробелы удалились, а слова не получается.
Спасибо!

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

textual
Листинг программы
var
  s,s1,snew:string;
 i,n,a1,a2:integer;
begin
  writeln('Введите строку...');
  readln(s);
for i:=1 to Length(s) do  
while pos('  ',s)>0 do 
    delete(s,pos('  ',s),1);
s:=trim(s);  // эта функция заменяет две строки: 
          //if s[1]=' ' then delete(s,1,1);
          //if s[Length(s)]=' ' then delete(s,Length(s),1);
a1:=1; // позиция начала нечетного слова
n:=1;  //счетчик слов
For i:=1 to Length(s) do
  begin
    if  n mod 2=1 then s1:=s1+s[i];
    if s[i]=' ' then 
      begin
        if  n mod 2=0 then 
          begin
            snew:=snew+copy(s,a2,i-a2)+' '+s1;
            s1:='';
          end
          else a2:=i+1; //позиция начала четного слова
        n:=n+1; 
      end;
  end;
snew:=snew+copy(s,a2,i-a2+1)+' '+s1;  
writeln(snew)
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
Похожие ответы