URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4737
[ Назад ]

Исходное сообщение
"Попарно поменять символы местами в стоке"

Отправлено Oleg , 04-Мрт-07 15:29 
уважаемые гуру,
помогите решить задачку в subj.
На Преле это делалось так:
perl -e '$a = "1234567890"; $a =~ s/(.)(.)/$2$1/g; print "$a\n"'


Содержание

Сообщения в этом обсуждении
"Попарно поменять символы местами в стоке"
Отправлено exn , 04-Мрт-07 16:46 
char numb[]="1234567890"
char *tmp;

tmp = bumb;

  for(;*tmp!='\0';*tmp++)
    fprintf(stdout,"%d%d",int (*tmp--);int  (*tmp++));

    
непроверял , но думаю что работать будет


"Попарно поменять символы местами в стоке"
Отправлено exn , 04-Мрт-07 16:47 
>char numb[]="1234567890"
>char *tmp;
>
>tmp = bumb;
>
>  for(;*tmp!='\0';*tmp++)
>    fprintf(stdout,"%d%d",int (*tmp--);int  (*tmp++));
>
>
>
>
>непроверял , но думаю что работать будет


пфу блин,
fprintf(stdout,"%с%с", (*tmp--); (*tmp++));


"Попарно поменять символы местами в стоке"
Отправлено Oleg , 04-Мрт-07 17:52 
Не, думаю, что это не пойдет.
Строка может состоять из любого набора цифр и букв. 1234567890 - это просто пример был.

"Попарно поменять символы местами в стоке"
Отправлено exn , 04-Мрт-07 18:54 
это был наглядный алгоритм, хоть любой набор букав из RFC rus-001(Букварь)

на
############
############
cat invrs.c:

#include <stdio.h>

void usage(char *pname)
{
fprintf(stdout,"Usage: %s string\nExample: %s 1234567890\n", pname, pname);
exit(1);
}

int main(int ac, char **av)
{
        char *params, *tmp;
        int i;

        if(ac<2)
                usage(av[0]);

        for (i=1; i<ac;i++)
        {
        tmp = '\0';
        tmp = params = strdup(av[i]);
        fprintf(stdout, "\n%s -> ", av[i]);
                while(*tmp!='\0')
                {
                        fprintf(stdout, "%c%c",*tmp, *tmp++);
                        *tmp++;
                }
        }

        fprintf(stdout, "\n\n");

return 0;

}


#############
#############
cat Makefile:

invrs:
        gcc -O2 -g invrs.c -o invrs


запускай так:
./invrs lOge alemr


"Попарно поменять символы местами в стоке"
Отправлено exn , 04-Мрт-07 18:55 
Только тебе нужно каждую вторую ? или все инвертировать ? :))))

"Попарно поменять символы местами в стоке"
Отправлено exn , 04-Мрт-07 20:47 
сегодня можно неблагодарить

"Попарно поменять символы местами в стоке"
Отправлено XAnder , 05-Мрт-07 08:30 
>уважаемые гуру,
>помогите решить задачку в subj.
>На Преле это делалось так:
>perl -e '$a = "1234567890"; $a =~ s/(.)(.)/$2$1/g; print "$a\n"'

Perl'овые regexp'ы в PHP тоже работают. Правда, не так элегантно:

$a = "1234567890";
$a = preg_replace('/(.)(.)/', "\\2\\1", $a);
print "$a\n";


"Попарно поменять символы местами в стоке"
Отправлено Oleg , 05-Мрт-07 08:55 
Спасибо!
То, что нужно. Работает!


>Perl'овые regexp'ы в PHP тоже работают. Правда, не так элегантно:
>
>$a = "1234567890";
>$a = preg_replace('/(.)(.)/', "\\2\\1", $a);
>print "$a\n";