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

Работа со строками. Удаление отдельных символов - C++

Восстановить пароль Регистрация
 
iga7013
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
23.12.2013, 02:07     Работа со строками. Удаление отдельных символов #1
Есть проблемка: нужно написать программу, которая бы удаляла те слова, в которых есть цифры.

Вот с этого я начал, дальше даже не могу представить что делать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <clocale>
#include <iostream>
#include <string>
#include <string.h>  //для char
using namespace std;
int main()
{
    setlocale(0,"rus");
    char *str=new char[200];
    gets(str);
    for(int index=0;index<strlen(str);index++)
    {
        bool b = isdigit(str[index]);
        if(b) //...и тут я не могу сообразить что дальше
 
    }
    cout<<str<<endl;
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2013, 02:07     Работа со строками. Удаление отдельных символов
Посмотрите здесь:

Работа со строками символов C++
C++ Работа со строками как с массивом символов
C++ Изменение отдельных символов в массиве "std::string"
C++ Работа со строками (удаление из строки указанного символа)
Обработка отдельных строк (столбцов) матрицы и работа с диагоналями. Двумерные массивы C++
C++ Работа со строками. Нахождение повторяющихся символов и вывод на экран
C++ Работа со строками символов
C++ Работа со строками символов
Работа со строками. Замена символов C++
C++ Класс для работы со строками (с поддержкой китайских символов)
Создать динамический классовый тип для работы со строками символов C++
с++, работа со строками символов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
school_bot
14 / 12 / 3
Регистрация: 23.12.2013
Сообщений: 84
23.12.2013, 03:26     Работа со строками. Удаление отдельных символов #2
Цитата Сообщение от iga7013 Посмотреть сообщение
Есть проблемка: нужно написать программу, которая бы удаляла те слова, в которых есть цифры.

Вот с этого я начал, дальше даже не могу представить что делать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <clocale>
#include <iostream>
#include <string>
#include <string.h>  //для char
using namespace std;
int main()
{
    setlocale(0,"rus");
    char *str=new char[200];
    gets(str);
    for(int index=0;index<strlen(str);index++)
    {
        bool b = isdigit(str[index]);
        if(b) //...и тут я не могу сообразить что дальше
 
    }
    cout<<str<<endl;
    _getch();
    return 0;
}
заведи ещё int переменную, которая будет меняться, когда ты переходишь к новому слову, то есть:
int spaceIndex1 = ;
if (str[index]) == ' ')
spaceIndex = index;
// это если слова идут через пробелы (вдруг через таб, тогда через || нужно дополнить)
и когда находишь цифру в слове, находи новый spaceIndex2.
Затем просто создай новую строку и положи в неё значения до spaceIndex1 и после spaceIndex2.
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
23.12.2013, 08:10     Работа со строками. Удаление отдельных символов #3
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
40
41
42
43
44
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
 
int main()
{
    string str = "mdkf 1ksd ksmd ksdj93 sdkj3 sdk3 3jd83dn msdis3 dksjd sd2 mklcv";
    string tmp;
    int i = 0;
    bool dig;
    while (i<str.length())
    {
        if (isalpha(str[i]) || isdigit(str[i]))
        {
            dig = false;
            tmp.erase (0,tmp.size());
            while (i<str.length() && (isalpha(str[i]) || isdigit(str[i])))
            {
                if (isdigit(str[i]))
                    dig = true;
                tmp.append(1,str[i]);
                ++i;
            }
            if (dig)
            {
                str.erase (i-tmp.size(),tmp.size());
                i-=tmp.size();
            }
        }
        else ++i;
    }
    i = 0;
    while (i<str.size()-1)
    {
        if (str[i]==' ' && str[i+1]==' ')
        {
            str.erase (i,1);
        }
        else i++;
    }
    cout <<str <<endl;
    return 0;
}
iga7013
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
23.12.2013, 08:17  [ТС]     Работа со строками. Удаление отдельных символов #4
Цитата Сообщение от MicM Посмотреть сообщение
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
40
41
42
43
44
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
 
int main()
{
    string str = "mdkf 1ksd ksmd ksdj93 sdkj3 sdk3 3jd83dn msdis3 dksjd sd2 mklcv";
    string tmp;
    int i = 0;
    bool dig;
    while (i<str.length())
    {
        if (isalpha(str[i]) || isdigit(str[i]))
        {
            dig = false;
            tmp.erase (0,tmp.size());
            while (i<str.length() && (isalpha(str[i]) || isdigit(str[i])))
            {
                if (isdigit(str[i]))
                    dig = true;
                tmp.append(1,str[i]);
                ++i;
            }
            if (dig)
            {
                str.erase (i-tmp.size(),tmp.size());
                i-=tmp.size();
            }
        }
        else ++i;
    }
    i = 0;
    while (i<str.size()-1)
    {
        if (str[i]==' ' && str[i+1]==' ')
        {
            str.erase (i,1);
        }
        else i++;
    }
    cout <<str <<endl;
    return 0;
}
Спасибо, сработала!
Yandex
Объявления
23.12.2013, 08:17     Работа со строками. Удаление отдельных символов
Ответ Создать тему
Опции темы

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