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

На одну строку перенести первых k символов, а на вторую остальные - C++

Восстановить пароль Регистрация
 
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
22.11.2012, 19:05     На одну строку перенести первых k символов, а на вторую остальные #1
у меня задана строка (char). затем вводится число k, как мне на одну строку перенести первых k символов, а на вторую остальные(т.е. разбить строку на две)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2012, 19:05     На одну строку перенести первых k символов, а на вторую остальные
Посмотрите здесь:

C++ Ввести строку символов, если ее длина четная, удалить 2 первых и 2 последних символа.
Даны три строки. Определить, можно ли из символов первых двух строк получить третью строку. C++
даны три строки. определить можно ли из символов первых двух строк получить третью строку C++
C++ Написать программу, которая вводит с клавиатуры строку не более 100 символов, еще одну строку не более 50 символов и выводит на экран позиции вхождени
C++ Напечатать в одну строку пятьдесят первых натуральных чисел разделенных запятой с пробелом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
22.11.2012, 19:10     На одну строку перенести первых k символов, а на вторую остальные #2
barselona1994, а что такое "перенести на строку"? И что подразумевается под первой и второй строкой?
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
22.11.2012, 19:15     На одну строку перенести первых k символов, а на вторую остальные #3
Если имеется ввиду что есть строка, и требуется до k-го символа данной строки скопировать все символы в новую строку - н-р str1, а оставшиеся в другую н-р str2. То можно циклом по i=1,...,k записть все символы исходной строки в str1, а оставшиеся символы, начиная с k+1 в str2. Как это реализовать уже другой вопрос.
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
22.11.2012, 20:17  [ТС]     На одну строку перенести первых k символов, а на вторую остальные #4
Цитата Сообщение от Vourhey Посмотреть сообщение
barselona1994, а что такое "перенести на строку"? И что подразумевается под первой и второй строкой?
есть строка.....затем мне нужно k символов этой строки (от 1 до k) перенести на следующую строку...а оставшиеся символы из 1 строки (k+1 и дальше) перенести на 3 строку

Добавлено через 1 минуту
Цитата Сообщение от TrueBit Посмотреть сообщение
Если имеется ввиду что есть строка, и требуется до k-го символа данной строки скопировать все символы в новую строку - н-р str1, а оставшиеся в другую н-р str2. То можно циклом по i=1,...,k записть все символы исходной строки в str1, а оставшиеся символы, начиная с k+1 в str2. Как это реализовать уже другой вопрос.
как это реализовать?)

Добавлено через 1 час 0 минут
Цитата Сообщение от Vourhey Посмотреть сообщение
barselona1994, а что такое "перенести на строку"? И что подразумевается под первой и второй строкой?
есть строка.....затем мне нужно k символов этой строки (от 1 до k) перенести на следующую строку...а оставшиеся символы из 1 строки (k+1 и дальше) перенести на 3 строку
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
22.11.2012, 20:59     На одну строку перенести первых k символов, а на вторую остальные #5
как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
using namespace std;
int main()
{
    char *str="abcdefghiklmnoprst";
    char *first;
    char *second;
    int k;
    cin>>k;
    if(k>strlen(str) || k<1) 
    {
        cout<<"bad k";
    }
    else 
    {
        first=new char[k];
        second=new char[strlen(str)-k];
        for(int i=0; i<k; i++)
        {
            first[i]=str[i];
        }
        for(int i=k; i<strlen(str); i++)
        {
            second[i]=str[i];
        }
        for(int i=0; i<k; i++)
        {
            cout<<first[i];
        }
        cout<<endl;
        for(int i=k; i<strlen(str); i++)
        {
            cout<<second[i];
        }
    }
    getchar();
    getchar();
    return 0;
}
по хорошему еще бы память почистить...)
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
22.11.2012, 21:10  [ТС]     На одну строку перенести первых k символов, а на вторую остальные #6
Цитата Сообщение от NeonLost Посмотреть сообщение
как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
using namespace std;
int main()
{
    char *str="abcdefghiklmnoprst";
    char *first;
    char *second;
    int k;
    cin>>k;
    if(k>strlen(str) || k<1) 
    {
        cout<<"bad k";
    }
    else 
    {
        first=new char[k];
        second=new char[strlen(str)-k];
        for(int i=0; i<k; i++)
        {
            first[i]=str[i];
        }
        for(int i=k; i<strlen(str); i++)
        {
            second[i]=str[i];
        }
        for(int i=0; i<k; i++)
        {
            cout<<first[i];
        }
        cout<<endl;
        for(int i=k; i<strlen(str); i++)
        {
            cout<<second[i];
        }
    }
    getchar();
    getchar();
    return 0;
}
по хорошему еще бы память почистить...)
*str="abcdefghiklmnoprst.....а что обозначает *?
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
22.11.2012, 21:17     На одну строку перенести первых k символов, а на вторую остальные #7
указатель...)
можешь заменить на char str[]= и тд
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 00:06  [ТС]     На одну строку перенести первых k символов, а на вторую остальные #8
Цитата Сообщение от NeonLost Посмотреть сообщение
как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
using namespace std;
int main()
{
    char *str="abcdefghiklmnoprst";
    char *first;
    char *second;
    int k;
    cin>>k;
    if(k>strlen(str) || k<1) 
    {
        cout<<"bad k";
    }
    else 
    {
        first=new char[k];
        second=new char[strlen(str)-k];
        for(int i=0; i<k; i++)
        {
            first[i]=str[i];
        }
        for(int i=k; i<strlen(str); i++)
        {
            second[i]=str[i];
        }
        for(int i=0; i<k; i++)
        {
            cout<<first[i];
        }
        cout<<endl;
        for(int i=k; i<strlen(str); i++)
        {
            cout<<second[i];
        }
    }
    getchar();
    getchar();
    return 0;
}
по хорошему еще бы память почистить...)
А не могли бы вы привести код без использования указателей....я начинаю убтрать указатели и появляется куча ошибок) ....и что обозначает вот эта строка first=new char[k];?
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
25.11.2012, 03:06     На одну строку перенести первых k символов, а на вторую остальные #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    char str[]="abcdefghiklmnoprst";
    vector<char> first;
    vector<char> second;
    vector<char>::iterator cur;
    int k;
    cin>>k;
    if(k>strlen(str) || k<1) 
    {
        cout<<"bad k";
    }
    else 
    {
        for(int i=0; i<k; i++)
        {
            first.push_back(str[i]);
        }
        for(int i=k; i<strlen(str); i++)
        {
            second.push_back(str[i]);
        }
        for(cur=first.begin();cur!=first.end();cur++)
        {
            cout<<*cur;
        }
        cout<<endl;
        for(cur=second.begin();cur!=second.end();cur++)
        {
            cout<<*cur;
        }
    }
    getchar();
    getchar();
    return 0;
}
Добавлено через 2 минуты
выбирай
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
int main()
{
    char str[]="abcdefghiklmnoprst";
    int k;
    cin>>k;
    if(k>strlen(str) || k<1) 
    {
        cout<<"bad k";
    }
    else 
    {
        for(int i=0; i<k; i++)
        {
            cout<<str[i];
        }
        cout<<endl;
        for(int i=k; i<strlen(str); i++)
        {
            cout<<str[i];
        }
 
    }
    getchar();
    getchar();
    return 0;
}
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.11.2012, 03:17     На одну строку перенести первых k символов, а на вторую остальные #10
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<iterator>
 
int main()
{
    std::string a = "string string string string string string string string";
    short k = 0;
    std::cin>>k;
    std::copy(a.begin(), a.begin()+k, std::ostream_iterator<char>(std::cout)); std::cout<<std::endl;
    std::copy(a.begin()+k, a.end(), std::ostream_iterator<char>(std::cout)); std::cout<<std::endl;
}
Пример работы:
~/Documents/projs/cpp $ ./a.out
23
string string string st
ring string string string string
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 14:17  [ТС]     На одну строку перенести первых k символов, а на вторую остальные #11
Цитата Сообщение от NeonLost Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    char str[]="abcdefghiklmnoprst";
    vector<char> first;
    vector<char> second;
    vector<char>::iterator cur;
    int k;
    cin>>k;
    if(k>strlen(str) || k<1) 
    {
        cout<<"bad k";
    }
    else 
    {
        for(int i=0; i<k; i++)
        {
            first.push_back(str[i]);
        }
        for(int i=k; i<strlen(str); i++)
        {
            second.push_back(str[i]);
        }
        for(cur=first.begin();cur!=first.end();cur++)
        {
            cout<<*cur;
        }
        cout<<endl;
        for(cur=second.begin();cur!=second.end();cur++)
        {
            cout<<*cur;
        }
    }
    getchar();
    getchar();
    return 0;
}
Добавлено через 2 минуты
выбирай
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
int main()
{
    char str[]="abcdefghiklmnoprst";
    int k;
    cin>>k;
    if(k>strlen(str) || k<1) 
    {
        cout<<"bad k";
    }
    else 
    {
        for(int i=0; i<k; i++)
        {
            cout<<str[i];
        }
        cout<<endl;
        for(int i=k; i<strlen(str); i++)
        {
            cout<<str[i];
        }
 
    }
    getchar();
    getchar();
    return 0;
}
как можно , если на позицию k попадает слово, то перенести его(слово) и следующее за ним слово- на следующую строчку?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.11.2012, 15:05     На одну строку перенести первых k символов, а на вторую остальные #12
Цитата Сообщение от barselona1994 Посмотреть сообщение
как можно , если на позицию k попадает слово, то перенести его(слово) и следующее за ним слово- на следующую строчку?
найти предыдущий пробел, да сделать то же самое, что с k
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 15:17  [ТС]     На одну строку перенести первых k символов, а на вторую остальные #13
Цитата Сообщение от Vourhey Посмотреть сообщение
найти предыдущий пробел, да сделать то же самое, что с k
так я перенесу всю оставшуюся строку после пробела
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.11.2012, 15:25     На одну строку перенести первых k символов, а на вторую остальные #14
Тогда найди следующее слово, вместо переноса строки до длины, перенесешь следущие два слова. Это будет от предыдущего пробела до следующего второго.
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 15:29  [ТС]     На одну строку перенести первых k символов, а на вторую остальные #15
Цитата Сообщение от Vourhey Посмотреть сообщение
Тогда найди следующее слово, вместо переноса строки до длины, перенесешь следущие два слова. Это будет от предыдущего пробела до следующего второго.
так как это сделать? ...мне нужен код)
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.11.2012, 18:02     На одну строку перенести первых k символов, а на вторую остальные #16
Цитата Сообщение от barselona1994 Посмотреть сообщение
так как это сделать? ...мне нужен код)
А подумать головой?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2012, 18:33     На одну строку перенести первых k символов, а на вторую остальные
Еще ссылки по теме:

вывод числа вхождений каждого из символов первой строки во вторую строку C++
Ввести строку, создать вторую строку в два раза больше, в которую записать симболы первой строки C++
Перенести четные элементы массива в первую его половину, а нечетные во вторую C++

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

Или воспользуйтесь поиском по форуму:
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 18:33  [ТС]     На одну строку перенести первых k символов, а на вторую остальные #17
Цитата Сообщение от Vourhey Посмотреть сообщение
А подумать головой?
мне нужен код)
Yandex
Объявления
25.11.2012, 18:33     На одну строку перенести первых k символов, а на вторую остальные
Ответ Создать тему
Опции темы

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