Для заданной символьной строки вывести на экран те символы, которые встречаются в ней только один раз - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Для заданной символьной строки вывести на экран те символы, которые встречаются в ней только один раз.

Решение задачи: «Для заданной символьной строки вывести на экран те символы, которые встречаются в ней только один раз»

textual
Листинг программы
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <iterator>
#include <map>
 
struct Random {
  Random(int min_, int max_) : min(min_), max(max_) {}
  int operator()() { return rand() % (max - min + 1) + min; }
  int min, max;
};
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  std::string line;
  std::generate_n(std::back_inserter(line), 25 + rand() % 5, Random('a', 'z'));
  std::cout << "Line '" <<  line << "'" << std::endl;
 
  std::map<char, int> counts;
  for (std::string::const_iterator i = line.begin(); i != line.end(); ++i)
    ++counts[*i];
 
  std::cout << "Letters, met once: ";
  for (std::map<char, int>::const_iterator i = counts.begin();
    i != counts.end(); ++i)
    if (i->second == 1)
      std::cout << i->first << " ";
}

Объяснение кода листинга программы

В этом коде:

  1. Структура Random используется для генерации случайных чисел в заданном диапазоне.
  2. В функции main создается строка line длиной от 25 до 30 символов, выбираемых случайным образом из диапазона от 'a' до 'z'.
  3. Создается map counts, в котором ключами являются символы из строки line, а значениями - количество их вхождений в строку.
  4. В цикле происходит перебор всех символов строки line и увеличение соответствующего значения в map counts.
  5. Выводится на экран список символов, встречающихся в строке только один раз.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы