Обратный порядок слов программа

При разработке на C++ иногда возникает необходимость перевернуть строку. Это может быть как простой вывод перевернутой строки, так и постоянный реверс строки по её адресу.

Как решить обе эти задачи, вы узнаете в данном мануале. Здесь мы будем работать с разными стандартными и пользовательскими функциями.

Реверс строки – это операция, которая инвертирует порядок символов в строке. ПРедположим, что у нас есть переменная, которая содержит строку «JournalDev».

После реверса ‘str’ содержимое будет отображаться в обратном порядке. То есть, теперь ‘str’ будет содержать строку «veDlanruoJ».

Давайте посмотрим, какие существуют способы перевернуть строку в C++.

Функция reverse()

Встроенная функция reverse() выводит строку в обратном порядке. При этом в качестве аргументов выступают двунаправленные начальные и конечные итераторы.

Эта функция определена в алгоритме заголовочного файла. Приведенный ниже код показывает применение функции reverse():

#include #include #include using namespace std; int main() string str = «Journal Dev reverse example»; reverse(str.begin(), str.end()); cout return 0; >

Вывод будет выглядеть так:

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

Функция strrev()

strrev() — это встроенная функция C++, определенная внутри заголовочного файла cstring.h. Этот метод широко применяют для реверса C-строк (массивов символов).

Эта функция принимает только базовый адрес строки как аргумента и переворачивает ее соответствующим образом. Давайте посмотрим на примере, как перевернуть строку с помощью функции strlen() в C++.

#include #include using namespace std; int main() char str[] =»Journal Dev reverse example»; strrev(str); cout return 0; >

Приведенный выше код показывает работу функции strrev().

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

В отдельных случаях нам может понадобиться вывести строку в обратном порядке, а не изменять её. Например, это касается постоянных строк, которые в принципе нельзя изменить. Используя цикл, мы можем вывести любую строку в обратном порядке. Давайте посмотрим, как это делается.

Читайте также:
Системные требования экзокад программа

#include #include using namespace std; int main() string str=»Journal Dev reverse example»; int i; cout for(i = str.length() — 1; i >= 0; i—) cout > return 0; >

Вывод будет выглядеть так:

  • В приведенном выше коде мы сначала инициализировали строку ‘str’.
  • Обратите внимание, что внутри цикла for при выводе строки мы инициализировали итератор ‘i’ со значением str.length()-1. Это значит, что строку нужно вывести в обратном порядке, начиная с последнего индекса.
  • Обратите внимание: length() возвращает длину строки. То есть, для вывода строки в обратном порядке мы должны учитывать последний индекс, который должен быть length()-1, так как в массиве символов индексация начинается с 0.

Создание пользовательской функции реверса строки

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

Немецкий язык, 15 урок. Обратный порядок слов. Сегодня-завтра-послезавтра

Теперь для реверса строки мы создадим свою функцию по имени My_rev().

#include #include #include using namespace std; char *My_rev(char *str) int i,len=0,n; char temp; len=strlen(str); n=len-1; for(i = 0; i <=(len/2); i++) temp=str[i]; str[i]=str[n]; str[n]=temp; n—; > return str; > int main() char My_string[]=»Journal Dev reverse example»; cout My_rev(My_string); cout return 0; >

Изменить порядок слов в предложении на обратный — C (СИ)

ема говорит сама за себя является строка. надо инвертировать слова копируя в другую строку. пример: -> я иду домой -> домой иду я ГЛАВНОЕ ЧТОБЫ НА ВЫХОДЕ БЫЛ СТРОКА С 0 В КОНЦЕ помогите!

#include #include #include #include #define N 100 int main(void) < //clrscr(); char mas1[N]; char mas2[N]; int i, j, k, u; printf(«ntInput sentence ->nntt»); gets(mas1); k=strlen(mas1); u=k; printf(«ntSentence with reverse words ->nntt»); for (i=k; i>=0; i—) if (mas1[i]==’ ‘) < for (j=i+1; jfor (i=0; i

а то у меня получается не строка а просто вывод по частям

Код к задаче: «Изменить порядок слов в предложении на обратный»

Листинг программы

Читайте также:
Как пользоваться программой quik от Сбербанка

#include #include #include int main() < char str[1025];//Будет содержать в себе предложение char buf[1025];//Буффер строки str char **words;//Будет содержать в себе слова из str char *tok;//Указатель на текущее слово в предложении char delim[] = » .,;!;//Разделители между словами char chr;//Символьная переменная, для организации повторного ввода и т.д. long nCount;//nCount — будет содержать в себе число слов do < printf(«Enter sentence :n»); scanf(«%[^n]%c»,str, sprintf(buf,»%s»,str); tok = strtok(buf,delim);//Выделяем из строки 1-е слово nCount = 0;//Обнуляем счётчик слов while(tok) < nCount++;//Считаем слова //Продолжаем выделять из строки слова tok = strtok(NULL,delim); >if(nCount == 0) printf(«Input string is emptyn»); else < nCount = 0; sprintf(buf,»%s»,str); //Выделяем память на подстроки со словами из str words = (char **)malloc(nCount*sizeof(char *)); //Заново разбиваем исходную строку на слова tok = strtok(buf,delim);//Выделяем из строки 1-е слово while(tok) < //Память под подстроку со словом words[nCount] = (char *)malloc(strlen(tok)*sizeof(char)); sprintf(words[nCount],»%s»,tok); //Продолжаем выделять из строки слова tok = strtok(NULL,delim); nCount++; >printf(«Sentence with reverse wordsn»); //А теперь выводим words в обратном порядке buf[0] = ‘’;//В буф будем накапливать слова в обр порядке while(0 < (nCount—)) < //printf(«%s «,words[nCount]); strcat(buf,words[nCount]); strcat(buf,» «); //И удаляем память под уже не нужный нам элемент words[nCount] = (char *)realloc(words[nCount],sizeof(char *)); >//Снова уменьшаем память под 1 указатель words = (char **)realloc(words, sizeof(char *)); > printf(«%sn»,buf); printf(«Enter 1 for new inputn»); scanf(«%d%c»,chr); > while(nCount == 1); return 0; >

Источник: studassistent.ru

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

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

Задача — Изменить порядок слов в строке на обратный
— программирование на Pascal, Си, Кумир, Basic-256, Python

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

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

Читайте также:
Андроид как отменить программу по умолчанию

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

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

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

Pascal

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

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)

def conversely(s):
s = s.split()
s.reverse()
s2 = «»
for i in s:
s2 += i + ‘ ‘
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

Источник: ars-games.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru