Убрать в строке все лишние пробелы и поменять четные и нечетные слова местами - 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.
Объяснение кода листинга программы
- В первой строке объявлены четыре переменные: s, s1, snew и три переменные i, n, a1, a2 типа integer.
- Вторая строка - это запрос на ввод строки.
- Третья строка - это удаление всех лишних пробелов в строке s при помощи цикла while и функции delete.
- Четвертая строка - это замена двух строк кода: если первый символ строки s - это пробел, то он удаляется; если последний символ строки s - это пробел, то он удаляется.
- Пятая строка - это инициализация двух переменных: a1 - это позиция первого нечетного слова в строке s, n - это счетчик слов в строке s.
- В цикле for i от 1 до длины строки s выполняется следующая инструкция:
- Если n mod 2 = 1, то текущий символ s[i] добавляется к переменной s1.
- Если s[i] = ' ', то выполняется следующая инструкция:
- Если n mod 2 = 0, то текущий символ s[i] добавляется к переменной snew, а переменная s1 очищается.
- Если n mod 2 = 1, то переменная a2 инициализируется значением i + 1.
- Если n mod 2 = 0, то переменная n увеличивается на 1.
- Если s[i] = ' ', то цикл прерывается.
- После окончания цикла переменная snew дополняется символами из строки s, начиная с позиции a2 и до конца строки, а также добавляется переменная s1.
- Выводится результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д