Другие языки программирования и технологии

C++,построение множества

Дана задача: Есть не пустая последовательность символов, необходимо построить и напечатать множество, элементами которого являются встречающиеся в последовательности знаки препинания. Программу для отыскания знаков и печати полученного множества написать удалось. Остался единственный вопрос: КАК ПОСТРОИТЬ ДАННОЕ МНОЖЕСТВО ЗНАКОВ ПРЕПИНАНИЯ?
Просмотреть последовательность символов, и если какой-то символ является знаком препинания, то добавлять его в множество.

Например с помощью такого говнокода (функцию отыскания знаков препинания и печати заметь на имеющиеся) :

#include < iostream >
#include < string >

#include < set >

// код, определяюший является ли символ знаком препинания
bool is_punctuation_char(char ch) {
return ch == '.' || ch == ',';
}

// печать множества
void print_chars_set(const std::set<char> &chars_set) {
std::cout << "{";

std::set<char>::const_iterator it(chars_set.begin());
if (it != chars_set.end()) {
std::cout << "'" << *(it++) << "'";
}

for (; it != chars_set.end(); ++it) {
std::cout << ", '" << *it << "'";
}

std::cout << "}";
}

// построение множества знаков препинания по последовательности символов
template < typename InputIterator >
void build_punctuation_chars_set(
std::set< char > &punctuation_chars_set,
InputIterator begin,
InputIterator end
) {
for (; begin != end; ++begin) {
if (is_punctuation_char(*begin)) {
punctuation_chars_set.insert(*begin);
}
}
}

int main() {
// ввод последовательности символов
std::string line;

std::cout << "Input string line: " << std::flush;
std::getline(std::cin, line);

// построение множества знаков препинания
std::set<char> chars_set;

build_punctuation_chars_set(chars_set, line.begin(), line.end());

// печать найденного множества
std::cout << "Punctuation chars: ";
print_chars_set(chars_set);
std::cout << std::endl;

return 0;
}
Женя Богданов
Женя Богданов
2 433
Лучший ответ
создать, например, map из всех возможных знаков препинания. далее, когда в тексте находится элемент мапа - добавить его в искомое множество
Роман Дудырин
Роман Дудырин
38 447