| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > реверс массива |
| Автор: kLASTER 3.3.2013, 19:01 |
| Доброго времени суток! Есть обычный массив, нужно сделать реверс значений, т.е. первому элементу присвоить последний, второму предпоследний и тд. Нужен алгоритм, но не функция. Что- то было такое в сортировках если память не изменяет! Заранее спасибо!!! |
| Автор: fish9370 3.3.2013, 19:38 |
| имеем два указателя один на начало второй на конец, цикл, от 0 до размер массива деленный на два, указатель на начало увеличивается на единицу, указатель на конец уменьшается на единицу тело цикла, обмен значений, на которые ссылаются указатели мне кажется этот алгоритм ты мог бы придумать сам.. |
| Автор: NoviceF 3.3.2013, 20:01 |
| а использование итераторов rbegin и rend не устраивает? хехе.. что-то я под масивом сразу понял вектор.. |
| Автор: kLASTER 3.3.2013, 20:03 | ||
Я сначала сделал так:
потом дошло, что начинаю присваивать вторую половину дважды! |
| Автор: fish9370 3.3.2013, 20:06 |
так нельзя делать, обмена же не происходит.. вводи дополнительную переменную.. |
| Автор: NoviceF 3.3.2013, 20:12 |
| если STL нельзя использовать - лучше сразу уточняй |
| Автор: kLASTER 3.3.2013, 20:18 |
| точно, третью переменную для смены местами. fish9370, спасибо что напомнил. Попробуем. ПС Лана малому сказку пошел читать завтра попробую. |
| Автор: Alca 3.3.2013, 22:26 | ||
http://www.cplusplus.com/reference/algorithm/reverse/
|
| Автор: Laregro 15.3.2013, 17:40 |
| #include <iostream> #include <cstring> using namespace std; int main() { char str[]="язык программирования С++"; char *start, *end; int len; char t; cout<<"Исходная строка:"<<str<<"\n"; len=strlen(str); start=str; end=&str[len-1]; while(start<end) { t=*start; *start=*end; *end=t; start++; end--; } cout<<"строка после реверсирования:"<<str<<"\n"; return 0; } |
| Автор: noize 16.3.2013, 23:47 | ||
мой "топорный" вариант. Делал как задание из книги K&R
|
| Автор: kolesnle 30.3.2013, 12:44 | ||
|
| Автор: fish9370 30.3.2013, 12:59 | ||
|
| Автор: kolesnle 30.3.2013, 13:21 | ||
| С чего ты взял что ему нужно именно char*? Добавлено через 6 минут и 2 секунды
для char* |
| Автор: fish9370 30.3.2013, 14:09 |
а ты с чего взял, что эта строка меняет две ячейки местами? |
| Автор: kolesnle 30.3.2013, 15:14 |
| С intом все работает |
| Автор: Objegog 7.9.2022, 05:33 |
Модератор: Сообщение скрыто. |