Изменить порядок слов в строке на обратный

Вводится строка, состоящая из слов, разделенных пробелами. Следует заменить ее на строку, в которой слова идут в обратном порядке по-сравнению с исходной строкой. Вывести измененную строку на экран.

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

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

В общих чертах алгоритм может быть таким. Строка просматривается с конца и фиксируется количество подряд идущих символов, которые не являются пробелами (т.е. длина слова). Как только встретится пробел, участок строки от этого пробела на длину слова добавляется в конец новой строки. Таким образом, если новая строка изначально пуста, то последнее слово исходной строки окажется первым в новой. Предпоследнее слово исходной строки окажется вторым в новой и т.д.

То, каким образом происходит копирование части строки из исходной и добавление этой части в новую строку, зависит от языка программирования, функций работы со строками.

Pascal




var
str: string;

procedure conversely(var s: string);
var
len, i, a: byte;
s2: string;
begin
len := length(s);
a := 0;
s2 := '';
for i:=len downto 1 do begin
if s[i] = ' ' then begin
s2 := s2 + copy(s,i+1,a) + ' ';
a := 0;
end
else
a := a + 1;
end;
s2 := s2 + copy(s,i,a);
s := s2;
end;

begin
readln(str);
conversely(str);
writeln(str);
end.



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

Python


вывести строку в обратном порядке python

# Вариант 1 - без использования встроенных функций

def conversely(s):
s2 = ''
i = len(s)-1
while i >= 0:
if s[i] == ' ':
s2 = s2 + s[i+1:] + ' '
s = s[:i]
i = len(s) - 1
else:
i -= 1
s2 = s2 + s
return s2

string = input()
string = conversely(string)
print(string)

# Вариант 2 - с использованием встроенных функций Python

def conversely(s):
s = s.split()
s.reverse()
s2 = ' '.join(s)
return s2


string = input()
string = conversely(string)
print(string)



каждый охотник желает знать, где сидит фазан
фазан сидит где знать, желает охотник каждый

Basic-256



input str$
gosub conversely
print str$
end

conversely:
len = length(str$)
a = 0
s$ = ""
for i=len to 1 step -1
if mid(str$,i,1) = " " then
s$ = s$ + mid(str$,i+1,a) + " "
a = 0
else
a = a + 1
endif
next i
s$ = s$ + mid(str$,1,a)
str$ = s$
return



conversely words of string
string of words conversely

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Pascal



var
str: string;

procedure conversely(var s: string);
var
len, i, a: byte;
s2: string;
begin
len := length(s);
a := 0;
s2 := '';
for i:=len downto 1 do begin
if s[i] = ' ' then begin
s2 := s2 + copy(s,i+1,a) + ' ';
a := 0;
end
else
a := a + 1;
end;
s2 := s2 + copy(s,i,a);
s := s2;
end;

begin
readln(str);
conversely(str);
writeln(str);
end.



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

Python

вывести строку в обратном порядке python

# Вариант 1 - без использования встроенных функций

def conversely(s):
s2 = ''
i = len(s)-1
while i >= 0:
if s[i] == ' ':
s2 = s2 + s[i+1:] + ' '
s = s[:i]
i = len(s) - 1
else:
i -= 1
s2 = s2 + s
return s2

string = input()
string = conversely(string)
print(string)

# Вариант 2 - с использованием встроенных функций Python

def conversely(s):
s = s.split()
s.reverse()
s2 = ' '.join(s)
return s2


string = input()
string = conversely(string)
print(string)



каждый охотник желает знать, где сидит фазан
фазан сидит где знать, желает охотник каждый

Basic-256


input str$
gosub conversely
print str$
end

conversely:
len = length(str$)
a = 0
s$ = ""
for i=len to 1 step -1
if mid(str$,i,1) = " " then
s$ = s$ + mid(str$,i+1,a) + " "
a = 0
else
a = a + 1
endif
next i
s$ = s$ + mid(str$,1,a)
str$ = s$
return



conversely words of string
string of words conversely