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

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

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

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

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

Всем привет. Инвертировать строку с использованием второй строки достаточно просто. А как инвертировать строку без использования дополнительного буфера?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 00:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инвертировать строку без использования буфера (C++):

Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy - C++
Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy

Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а - C++
Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а, необходимо для интерактивного ввода в...

Инвертировать строку - C++
Определите класс strtype_a, в состав которого входит функция-член invert, инвертирующая строку и конструктор, параметрами его являются...

Инвертировать строку - C++
Разбираюсь со строками. Почему на выводе получается "sace"?(должно быть "aces", т.е. переворот строки) Перепроверил уже несколько раз....

Получить строку из буфера - C++
Добрый день. Помогите пожалуйста, преобразовать строку из буфера char data; boost::system::error_code error; ...

Написать функцию, которая считывает из буфера клавиатуры строку в s и возвращает длину строки - C++
*с указателями*- написать функцию которая считывает из буфера клавиатуры строку в s и возвращает длину строки. :scratch:

4
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
28.11.2012, 00:50 #2
Совсем-совсем без буфера? Ну можно через попарный xor замещаемых символов.
0
Martinz
1 / 1 / 0
Регистрация: 04.01.2011
Сообщений: 37
28.11.2012, 01:49  [ТС] #3
Хм интересно. А как это с xor можно сделать?
0
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);
    }
}
0
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];  
        }
    }
0
05.12.2012, 23:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2012, 23:30
Привет! Вот еще темы с ответами:

Вывод чисел от 1 до N без использования while, for - C++
Здравствуйте! Помогите пожалуйста, не могу разобраться в чем дело. На выходе числа 1 и 2 не зависимо от входных. #include &lt;iostream&gt; ...

БЕЗ использования библиотечных функций - C++
Помогите написать программу... Написать программу, которая (без использования библиотечных функций для обработки строк), копировала бы...

Наследование без использования двоеточия - C++
Добрый вечер! Задача: Сделать наследование без использования &quot;:&quot;. Заранее спасибо!

Сортировка, без использования массивов - C++
Скажите, пожалуйста, можно-ли, имея в &quot;распоряжении&quot; только операторы выбора и циклы(никаких массивов!) выполнить следующее задание: ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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