Как вывести строку в обратном порядке c
Перейти к содержимому

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

  • автор:

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

Здравствуте, люди добрые.
Сижу пытаюсь разобраться, но так и не выходит. В общем вот текст задачи: Задан текст, состоящий из слов, записанных через запятые и/или пробел, и заканчивающийся точкой. Длина текста не больше 100 символов, могут быть использованы любые символы. Словом считается последовательность символов, не содержащая пробел. Сформировать новую строку, в которой слова будут следовать в обратном порядке.Получить массив результатов умножения цифровых слов на –1, если соответствующая цифра меньше 0.

Пока что хочу разобратся с записью слов в обратном порядке. Как это реализовать? Помогите, пожалуйста.

автор: cheops (24.10.2009 в 12:57) письмо автору

Можно отталкиваться от следующей программы

int main ()
char phrase[] = «Словом считается последовательность символов, не содержащая пробел.» ;
int i, j;
// Количество символов в строке
int len = strlen (phrase);
// Выделяем память под результат
char *str = new char [len];

int start = 0;
for (i = 0; i < len; i++)
// Найден пробел или конец строки
if (phrase[i] == ‘ ‘ || i == len — 1)
// Переворачиваем слово и записываем в str
for (j = i — 1; j >= start; j—)
str[j] = phrase[start + i — 1 — j];
>
// Записываем последний символ без изменения
str[i] = phrase[i];
start = i + 1;
>
>

// Освобождаем выделенную ранее память
delete [] str;

автор: Min_Fin (25.10.2009 в 07:31) письмо автору
автор: WolfLite (26.10.2009 в 21:59) письмо автору

//reverstr.cpp
//переворачивает строку
#include
#include //для strlen()
#include

using namespace std;

int main()
setlocale(LC_ALL,»rus»); // локализация

// объявление функции revrsit
void reversit(char []);

const int MAX = 80; //размер массива
char str [MAX]; //строка

cout cin.get(str,MAX);
reversit(str); //перевернуть строку
cout cout system(«PAUSE»);
return 0;
>
//———————————————————
//reversit()
//функция, переворачивающая строку, переданную в аргументе
void reversit(char s [])
int len = strlen(s); //найти длину строки
for(int j = 0;j //символы из первой половины
char temp = s [j]; //на символы
s [j] = s [len-j-1]; //из второй половины
s [len-j-1] = temp;
>
>

автор: Min_Fin (01.11.2009 в 07:44) письмо автору

Это зеркальное отображение. Но спасибо. Занят был..Сейчас поразбираюсь с этим.

С клавиатуры вводиться строчка, строка символов, вывести строку в обратном порядке.

Author24 — интернет-сервис помощи студентам

Вообщем нужно сделать 3 задачи:
1)С клавиатуры вводиться строчка, строка символов, вывести строку в обратном порядке.
2)Дан массив из N элементов. Найти сумму элементов с чётными номерами и отдельно с нечётными.
3)Сделать так чтобы можно было находить Х из формулы — корень кубический из Х. Х находим на промежутке от 1 до 20.
помогите =)

Лучшие ответы ( 1 )

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

Ответы с готовыми решениями:

Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран
Помогите решить от и до))

Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран.
Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран.

Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран
Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран.

Ввести с клавиатуры строку и вывести ее в обратном порядке
Помогите написать программу результатом работы которой должен быть вывод строки в обратном порядке.

1856 / 713 / 55

Регистрация: 11.12.2008

Сообщений: 1,019

Лучший ответ

Сообщение было отмечено как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include #include #include int main() { char text[256]; cin>>text; int len=strlen(text); for(int i=len-1;i>=0;i--) { putch(text[i]); } getch(); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#include #include #include #define N 20 int main() { int mass[N]; //Entering the array randomize(); coutendl; for(int i=0;iN;i++) { mass[i]=random(50); coutmass[i]" "; } int ChetSumma=0; int NechetSumma=0; for(i=0;i20;i+=2)ChetSumma+=mass[i]; for(i=1;i20;i+=2)NechetSumma+=mass[i]; cout"\nChet = "ChetSumma; cout"\nNechet = "NechetSumma; getch(); }

3. Честно говоря я не совсем понял условие, поэтому если что не бить.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include #include float Cub(float x) { return x*x*x; } int main() { clrscr(); for(int i=1;i20;i++) { cout<" - " (i); } getch(); }

Запись строки в обратном порядке в новую строку

Author24 — интернет-сервис помощи студентам

По заданию нужно ввести строку и переписать ее в обратном порядке в новую строку. Где-то ошибка в цикле:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
char s[100],s1[100]; int i,j,n=0; puts("Enter a string:" ); gets(s); for(i=0;s[i]!='\0';i++) n++; printf("The line printed backward is: " ); for(j=0;jn;j++) { for(i=n-1;i>=0;i--) { s1[j]=s[i]; } printf("%c",s1[j]); }

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

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

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

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

Палиндромы. Создать новую строку – исходную в обратном порядке.
Дана строка символов. Создать новую строку – исходную в обратном порядке. Проверить, является ли.

167 / 166 / 46
Регистрация: 10.10.2010
Сообщений: 725
Почему так не хотите?

1 2 3 4 5 6 7 8 9 10 11
#include #include int main() { char s[100] = "hello"; int len = strlen(s); int i; for(i = len; i >= 0; i--) printf("%c", s[i]); }

44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284

Rexer, пока нельзя использовать функции библиотеки string.

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

12461 / 7485 / 1754
Регистрация: 25.07.2009
Сообщений: 13,764

Лучший ответ

Сообщение было отмечено Памирыч как решение

Решение

ЦитатаСообщение от Lar4ik Посмотреть сообщение

пока нельзя использовать функции библиотеки string.

1 2 3 4 5 6
char * pS = s, * pS1 = s1; while ( *pS ) ++pS; while ( pS > s ) *pS1++ = *(--pS); *pS1 = '\0';

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Создать новую строку из символов исходной, расположенных в обратном порядке
Здравствуйте. У меня возникла проблема, я перевелся из одного университета в другой и в связи с.

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

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

Сформировать новую строку из исходной, записав все слова в обратном порядке
Дана строка символов S , длиной n . Слова разделены запятыми , в конце точка. Сформировать новую.

Или воспользуйтесь поиском по форуму:

Как выполнить реверс строки в C++

При разработке на 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.

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

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

Теперь для реверса строки мы создадим свою функцию по имени 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; >

Мы получим такой результат:

  • В приведенном коде My_rev() — это функция, которая реверсирует строку, при этом базовый адрес строки передается в качестве аргумента.
  • Внутри функции My_rev(), *str — это указатель, в котором хранится базовый адрес строки. В нашем примере str указывает на первый элемент строки My_string.
  • len хранит длину строки. Здесь n – это индекс последнего элемента.
  • В данной функции мы пытаемся поменять местами отдельные символы строки. Это значит, что мы продолжаем менять местами элементы с 0-го и n-го индекса, пока не дойдём до (len/2)-й позиции. В приведенном примере цикл for делает эту замену за нас, то есть технически переворачивает строку.
  • В конце мы возвращаем базовый адрес str в функцию main(), а строка выводится с помощью функции cout.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *