Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Инверсия строки


Автор: Winchester 30.1.2008, 23:27
нужна помощь... уже забадался со строками и их адрессами...
задание написать программу итеративную и рекурсивную для зеркального отображения строки символов
например: abcdef -> fedcba

Автор: CppDevelopeR 30.1.2008, 23:29
так как писать прогу влом, скажи что непонятно, может помогу

Автор: Winchester 30.1.2008, 23:38
да вот в том то и дело что никакого положительно результата не получается...
Код
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>


    main()
{
    clrscr();
    char *s1="abcdef", *s2;
    printf("%s\n", s1);

    int l=strlen(s1);
    *(s2+l)='\0';
    int i=0;
    while (l--) *(s2+(i++))=*(s1+l);
    printf("%s\n", s2);

    getch();
    return 0;
}



не судите строго...

Автор: Dov 31.1.2008, 01:10
Winchester, мысля правильная, но не до конца.  smile Для второй строки нужно память выделить... Ну, хотя бы так, для примера:
Код
int main()
{
    char *s1  = "abcdef",
         *s2  = strdup(s1),
         *p   = s2;
    int   len = strlen(s1);

    printf("%d\n", len);
    
    while(--len >= 0)
        *s2++ = *(s1 + len);

    printf("%s\n", p);

    free(p);

    return 0;
}


Автор: archimed7592 31.1.2008, 07:47
Цитата(Winchester @  30.1.2008,  23:38 Найти цитируемый пост)
char *s1="abcdef", *s2="";

char *s1="abcdef", s2[20];

Автор: threef 31.1.2008, 22:24
Код


void recurse(char *c)
{
    if(*c)
      recurse (c+1);
    putc(*c);
}


void iterative(char *c)
{
   char *end=c;
   while(*end++);
   --end;// end за концом строки
   do
   {
       putc(*--end);
   }while(end>c)
}

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)