Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
MikeEl
1 / 1 / 1
Регистрация: 27.03.2012
Сообщений: 52
#1

Строки (из заданной последовательности слов удалить слова, содержащие числа) ) - C++

28.05.2013, 15:59. Просмотров 577. Ответов 3
Метки нет (Все метки)

Из заданной последовательности слов удалить слова, содержащие числа.
http://www.cyberforum.ru/cpp-beginners/thread387226.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 15:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Строки (из заданной последовательности слов удалить слова, содержащие числа) ) (C++):

Из заданной последовательности слов удалить слова, содержащие числа
Из заданной последовательности слов удалить слова, содержащие числа....

Из заданной последовательности слов удалить слова,содержащие слова
Из заданной последовательности слов удалить слова, содержащие числа.

Из заданной последовательности слов удалить слова, содержащие введенный с клавиатуры символ
Нужна ваша помощь, про "спасибо" не забуду) Из заданной последовательности...

В заданной последовательности слов найти все слова, начинающиеся с заданной приставки
В заданной последовательности слов найти все слова, начинающиеся с заданной...

В заданной последовательности слов найдите все слова, начинающиеся с заданной приставки
Люди помогите с задачкой, я пишу на паскале а язык С++ я попросту не знаю...)))...

3
xtorne21st
интересующийся
304 / 275 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
28.05.2013, 17:38 #2
C учётом того факта, что последовательность из символов начинающаяся с цифры не считается словом мы имеем:
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
45
46
47
#include <iostream>
#include <list>
#include <string>
#include <sstream>
#include <iterator>
#include <algorithm>
 
typedef std::istream_iterator<std::string> ii;
 
int main()
{
    std::cout << "Put line: ";
    std::string line, new_line;
    std::getline(std::cin, line);
 
    std::stringstream str(line);
    std::list<std::string> w((ii(str)), ii());
 
    for (std::list<std::string>::iterator p = w.begin(); p != w.end(); ++p)
    {
        if (isdigit((*p)[0]))
        {
            new_line += *p;
            new_line.push_back(' ');
            continue;
        }
        unsigned i = 1;
        for ( ; i < p->size(); ++i)
        {
            if (isdigit((*p)[i]))
            {
                std::list<std::string>::iterator tmp = p;
                tmp++;
                w.erase(p);
                p = --tmp;
                break;
            }
        }
        if (i == p->size())
        {
            new_line += *p;
            new_line.push_back(' ');
        }
    }
 
    std::cout << new_line << std::endl;
}
1
MikeEl
1 / 1 / 1
Регистрация: 27.03.2012
Сообщений: 52
28.05.2013, 21:56  [ТС] #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
C учётом того факта, что последовательность из символов начинающаяся с цифры не считается словом мы имеем:
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
45
46
47
#include <iostream>
#include <list>
#include <string>
#include <sstream>
#include <iterator>
#include <algorithm>
 
typedef std::istream_iterator<std::string> ii;
 
int main()
{
    std::cout << "Put line: ";
    std::string line, new_line;
    std::getline(std::cin, line);
 
    std::stringstream str(line);
    std::list<std::string> w((ii(str)), ii());
 
    for (std::list<std::string>::iterator p = w.begin(); p != w.end(); ++p)
    {
        if (isdigit((*p)[0]))
        {
            new_line += *p;
            new_line.push_back(' ');
            continue;
        }
        unsigned i = 1;
        for ( ; i < p->size(); ++i)
        {
            if (isdigit((*p)[i]))
            {
                std::list<std::string>::iterator tmp = p;
                tmp++;
                w.erase(p);
                p = --tmp;
                break;
            }
        }
        if (i == p->size())
        {
            new_line += *p;
            new_line.push_back(' ');
        }
    }
 
    std::cout << new_line << std::endl;
}
все работает, но, когда ввожу первое слово, имебщее число, то вылитает в ошибку. например: Privat6 vasza do rzeka chęsto65

после такой строчки ошибка
1
xtorne21st
интересующийся
304 / 275 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
29.05.2013, 00:01 #4
Цитата Сообщение от MikeEl Посмотреть сообщение
все работает, но, когда ввожу первое слово, имебщее число, то вылитает в ошибку. например: Privat6 vasza do rzeka chęsto65
после такой строчки ошибка
Мой косяк. Хотя на моей машине отрабатывает как надо. Сейчас, должно быть всё ок:
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
45
46
47
#include <iostream>
#include <list>
#include <string>
#include <sstream>
#include <iterator>
#include <algorithm>
 
typedef std::istream_iterator<std::string> ii;
 
int main()
{
    std::cout << "Put line: ";
    std::string line, new_line;
    std::getline(std::cin, line);
 
    std::stringstream str(line);
    std::list<std::string> w((ii(str)), ii());
 
    for (std::list<std::string>::iterator p = w.begin(); p != w.end(); )
    {
        if (isdigit((*p)[0]))
        {
            new_line += *p++;
            new_line.push_back(' ');
            continue;
        }
        unsigned i = 1;
        bool state = false;
        std::list<std::string>::iterator tmp = p++;
        for ( ; i < tmp->size(); ++i)
        {
            if (isdigit((*tmp)[i]))
            {
                w.erase(tmp);
                state = true;
                break;
            }
        }
        if (!state)
        {
            new_line += *tmp;
            new_line.push_back(' ');
        }
    }
 
    std::cout << new_line << std::endl;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 00:01
Привет! Вот еще темы с решениями:

Удалить из введеной с клавиатуры строки слова, содержащие менее 2-х символов 'а'
Помогите, пожалуйста, написать программу.. Удалить из введеной с клавиатуры...

В заданной последовательности слов, найти все слова, отличные от первого
Задана последовательность из 50 слов, каждое слово из 5 букв. Напечатать все...

В заданной последовательности слов заменить первую букву каждого слова заглавной
1. Дана последовательность слов. Напечатать все слова, предварительно вы*полнив...

Вывести на экран слова заданной строки в обратной последовательности
Суть задания Вывести на экран слова заданной строки в обратной...


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

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

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