powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Кто знает самую короткую и красивую функцию переворота строки?
25 сообщений из 69, страница 1 из 3
Кто знает самую короткую и красивую функцию переворота строки?
    #32917463
Фотография SergLet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть char *a = "hack"; получить "kcah"! Самое главное элегантно!
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917468
Dubrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может и не элегантно, но вроде коротко. Для затравки я думаю, пойдет.
Самый очевидный вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <iostream.h>

void main(void)
{
  char str[]="hack";
  int len=strlen(str);

  for(int i= 0 ;i<len/ 2 ;i++)
  {
    char t=str[i];
    str[i]=str[len-i- 1 ];
    str[len-i- 1 ]=t;
  }
  cout<<str<<endl;
}
Если длина строки нечетная, ничего страшного, средний символ все равно никуда не перемещается.
P.S. А вообще идея хорошая, в свое время в журнале "ZX-Ревю" был такой раздел, назывался "Этюды", где люди предлагали самые эффективные способы выполнения каких-либо действий.

---
С уважением, Dubrov.
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917473
Фотография SergLet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот именно на эту тему и хотел удочку закинуть! Хочешь еще задачку на элегантное решение? Есть такая функция atoi ! Сделай то же самое сам ! Условия теже!!!
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917474
Фотография SergLet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сначала решил вот так: (зацыни! )

void Reverse(char *src, char *dst)
{
for(int i = strlen(src)-1, a = 0; i >= 0; i--, a++)
{
dst[a] = src ;
}
}

Аргументы по ссылке! Но здесь входной и выходной массив! А, потом я пришел почти к тому же что и ты! Тренировать мозги иногда полезно! Так что насчет atoi?
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917476
Фотография SergLet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри - вот так!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void Reverse(char *src, char *dst)
{    
	for(int i = strlen(src)- 1 , a =  0 ; i >=  0 ; i--, a++)
	{	    
	dst[a] = src[i];
	}
}
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917492
Dubrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую. Подожди пару дней, сегодня работы много.
---
Dubrov.
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917495
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
int atoi(char *a)
{
 char c = *a++;
 char sign = c;
 if (c == '-' || c == '+')
  c = *a++;
 int total =  0 ;
 while (c>='0' && c<='9' )
 {
   total =  10  * total + c;
   c = *a++;
  }
 if (sign == '-') return -total;
  else return total;
}
не мое.
это я мелкомягкие исходники поставляемые с dotnet студией перекоцал.
там у них поддержка многопоточности была добавлена, 64 битовых целых и юникода вроде.
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917496
Dubrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, не успел.
---
Dubrov.
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917499
Фотография SergLet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, попробую! Если от мелкомягких то - это либо индийцы либо китайцы навояли! Посмотрим!
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917500
Фотография SergLet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dubrov! Почему не успел! Успел успел! Давай свою идею ... все равно интересно!
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917553
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а мне лень думать


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917567
FishingIsGood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эллегантно так эллегантно:

Код: plaintext
1.
2.
3.
4.
5.
int main(int argc, char *argv[])
{
    char* str = "hack";
    reverse_copy(str, str + strlen(str), ostream_iterator<char>(cout));
    return EXIT_SUCCESS;
}
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917594
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
8-)
Код: plaintext
1.
2.
3.
4.
std::string str("blabla");
//reverse order
str.rbegin();
std::copy( str.rbegin(), str.rend(), inserter( s, s.begin() ) );
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917599
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
упс, звиняйте. копировать надо в другую строку 8-))). Если это копирование нужно.
Код: plaintext
1.
2.
3.
char *old = "test";
std::string str( old ); // need strlen?
std::string rev( str.rbegin(), str.rend() );
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917603
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
а можно написать и при помощи swap. Только надо ли?
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917607
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
вобчем главная идея - используйте STL, и жить станет проще
Код: plaintext
1.
2.
3.
4.
5.
char *old = "test";
std::string str( "new" ); // need strlen?

std::reverse( str.begin(), str.end() );
if( old ) std::reverse( old, old+strlen(old)- 1  ); //overflow danger, check size
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917704
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergLetСорри - вот так!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void Reverse(char *src, char *dst)
{    
	for(int i = strlen(src)- 1 , a =  0 ; i >=  0 ; i--, a++)
	{	    
	dst[a] = src[i];
	}
}

А так пойдет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#include <stdio.h>

void rev( char *s) {
 char *p=s;
 char c;
 if (!s) return;
 while (*p) p++; p--;  //p=s+strlen(s)-1
 while(p>s) {
  c=*p;  *p--=*s;  *s++=c;
 }
}

main() {

 char s[]="hackperehack";

 printf("before: %s\n",s);
 rev(s);
 printf("after: %s\n",s);

}

Просто у вас с Дубровым, на мой, конечно, скромный взгляд, как то по паскалевски получилось А C он на то и C, чтоб сторонних наблюдателей как можно сильнее запутать
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917809
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне вспоминается один шуточный тест который
я нашел в дебрях FIDO-net.

Задание: дана переменная x. Написать программу
на любом языке программирования которая проверяет
если x=3 то записывает в x число 2. И наоборот.

По результатам теста составляется портрет программиста:
его характер, склонности к математике, оптимизации,
парадигмам искусственного интеллекта.

Проверьте себя, коллеги. :)
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917830
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
#include <stdio.h>
#include <stdlib.h>
int main(int argn, char** argc)
{
 if (argn< 2 )return  0 ;
 int x=atoi(argc[ 1 ]);
 x^= 1 ;
 printf("%i\n",x);
}
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917865
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Круто! Способность к оптимизации на низком уроване!!

А еще у кого есть варианты?

Смелее!
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917903
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это наверное в "программирование" надо такие темы поднимать.
тут не много представителей других языков шатается :-)
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917931
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самый классный вариант - сделать ассемблерную вставку push...push до нуля, заодно определяем длину. А потом делаем pop...pop...
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917945
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стековые операции - не самые эффективные, насколько я помню.
хотя на спектруме такой подход рулил
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917968
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКруто! Способность к оптимизации на низком уроване!!

А еще у кого есть варианты?

Смелее!

Круто, но слишком понятно Поэтому несколько переделаю код alex_k-я
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void main(int argc, char **argv) {
 int x;
 if (argc< 2 ) return;
 x=atoi(argv[ 1 ]);
 (x== 3 ) ? (x= 2 ) : ( (x== 2 ) ? (x= 3 ) : (x) );
 printf("%i\n",x);
}
...
Рейтинг: 0 / 0
Кто знает самую короткую и красивую функцию переворота строки?
    #32917969
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_kстековые операции - не самые эффективные, насколько я помню.
хотя на спектруме такой подход рулил
некоторые переменные можно сделать register, и пожалуй это будет самый быстродействующий способ
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Кто знает самую короткую и красивую функцию переворота строки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]