Как вывести строку в обратном порядке 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) письмо автору
Это зеркальное отображение. Но спасибо. Занят был..Сейчас поразбираюсь с этим.
С клавиатуры вводиться строчка, строка символов, вывести строку в обратном порядке.
Вообщем нужно сделать 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(); }
Запись строки в обратном порядке в новую строку
По заданию нужно ввести строку и переписать ее в обратном порядке в новую строку. Где-то ошибка в цикле:
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.
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.