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

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

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

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

23.12.2013, 02:07. Просмотров 548. Ответов 3
Метки нет (Все метки)

Есть проблемка: нужно написать программу, которая бы удаляла те слова, в которых есть цифры.

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

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++
Помогите, пожалуйста, написать программу на С++ Разработать программу, которая вводит текст и осуществляет его форматирование...

Работа со строками символов - C++
Помогите решить пжл. Дан текст (2-3 строки) в файле F1. Описать функцию преобразования строки, которая заменяет все повторные...

Работа со строками символов - C++
Заданная строка , состоящая из слов , разделенным одним или несколькими пробелами. Вывести на экран все слова в которых количество гласных...

Работа со строками (замена символов) - C++
Даны две строки. Удалить из каждой из них символы, отсутствующие в другой

Работа со строками. Замена символов - C++
Всем привет. Вот полное задание: &quot;Введи с клавиатуры 3 строки в самой длинной поменяй первое слово с последним и выведи, а в самой короткой...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
822 / 489 / 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;
}
Спасибо, сработала!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 08:17
Привет! Вот еще темы с ответами:

Работа со строками (удаление из строки указанного символа) - C++
Недавно начал изучать С++ в универе. Задали написать программу реализующую удаление из строки указанного символа. Программа компилируется,...

Работа со строками как с массивом символов - C++
Работаю в Borland C++3.1 Нt понимаю почему не компиллируется, выдает постоянно ошибку - &quot;Unable to open file 'TCLASS.LIB' &quot; ...

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.12.2013, 08:17
Ответ Создать тему
Опции темы

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