Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 9
1

Замещение первой половины строки второй, а второй – первой

10.04.2020, 08:19. Показов 2330. Ответов 8

Author24 — интернет-сервис помощи студентам
Написать программу замещения первой половины строки второй, а второй – первой.
Нужно сделать через char
У меня есть через string(нужно что бы я вводил любую строку включая и буквы и цифры и пробелы)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
char temp;
getline(cin, a);
for (int i = 0; i < a.size() / 2; ++i) {
if(a[i] == ' ') continue;
temp = a[i];
a[i] = a[a.size() / 2 + i];
a[a.size() / 2 + i] = temp;
}
cout<<a;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2020, 08:19
Ответы с готовыми решениями:

Поменять местами элементы первой половины массива с элементами второй половины
Сформировать массив А из 20 случайных целых чисел в диапазоне от минус 30 до 30. Напечатать его....

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой...

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции, с которой вторая строка содержится в первой.
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции, с...

Преобразовать массив: сумма элементов первой половины должна быть как можно ближе к сумме элементов второй половины
Преобразуйте одномерный массив таким образом,чтобы сумма элементов в его первой половине была бы...

8
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
10.04.2020, 08:42 2
Цитата Сообщение от Em1k22 Посмотреть сообщение
Написать программу замещения первой половины строки второй, а второй – первой.
А если строка нечетной длины, то что тогда?

Цитата Сообщение от Em1k22 Посмотреть сообщение
У меня есть через string
Попробовал "abcde". Получил "cdabe". Что это за "замещение половины" такое?
0
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 9
10.04.2020, 08:48  [ТС] 3
да,с нечетным количеством у меня не корректно работает

Добавлено через 2 минуты
мне надо что бы любые символы которые я бы не ввел просто поменялись местами первая часть со второй
0
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 9
10.04.2020, 08:50  [ТС] 4
вот так
Изображения
 
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
10.04.2020, 08:53 5
Цитата Сообщение от Em1k22 Посмотреть сообщение
мне надо что бы любые символы которые я бы не ввел просто поменялись местами первая часть со второй
Еще раз повторяю вопрос: если строка нечетной длины, то что тогда делать?
0
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 9
10.04.2020, 08:54  [ТС] 6
тогда центральный элемент на месте остаться должен
0
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 9
11.04.2020, 07:57  [ТС] 7
актуально,так и не вышло сделать
0
823 / 626 / 321
Регистрация: 24.02.2017
Сообщений: 2,209
11.04.2020, 09:23 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main(){
  string s,t;
  int len;
 
  getline(cin,s);
  len=s.length();
  len%2==0 ? t="" : t=s[len/2];
  s+=t;
  size_t i=0;
  while(i<len/2)
     s+=s[i++];
  len%2==0 ? s.erase(0,len/2) :s.erase(0,len/2+1);
  cout<<s;
  system("pause");
  return 0;
}
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
11.04.2020, 11:09 9
Лучший ответ Сообщение было отмечено Em1k22 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main(){
    const int N = 255;
    char S[N];
 
    cin.getline(S,N);
 
    int len = strlen(S);
    int half = len / 2;
    int dx = half + len % 2;  //смещение вправо на 1 при нечётной длине строки
 
    for (int i=0; i<half; i++){
        swap(S[i],S[i+dx]);
    }
 
    cout << S << '\n';
}
1
11.04.2020, 11:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2020, 11:09
Помогаю со студенческими работами здесь

Сортировка первой половины массива по возрастанию, а второй по убыванию
Здравствуйте, помогите пожалуйста. Дан массив А, состоящий из 20 целых чисел. Отсортируйте первую...

Функция определяющая суммы первой и второй половины массива
как разработать функцию , которая определяет суммы первой и второй половины динамического массива и...

Сортировка элементов первой половины одномерного массива по убыванию, а второй – по возрастанию
Добрый Вечер!!!Пожалуйста помогите решить задачу на Шаблоны Функций: Разработайте программу, в...

Двоичные файлы: Переписать элементы первой половины файла в обратном порядке, а второй в исходном
Переписать элементы первой половины файла в обратном порядке, а второй в исходном. Помогите...

Расположить элементы первой половины одномерного массива в порядке возрастания, а второй - в порядке убывания
Нужно расположить элементы первой половины одномерного массива в порядке возрастания, а второй...

Добавить к первой строке 5 символов второй строки
Добавить к первой строке 5 символов второй строки.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru