LINUX.ORG.RU

инкрементировать string


0

0

Вопрос очень простой.
Нужно инкрементировать string не используя встроенные функции.
вот код на С++:

string A=«asd»,B;
cout<<A;
for(int i=0;i<3;i++)
{
B[2-i]=A[i];
}
cout<<B;
Знаю он не правильный. Подскажите как лучше это сделать.
заранее огромное спасибо!

>инкрементировать string
Эээ. Это как?

Love5an
()

Хм, а что значит «инкрементировать» в случае со строкой?

anonymous
()

>инкрементировать string

Возможно, вы имели в виду: инвертировать string

nu11 ★★★★★
()

B+=A

не? этот садо-мазо язык программирования я подзабыл, хотя еще снится тот оргазм, кой судорогами пронзает тело в моменты удачной компиляции проекта. Если же проект запускается, то кончает уже вся команда, от технички до начальника.

wfrr ★★☆
()

вот код на С++:

Знаю он не правильный.

Вот код на питоне. Знаю, он правильный.

a = "string"
b = ""
for i in range(len(a)-1, -1, -1):
    b += a[i]
print b

P.S. специально без извращений сделал, это я так способности топикстартера проверяю.

anonymous
()
B.resize( A.size() );
reverse_copy( A.begin(), A.end(), B.begin() );
lester ★★★★
()
Ответ на: haskell от qnikst
(setf str1 "string")
(setf str2 "")
(loop for x from 1 to (str-length str1) do
     (setf str2 (sym-cat str2 (sub-string str1 x x))))
anonymous
()
Ответ на: комментарий от wfrr

Нет. Лучший во всех отношениях язык на сегодня. Я мечтаю получить работу на нем и кодить, кодить, кодить. В общем, вы меня понимаете....

anonymous
()
Ответ на: комментарий от anonymous

Нет

Аргумент.

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

Конечно, когдя я достаю новый порномультик, я тоже сажусь «кодить, кодить, кодить...»

wfrr ★★☆
()
Ответ на: комментарий от Deleted

ll -h /usr/bin/rev

-rwxr-xr-x 1 root root 11K Дек 7 21:07 /usr/bin/rev

11к, хотя да жирновато

хацкелепрога весит 513к, скока руби не знаю

qnikst ★★★★★
()
Ответ на: комментарий от wfrr

>Аргумент.

«Вы просто не умеете их готовить»(с)

Конечно, когдя я достаю новый порномультик, я тоже сажусь «кодить, кодить, кодить...»


Ты просто дурак.

anonymous
()
Ответ на: комментарий от qnikst

хацкелепрога весит 513к, скока руби не знаю

Если так мерять, да еще с рантаймом, то как обычно всех зарулит асм, даже на уникодных строках 8).

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>>Ты просто дурак.

Такое, ощущение, что я задел тебя за живое.


Спрашивается, а чего ты ожидал? Что я буду удивляться твоему остроумию? Не надо сравнивать проганье и задротство.

anonymous
()
Ответ на: комментарий от anonymous

а я демал, что и так можно..

[,-------------[>+<]+++++++++++++>]<<[.<]

qnikst ★★★★★
()

set str «не кури это больше »;puts [string reverse $str];

на tcl 8.5 выдаст: ешьлоб отэ ирук ен

elipse ★★★
()
Ответ на: да B= "dsa" от virvdova

Тогда вот так, по крайней мере на лиспе

(defun reverse-string (string)
  ((lambda (x)
     (funcall (symbol-function x)
              (symbol-name x)))
   (funcall (lambda (x)
              (compile (make-symbol x)
                       ((lambda (z)
                          ((lambda (n)
                             ((lambda (m)
                                `(lambda (x)
                                   ,@(funcall
                                       (funcall z (lambda (f)
                                                    (lambda (i)
                                                      (if (= i m)
                                                        '()
                                                        (cons
                                                          `(rotatef (char x ,i)
                                                                    (char x ,(- n i 1)))
                                                          (funcall f (1+ i)))))))
                                       0)
                                   x))
                              (funcall
                                (funcall
                                 (funcall z (lambda (f)
                                              (lambda (n)
                                                (lambda (a)
                                                  (if (<= n a)
                                                    n
                                                    (funcall (funcall f (1- n))
                                                             (1+ a)))))))
                                 n)
                               0)))
                          (funcall
                            (funcall z (lambda (f)
                                         (lambda (l)
                                           (if (null l)
                                             0
                                             (1+ (funcall f (cdr l)))))))
                            (coerce x 'list))))
                       (lambda (f)
                         (#1=(lambda (x)
                               (funcall f (lambda (y)
                                            (funcall (funcall x x) y))))
                          #1#)))))
           string)))
на плюсы сам как-нибудь переведешь

Love5an
()
Ответ на: комментарий от Love5an

Научи как ты это делаешь. Как ты усложняешь код?

Я пробую, но ничего сложнее пары ненужных строк не появляется.

Я видел хеловорд с классами =). Мастера.

Ruga-Suneto
()

Хм. На непрограммистских специальностях c++ обычно не проходят. На программистских же специальностях не должно быть человека, который не может строку развернуть. Или я что-то не понимаю?

anonymous
()
Ответ на: комментарий от Love5an

ипать!

[code]
CL-USER> (time (reverse-string «не кури это больше»))
Evaluation took:
0.011 seconds of real time
0.011014 seconds of total run time (0.010877 user, 0.000137 system)
100.00% CPU
2 forms interpreted
37 lambdas converted
24,435,103 processor cycles
1,017,104 bytes consed

«ешьлоб отэ ирук ен»
[/code]

CL-USER
()
Ответ на: комментарий от val-amart

>ну ты блин дал, быдлокодер от питона... a[::-1] же! и не позорь нас больше

Вы что все, ослепли чтоли?:) Написал же - без извращений (ладно, питонизмов), чтобы топикстартер переделал код для с++ по аналогии.

anonymous
()

/* C */ void rev(char *s,int d) { int ch; if (d<=1) return; ch=s[0]; s[0]=s[--d]; s[d]=ch; rev(s++,--d); }

char *hello[]=«hello world»; rev(hello,strlen(hello)); puts(hello);

MKuznetsov ★★★★★
()
Ответ на: комментарий от anonymous

Никогда не думал, что решение на Haskell будет настолько короче инкрементировать string (комментарий)

Все таки лисп многословный язык.

Begemoth просто ещё с Хаскеллем не освоился. На Хаскелле можно писать такой же красивый и мощный код.

mv ★★★★★
()
st> 'Удачно сдать сессию!' reverse
'!юиссес ьтадс ончадУ'

P.S. Попробуйте реверснуть фразу «Улыбок тебе дед Мокар»

yoghurt ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.