Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Martinz
1 / 1 / 0
Регистрация: 04.01.2011
Сообщений: 37
#1

Инвертировать строку без использования буфера - C++

28.11.2012, 00:44. Просмотров 1215. Ответов 4
Метки нет (Все метки)

Всем привет. Инвертировать строку с использованием второй строки достаточно просто. А как инвертировать строку без использования дополнительного буфера?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 00:44     Инвертировать строку без использования буфера
Посмотрите здесь:

Сортировка, без использования массивов C++
C++ Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а
C++ Решить без использования массивов
БЕЗ использования библиотечных функций C++
C++ Записать в файл строку. Скопировать в буфер последние два слова. Вывести содержимое буфера на экран
C++ Записать функцию без использования указателей
Вывод чисел от 1 до N без использования while, for C++
C++ Наследование без использования двоеточия
Инвертировать строку C++
Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy C++
Инвертировать строку C++
C++ Получить строку из буфера

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,108
28.11.2012, 00:50     Инвертировать строку без использования буфера #2
Совсем-совсем без буфера? Ну можно через попарный xor замещаемых символов.
Martinz
1 / 1 / 0
Регистрация: 04.01.2011
Сообщений: 37
28.11.2012, 01:49  [ТС]     Инвертировать строку без использования буфера #3
Хм интересно. А как это с xor можно сделать?
jasi
1 / 1 / 0
Регистрация: 29.06.2012
Сообщений: 5
28.11.2012, 14:41     Инвертировать строку без использования буфера #4
как вариант рекурсивная функция, но там символьный буфер штоб поменять местами либо использовать в этом месте функцию swap которая все равно внутри себя использует буфер

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void invert(char* s, size_t length)
{
    char* last = s + length - 1;
    if(length < 2 )
    {
        return;
    }
    else
    {
        char ch = *s;
        *s = *last;
        *last = ch;
        invert(++s,length-2);
    }
}
Martinz
1 / 1 / 0
Регистрация: 04.01.2011
Сообщений: 37
05.12.2012, 23:30  [ТС]     Инвертировать строку без использования буфера #5
Нашел я решение этой задачки. Смысл в том, чтобы хранить значения обеих переменных в какой-то одной. То есть если есть x = 1, y = 2, то в x мы заносим значения обеих переменных: x = x + y; а затем эти значения из x раскидываем по переменным в обратном порядке. Так как символьные переменные это тоже числа, мы их можем складывать и вычитать без проблем. В итоге код функции будет выглядеть примерно так:
C++
1
2
3
4
5
6
7
8
9
    void invert(char s[])
    {
        for(int first = 0, last = strlen(s) - 1; first < strlen(s)/2; first++, last--)
        {
            s[first] = s[first] + s[last];
            s[last]  = s[first] - s[last];
            s[first] = s[first] - s[last];  
        }
    }
Yandex
Объявления
05.12.2012, 23:30     Инвертировать строку без использования буфера
Ответ Создать тему
Опции темы

Текущее время: 18:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru