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

Определить, какие цифры встречаются в числе несколько раз - C++

Восстановить пароль Регистрация
 
jevanimor
Сообщений: n/a
07.06.2014, 22:34     Определить, какие цифры встречаются в числе несколько раз #1
Здравствуйте!
Помогите написать программу на С++
Ввести натуральное число и определить, какие цифры встречаются несколько раз.
Пример:
Введите число >= 0:
2323
Повторяются: 2, 3

Введите число >= 0:
1234
Нет повторов.

Я новичок в С++, и я не знаю как в программе прописать подобное, чтобы она считывала повторы цифр...прошу помощи)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2014, 22:34     Определить, какие цифры встречаются в числе несколько раз
Посмотрите здесь:

C++ Вывести числа, которые встречаются в массиве несколько раз / один раз
C++ Ввести натуральное число и определить, какие цифры встречаются несколько раз.
C++ Вывести все числа, которые встречаются в этом массиве несколько раз
Найти цифры, которые чаще всего встречаются в заданном натуральном числе N. C++
C++ Какие буквы и сколько раз встречаются в этом тексте.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
08.06.2014, 00:38     Определить, какие цифры встречаются в числе несколько раз #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <string>
#include <sstream>
#include <conio.h>
 
int main()
{
    unsigned long long int num;
    std::string str, result;
    std::ostringstream convert;
    bool check = false;
    std::cout << "Type natural number: ";
    std::cin >> num;
    convert << num;
    str = convert.str();
    
    for(int i = 0; i < str.size(); i++)
    {
        int counter = 0;
        for(int j = 0; j < str.size(); j++)
            if(str[i] == str[j])
                counter++;
        if(counter > 1)
        {
            for(int j = 0; j < result.size(); j++)
            {
                if(str[i] == result[j])
                {
                    check = true;
                    break;
                }
            }
            if(!check)
                result += str[i];
            else
                check = false;
        }
    }
 
    (result.size()) ? std::cout << "Yes: " << result << std::endl
                    : std::cout << "No\n";
    
    std::cout << "\nOperation succeeded\n";
    getch();
    return 0;
}
Regis
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 21
18.11.2015, 22:38     Определить, какие цифры встречаются в числе несколько раз #3
программа мне тоже пригодилась, спасибо большое только добавьте кто-нибудь пожалуйста комменты, что где происходит, буду очень признателен.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
21.11.2015, 16:14     Определить, какие цифры встречаются в числе несколько раз #4
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
    unsigned long long int num;       //
    std::string str, result;          //
    std::ostringstream convert;       //
    bool check = false;           // check будет использоваться в качестве флага
    std::cout << "Type natural number: "; // 
    std::cin >> num;              // Коротко,
    convert << num;           // здесь происходит конвертация
    str = convert.str();          // int в string
    
    for(int i = 0; i < str.size(); i++) // Проверяем всю строку (число)
    {
        int counter = 0; // Счётчик
        for(int j = 0; j < str.size(); j++) // Каждый элемент строки проверяется на совпадение
            if(str[i] == str[j]) // Если встречается
                counter++;   // счётчик увеличивается
        if(counter > 1) // Если элемент повторился более одгог раза, т. е. наткнулся не только на себя
        {
            for(int j = 0; j < result.size(); j++) // Проверяем результат
            {
                if(str[i] == result[j]) // если подобный элемент уже был имеется в результате
                {
                    check = true; // изменяем значение флага
                    break;    // остагавливаем проверку
                }
            }
            if(!check) // Проверяем флаг, если значение не изменилось, т. е. элемент не встречался
                result += str[i]; // добавляем в результат
            else
                check = false; // иначе меняем значение флага на первоначальное
        }
    // Повторяем все операции до конца основного цикла
    }
 
    // Выводим результат
Regis
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 21
21.11.2015, 23:51     Определить, какие цифры встречаются в числе несколько раз #5
спасибо большое, а для чего нужен флаг что он делает?
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
22.11.2015, 01:02     Определить, какие цифры встречаются в числе несколько раз #6
Regis, допустим результат в какой-то момент составляют числа 2815 и при проверке очередного
элемента сталкнулись с числом 1. Чтобы исключить его добавление в результат проверяем содержимое результата.
Это происходит в третьем вложенном цикле:
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int j = 0; j < result.size(); j++)
{
    if(str[i] == result[j]) // Если подобный элемент уже есть
    {
        check = true; // меняем значение check
        break;
    }
}
if(!check) // если значение check не было изменено
    result += str[i]; // элемент добавляется в результат
else // иначе если значение check было изменено, т. е. подобный элемент был (в нашем случае 1 столкнулась с 1)
    check = false; // меняем check на первоначальное значение для последующего использования в алгоритме
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2015, 01:33     Определить, какие цифры встречаются в числе несколько раз
Еще ссылки по теме:

C++ Проверить, что в натуральном числе встречаются цифры А и В.
C++ Ввести натуральное число и определить, какие цифры встречаются несколько раз
Определить какие слова встречаются в строке по одному разу C++

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

Или воспользуйтесь поиском по форуму:
GaldeMarine
7 / 5 / 4
Регистрация: 15.07.2015
Сообщений: 35
22.11.2015, 01:33     Определить, какие цифры встречаются в числе несколько раз #7
Я бы делал через map:

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
#include <iostream>
#include <map>
#include <string>
 
using namespace std;
 
int main(){
 
    map <char, int> Map;
 
    string Num;
 
    getline(cin, Num);
 
    for (int i = 0; i < Num.length(); i++) Map[Num[i]]++;
 
    cout << "Povtor: ";
 
    for (int i = 0; i < 10; i++){
        char c = i + 48;
        if (Map[c]>1) cout << c << " ";
    }
 
    cout << endl;
}
Yandex
Объявления
22.11.2015, 01:33     Определить, какие цифры встречаются в числе несколько раз
Ответ Создать тему
Опции темы

Текущее время: 18:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru