Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Написать программу, которая вводит с клавиатуры строку не более 100 символов, еще одну строку не более 50 символов и выводит на экран позиции вхождени - C++
Задание: Написать программу, которая вводит с клавиатуры строку не более 100 символов, еще одну строку не более 50 символов и выводит на...

При просмотре уже созданного файла программа выводит лишь одну строку, а остальные обнуляет - C++
Создал программу с записью структуры в файл. Но при повторном запуске программы и просмотре уже созданного ей же файла выводит лишь одну...

Напечатать в одну строку пятьдесят первых натуральных чисел разделенных запятой с пробелом - C++
Напечатать в одну строку пятьдесят первых натуральных чисел разделенных запятой с пробелом.

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

Поиск в одной строке любого из множества символов, входящих во вторую строку - C++
Осуществить поиск в одной строке любого из множества символов, входящих во вторую строку. как это реализовать?

Ввести строку символов, если ее длина четная, удалить 2 первых и 2 последних символа. - C++
Ввести строку символов, если ее длина четная, удалить 2 первых и 2 последних символа. Решить задачу в VC++.

16
Vourhey
Почетный модератор
6487 / 2261 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
22.11.2012, 19:10 #2
barselona1994, а что такое "перенести на строку"? И что подразумевается под первой и второй строкой?
0
TrueBit
96 / 96 / 12
Регистрация: 19.11.2012
Сообщений: 195
22.11.2012, 19:15 #3
Если имеется ввиду что есть строка, и требуется до k-го символа данной строки скопировать все символы в новую строку - н-р str1, а оставшиеся в другую н-р str2. То можно циклом по i=1,...,k записть все символы исходной строки в str1, а оставшиеся символы, начиная с k+1 в str2. Как это реализовать уже другой вопрос.
0
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
22.11.2012, 20:17  [ТС] #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 строку
0
NeonLost
Пес войны
75 / 86 / 3
Регистрация: 23.02.2012
Сообщений: 653
22.11.2012, 20:59 #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;
}
по хорошему еще бы память почистить...)
1
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
22.11.2012, 21:10  [ТС] #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.....а что обозначает *?
0
NeonLost
Пес войны
75 / 86 / 3
Регистрация: 23.02.2012
Сообщений: 653
22.11.2012, 21:17 #7
указатель...)
можешь заменить на char str[]= и тд
0
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 00:06  [ТС] #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];?
0
NeonLost
Пес войны
75 / 86 / 3
Регистрация: 23.02.2012
Сообщений: 653
25.11.2012, 03:06 #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;
}
1
Vourhey
Почетный модератор
6487 / 2261 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
25.11.2012, 03:17 #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
0
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 14:17  [ТС] #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 попадает слово, то перенести его(слово) и следующее за ним слово- на следующую строчку?
0
Vourhey
Почетный модератор
6487 / 2261 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
25.11.2012, 15:05 #12
Цитата Сообщение от barselona1994 Посмотреть сообщение
как можно , если на позицию k попадает слово, то перенести его(слово) и следующее за ним слово- на следующую строчку?
найти предыдущий пробел, да сделать то же самое, что с k
0
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 15:17  [ТС] #13
Цитата Сообщение от Vourhey Посмотреть сообщение
найти предыдущий пробел, да сделать то же самое, что с k
так я перенесу всю оставшуюся строку после пробела
0
Vourhey
Почетный модератор
6487 / 2261 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
25.11.2012, 15:25 #14
Тогда найди следующее слово, вместо переноса строки до длины, перенесешь следущие два слова. Это будет от предыдущего пробела до следующего второго.
0
barselona1994
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 88
25.11.2012, 15:29  [ТС] #15
Цитата Сообщение от Vourhey Посмотреть сообщение
Тогда найди следующее слово, вместо переноса строки до длины, перенесешь следущие два слова. Это будет от предыдущего пробела до следующего второго.
так как это сделать? ...мне нужен код)
0
25.11.2012, 15:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2012, 15:29
Привет! Вот еще темы с ответами:

Даны три строки. Определить, можно ли из символов первых двух строк получить третью строку. - C++
Не решается.. (( бьюсь 2 дня.. Код свой приводить не буду дабы не сбивать многоуважаемых программистов с толку)

даны три строки. определить можно ли из символов первых двух строк получить третью строку - C++
даны три строки. определить можно ли из символов первых двух строк получить третью строку.

Перенести все числа больше нуля в правую часть массива, остальные в левую - C++
Вот примерно что получилось. void Masiv::zamina(int nn) { for (int i=0;i&lt;nn;i++) { if (g&lt;0) { z=-1; ...

Ввести строку, создать вторую строку в два раза больше, в которую записать симболы первой строки - C++
Ввести с клавиатуры строку симболов (до 20 симболов), динамически создать вторую строку в два раза больше чем введенная первая строка, в...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.