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

Доброго времени суток! Есть вопрос. - C++

Восстановить пароль Регистрация
 
dart_wader
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 19
02.01.2011, 10:36     Доброго времени суток! Есть вопрос. #1
Ввести строку произвольной длины (<80 символов). Поменять местами первую и вторую половины строки.

P.S. Язык программирования C++.

Заранее благодарен)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2011, 10:36     Доброго времени суток! Есть вопрос.
Посмотрите здесь:

C++ Есть вопрос по сетевому программированию
C++ вопрос о времени
C++ Есть вопрос
Есть вопрос... C++
C++ Доброго время суток. Как выбрать правильный путь?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
02.01.2011, 12:08     Доброго времени суток! Есть вопрос. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
 
int main()
{
    string s, s1;
    cout<<"enter string\n";
    getline(cin, s);
    s1=s.substr(s.length()/2, s.length());
    cout<<s1.append(s.substr(0, s.length()/2));
 
}
Добавлено через 15 минут
вот ещё короче
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
 
int main()
{
    string s;
    cout<<"enter string\n";
    getline(cin, s);
    cout<<s.substr(s.length()/2, s.length())<<s.substr(0, s.length()/2);
 
}
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
02.01.2011, 12:21     Доброго времени суток! Есть вопрос. #3
dart_wader, Darth Vader
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,693
02.01.2011, 13:05     Доброго времени суток! Есть вопрос. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//////////////////////////////////////////////////////////////////////////////////////
//Ввести строку произвольной длины (<80 символов). Поменять местами первую и вторую 
//половины строки.
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::cout << "String: ";
    T_str  s;
    getline(std::cin, s);
    std::rotate(s.begin(), s.begin() + s.length() / 2, s.end());   
    std::cout << s
              << std::endl;
}
dart_wader
1 / 1 / 0
Регистрация: 01.01.2011
Сообщений: 19
02.01.2011, 17:27  [ТС]     Доброго времени суток! Есть вопрос. #5
По данной задаче есть вот такое решение, но почему-то программа выдаёт ошибку. Помогите, пожалуйста найти:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
int main(void)
{
    char str[80],one[40],two[40];
    int i,n;
    cin>>str;
    n=strlen(str);
    for(i=0;i<n/2;i++)
    str[i]=one[i];
    strcpy_s(two,&str[n/2]);
    
    strcat_s(two,one);
 
    cout<<str;
}
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
02.01.2011, 19:17     Доброго времени суток! Есть вопрос. #6
Вот так, как минимум надо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
void main()
{
    char str[81],   // последний символ \0
         one[41],
         two[41];
    int n;  // кол-во символов в строке
    
    cin.getline(str, 81, '\n');
    n = strlen(str);
    for (int i = 0; i < n/2; i++)
        one[i] = str[i];
    one[n/2] = '\0';
    strcpy_s(two, &str[n/2]);
    strcat_s(two, one);
    cout << two;
    system("pause");
}
Yandex
Объявления
02.01.2011, 19:17     Доброго времени суток! Есть вопрос.
Ответ Создать тему
Опции темы

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