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

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

Войти
Регистрация
Восстановить пароль
 
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
#1

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

22.11.2012, 19:05. Просмотров 536. Ответов 16
Метки нет (Все метки)

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

Поиск в одной строке любого из множества символов, входящих во вторую строку C++
В первый массив перенести все цифры из исходного массива, во второй - все остальные символы. C++
C++ Преобразовать строку, заменив точками все двоеточия, встречающиеся среди первых n/2 символов, и заменив точками все восклицательные знаки...
C++ Ввести строку символов, если ее длина четная, удалить 2 первых и 2 последних символа.
Даны три строки. Определить, можно ли из символов первых двух строк получить третью строку. C++
При просмотре уже созданного файла программа выводит лишь одну строку, а остальные обнуляет C++
даны три строки. определить можно ли из символов первых двух строк получить третью строку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
22.11.2012, 19:10     На одну строку перенести первых k символов, а на вторую остальные #2
barselona1994, а что такое "перенести на строку"? И что подразумевается под первой и второй строкой?
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
Пес войны
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
Пес войны
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
Пес войны
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
Почетный модератор
6474 / 2249 / 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
Почетный модератор
6474 / 2249 / 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
Почетный модератор
6474 / 2249 / 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
Почетный модератор
6474 / 2249 / 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++
Перенести четные элементы массива в первую его половину, а нечетные во вторую 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 символов, а на вторую остальные
Ответ Создать тему
Опции темы

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