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

Нужно инвертировать вторую половину строки. - C++

Восстановить пароль Регистрация
 
Assles
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 7
03.01.2013, 14:38     Нужно инвертировать вторую половину строки. #1
1) нужно инвертировать вторую половину строки.

помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2013, 14:38     Нужно инвертировать вторую половину строки.
Посмотрите здесь:

C++ Поменять местами первую и вторую половину массива.
C++ Передать в массив I(5) вторую половину массива J(10).
Отсортировать первую половину массива по возрастанию, а вторую по убыванию C++
Переставить в первую половину элементы, расположенные на четных позициях, а во вторую – на нечетных C++
C++ Как сделать вторую половину ромба
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
03.01.2013, 14:51     Нужно инвертировать вторую половину строки. #2
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
void foo(char *arr, size_t size){
    for(int i=0;i<size/2;++i)
        std::swap(*(arr+i),*(arr+size-i-1));
}
 
 
int main(){
    char str[]="String ecrever";
    int len=strlen(str);
    std::cout<<"Source: "<<str<<"\n";
    foo(str+len/2,len-len/2);
    std::cout<<"Rezult: "<<str<<std::endl;
    return 0; 
}
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
03.01.2013, 15:32     Нужно инвертировать вторую половину строки. #3
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
#include <algorithm>
 
int main(void)
{
    std::string str = "12345678";
    std::reverse(str.begin() + str.size() / 2, str.end());  
    std::cout << str << std::endl;
    return 0;
}
или
C++
1
std::reverse(s + strlen(s) / 2, s + strlen(s));
для строк в стиле си

Добавлено через 3 минуты
или
C++
1
2
for (int j = strlen(s), i = j-- / 2; i < j; ++i, --j)
        std::swap(s[i], s[j]);
Assles
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 7
08.01.2013, 15:18  [ТС]     Нужно инвертировать вторую половину строки. #4
спасибо, выручили
Yandex
Объявления
08.01.2013, 15:18     Нужно инвертировать вторую половину строки.
Ответ Создать тему
Опции темы

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