Убрать в строке все лишние пробелы и поменять четные и нечетные слова местами - PascalABC.NET
Формулировка задачи:
Помогите, пожалуйста, написать код: С клавиатуры вводится строка. Количество слов четно. Нужно поменять местами слова: первое и второе, третье и четвертое и т.д., а так же убрать все лишние пробелы. Массив использовать нельзя. Если строка без слов, то вывести сообщение об ошибке. Входные данные: aabb ddff iihh llkk Выходные данные: ddff aabb llkk iihh
Пробелы удалились, а слова не получается.
Спасибо!
Листинг программы
- var
- s:string;
- i:integer;
- begin
- writeln('Введите строку...');
- readln(s);
- for i:=1 to Length(s) do
- while pos(' ',s)>0 do begin
- delete(s,pos(' ',s),1);
- end;
- if s[1]=' ' then delete(s,1,1);
- if s[Length(s)]=' ' then delete(s,Length(s),1);
- writeln(s)
- end.
Решение задачи: «Убрать в строке все лишние пробелы и поменять четные и нечетные слова местами»
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.
- Выводится результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д