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

Вывести на экран слова перед которыми стоят запятая и пробел. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка. http://www.cyberforum.ru/cpp-beginners/thread381546.html
Здравствуйте. Не получается решить задачу. Условие. Дан непустой двусвязный список. Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка. Если в результате удаления элементов список окажется пустым, то положить p2 = NULL. После удаления элементов из списка освобождать память, занимаемую этими элементами. Вот накарябал
C++ Разработать программу удаления в тексте, содержащемся в файле, лишних пробелов. Разработать программу удаления в тексте, содержащемся в файле, лишних пробелов. http://www.cyberforum.ru/cpp-beginners/thread381543.html
Посоветуйте книгу по динамичным структурам C++
Можете посоветовать книгу, в которой было бы понятно описано списки, стеки, очереди, деревья, графы. На простом си
C++ обработка строк
Нужно вычислить количество слов в строке, количество разных слов в строке и вывести каждое четное слово. Слова в строке разделяются пробелами и запятыми.
C++ Парсер лога с использованием boost::regex http://www.cyberforum.ru/cpp-beginners/thread381533.html
Всем привет. Есть задача пропарсить лог антивирусника с ипользованием boot:: regex, и выдать формат Filename - Diagnosis. Лог не очень удобен, так как записывает все в несколько строк. Алгоритм: программа находит имя просканированного файла и проверяет будет ли дальше сообщение о вирусах. Выражения составил, логика работает правильно, но программа выдав ответ по первому файлу закрывается....
C++ ввод двумерного массива из файла как осуществить ввод двумерного массива из файла? как должны размещаться значения в файле? вот такие два вопросика :) заранее всем откликнувшимся спасибо большое:friends: подробнее

Показать сообщение отдельно
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 13:11     Вывести на экран слова перед которыми стоят запятая и пробел.
Вот другой вариант. Посложнее, но, мне кажется, может быть интересен.

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <string>
#include <iterator>
 
/* выводит только слов, стоящие после ", " */
template <typename InputIterator, typename OutputIterator>
OutputIterator & out_comma_space( InputIterator first, InputIterator last, OutputIterator result )
{
    enum : char { SMB_SPACE, SMB_COMMA, SMB_OTHER };         /* варианты символов */
    enum EState : char { NONE, COMMA, SPACE, OUT, OUT_END }; /* варианты состояний */
 
    /* матрица переходов */
    static const EState state_trans_matrix[5][3] =
    {
  /*              ' '      ','    other smb */
  /* NONE    */ { NONE,    COMMA,   NONE },
  /* COMMA   */ { SPACE,   COMMA,   NONE },
  /* SPACE   */ { SPACE,   COMMA,   OUT  },
  /* OUT     */ { OUT_END, OUT_END, OUT  },
  /* OUT_END */ { NONE,    COMMA,   NONE }
    };
 
    /* текущее состояние */
    EState state = NONE;
 
    while( first != last )
    {
        switch( *first )
        {
        case ',':
            state = state_trans_matrix[ state ][ SMB_COMMA ];
            break;
 
        case ' ':
            state = state_trans_matrix[ state ][ SMB_SPACE ];
            break;
 
        default:
            state = state_trans_matrix[ state ][ SMB_OTHER ];
            break;
        };
 
        switch( state )
        {
            case OUT_END:
               *result++ = ';';
               *result++ = ' ';
               break;
 
            case OUT:
               *result++ = *first;
            /* проваливаемся */
            case COMMA:
            case SPACE:
            case NONE:
               first++;
               break;
        }
    }
 
    return result;
}
 
int main( )
{
    std::string in;
 
    while( std::cout << '>' && std::getline( std::cin, in ) && in != "!quit" )
    {
        out_comma_space( in.begin(), in.end(), std::ostream_iterator<char>( std::cout ) );
        std::cout << '\n';
    }
 
    return 0;
}
Добавлено через 5 минут

Не по теме:

FIX: Добавил состояние SPACE

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