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

Функция разбивает строку на две части: до первого вхождения заданного символа и после него - C++

Восстановить пароль Регистрация
 
Warezovvv
 Аватар для Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
27.05.2013, 18:54     Функция разбивает строку на две части: до первого вхождения заданного символа и после него #1
Программу написал но не очень понятно как без цстринг (а это в условии, что нельзя пользоваться cstring).
В самоучителе про цстринг написано и вот что с ним получилось у меня. а надо без него. короче хз как делать. подскажите

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
#include <string>
#include <iostream>
using namespace std;
int main()
{
string s1; 
char ch;   
cout<<"Vvedite stroku: "; 
getline(cin,s1);
cout<<"Vvedite simvol: "; 
cin>>ch;
int x=s1.find(ch);
cout<<"Vsya stroka: "<<s1<<endl; 
cout<<"Do simvola: "; 
for(int i=0;i<x;i++)
{
    cout<<s1[i];
}
cout<<endl;
cout<<"Posle simvola: ";
for(int i=x+1;i<s1.length();i++)
{
    cout<<s1[i];
}
cout<<endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 18:54     Функция разбивает строку на две части: до первого вхождения заданного символа и после него
Посмотрите здесь:

C++ Функция, возвращающая номер самого правого вхождения заданного символа во введенную строку
Разработать рекурсивную функцию, которая после каждого вхождения символа a в строку s добавляет символ b C++
C++ Функция, определяющая позицию самого первого вхождения заданного символа в исходную строку
C++ Написать программу разбиения строки на две части: до первого вхождения заданного символа и после него
C++ Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,191
Завершенные тесты: 1
27.05.2013, 19:11     Функция разбивает строку на две части: до первого вхождения заданного символа и после него #2
вместо find() используйте
C++
1
2
3
4
    for(int x=0;x<s1.length();x++)
    {
        if(s1[x]==ch)break;
    }
Warezovvv
 Аватар для Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
27.05.2013, 21:19  [ТС]     Функция разбивает строку на две части: до первого вхождения заданного символа и после него #3
Цитата Сообщение от zss Посмотреть сообщение
вместо find() используйте
C++
1
2
3
4
    for(int x=0;x<s1.length();x++)
    {
        if(s1[x]==ch)break;
    }
Ок
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 <limits>
#include <locale>
 
using namespace std;
 
int main()
{
    const int size=100;
    int count,count2;
    setlocale(LC_ALL, "rus");
    char firstStr[size],ch;    
    cout<<"Введите строку: ";
    cin.getline(firstStr, size);
    cout<<"Введите символ ";
    cin>>ch;
    count = sizeof(firstStr);
    for(int x=0;x<count;x++)
    {
        if(firstStr[x]==ch)break;
        
    }
    count2=sizeof();
cout<<"Вся строка: "<<firstStr<<endl; 
//--------------------------------------------------
cout<<"Do simvola: "; 
for(int i=0;i<???;i++)
{
    cout<<firstStr[i];
}
cout<<endl;
cout<<"Posle simvola: ";
for(int i=???+1;i<???;i++)
{
    cout<<firstStr[i];
}
cout<<endl;
    return 0;
}
А как найти длину строки до символа и после? ??? - это и есть искомая величина

Добавлено через 1 час 6 минут
??? Подскажите пжлст
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,191
Завершенные тесты: 1
27.05.2013, 21:44     Функция разбивает строку на две части: до первого вхождения заданного символа и после него #4
x- это количество символов до искомого,
соответственно длина всей строки минус x равно длине остатка.
Yandex
Объявления
27.05.2013, 21:44     Функция разбивает строку на две части: до первого вхождения заданного символа и после него
Ответ Создать тему
Опции темы

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