Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.96
Vital21
#1

Проверить, есть ли в записи натурального числа N три одинаковые цифры - C++

19.06.2012, 10:45. Просмотров 3696. Ответов 19
Метки нет (Все метки)

дано натуральное число n. Проверить есть ли в записи числа три одинаковые цифры
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 10:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, есть ли в записи натурального числа N три одинаковые цифры (C++):

Проверить, есть ли в записи числа три одинаковые цифры - C++
Дано натуральное число N. Проверить, есть ли в записи числа три одинаковые цифры.

Проверить, есть ли в записи числа m цифры, совпадающие с цифрами в записи числа n - C++
Помогите составить программу. Условие: Даны два натуральных числа m и n{m< 9999, n < 9999). Проверить, есть ли в записи числа m...

Проверить, есть ли в десятичной записи заданного натурального числа две единицы подряд - C++
Циклы с предусловием и с постусловием (while; do ... while) Дано натуральное число. Верно ли, что в его десятичной записи есть две...

Проверить есть ли одинаковые цифры в числе - C++
Дано четырёхзначное число,если в нем 3 или больше одинаковых цифр,то выводится <YES>,если меньше 3 цифр,то <NO> Пример : Ввод : 1110 ...

Проверить, есть ли в трехразрядном числе одинаковые цифры - C++
Доброго времени суток всем, Прошу помощи, я новичек по этому не сильно кричите.. Есть бешенное желание научиться писать на Си++,...

Если у данного натурального четырехзначного числа все цифры одинаковые, то найти их сумму, в противном случае их произведение - C++
помогите найти программный код пожалуйста

19
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
19.06.2012, 11:26 #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
#include <iostream>
#include <string.h>
using namespace std;
char str[100];
int n,x;
string str1=" ";
void poisk(string str1)
{
for (int i=0;i<str1.size();i++)
{
for (int j=i;j<str1.size();j++) {if (str[i]==str[j]&&i!=j) n++;}
if (n==2) x=1;
n=0;   
}
if (x>=1) cout<<"Sodergut"<<endl;
else cout<<"Ne sodergut"<<endl;    
}
 
int main()
{
cout<<"Vvedite chislo - "; cin >>str;
str1=str1+str;
poisk(str1);    
system("PAUSE"); 
return 0;
}
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 11:30 #3
надеюсь никто смеяться не будет ))
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
#include<iostream>
#include<math.h>
using namespace std;
 
int main()
{
    int i=0,count,n,k=0;
    int array[]={11,12,13,14,15,16,17,18,19,20};     //не обращайте внимания :D
    cin>>n;
    while (n > 0)
        {
            array[i]= n % 10;
            i++;
            n = n / 10;
        }
    for (int j = 0; j < 10; j++)
        {
            count=0;
            for (int i = 0; i < 10; i++)
                if (j == array[i])
                    {
                        count++;
                        if (count == 3) k = 1;
                    }
 
        }
    if (k == 1)
        cout<<endl<<"Est"<<endl;
            else cout<<"Net"<<endl;
    system("pause");
}
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
19.06.2012, 11:35 #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
#include <iostream>
#include <map>
#include <algorithm>
 
bool contains_n_equal_digits(const int val, const int n)
{
   std::map<int, int> dict;
   for (int v = val; v; v /= 10)
   {
      ++dict[v % 10];
   }
   return std::find_if(dict.begin(), dict.end(), [n](const std::map<int, int>::value_type& pair)
   {
      return pair.second == n;
   }) != dict.end();
}
 
int main()
{
   const int n = 3;
   int value = 0;
   std::cin >> value;
   if (contains_n_equal_digits(value, n))
   {
      std::cout << "Contains" << std::endl;
   }
   else
   {
      std::cout << "No contains" << std::endl;
   }
}
Bash
1
2
3
forever@pterois:~/My_pro1/cpp_pro$ ./new 
21233245
Contains
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 11:38 #5
не буду создавать новую тему и спрошу тут, в общем я разбивал число на цифры, и клал их в массив array[], и возникла проблемка, массив типа int, и когда в процессе выполнения работы программы, число делиться на цифры ( и заносится в массив ), возникает неразбериха, ведь в массиве уже содержаться какие то числа, например {8841, 2314, 0 , 214214, 1023, 0, 321, 0} - допустим так, и когда вводишь число "3", естественно что в нем нет трех одинаковых цифр, но в массиве лежат три нуля, и программа скажет - все окей, у вас есть три одинаковых числа. Ломал голову, как бы так массив заполнить, чтобы не было такой проблемы, поэтому сделал довольно тупо:
C++
1
int array[]={11,12,13,14,15,16,17,18,19,20};
понятно, что теперь когда разбиваешь число на цифры, такой неразберихи не получится. Но согласитесь, довольно глупо так делать. Так как же выйти из такой ситуации ? можно массив заполнить какими-то особыми значениями, или использовать например вектор? а если без вектора, и вообще не меняя идею решения задачи (соображал на ходу, возможно я вообще пошел не правильным путем ? ).

Добавлено через 1 минуту
ForEveR
зачем вы в main определяете n = 3, если в кач-ве параметра все равно передаете просто "3" ?
1
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
19.06.2012, 11:57 #6
Блеск
А если число будет содержать больше или меньше цифр чем 10? Лучше создавать пустой массив, а в цикле просто прописать размерность массива чтобы не считало пустые ячейки как нули.
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 11:58 #7
я почти уверен, что все работает =) всего цифр 10 , от 0 до 9
в цикле
C++
1
for (int j = 0; j <10 ; j++ )
как раз я проверяю все эти цифры, т.е. j =0 , j=1, j=2...j=9
и сравниваю с тем что лежит в массиве ( а там такие же цифры)
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
19.06.2012, 12:03 #8
bLesk, Быдлокодерский стиль, не находите?
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 12:06 #9
ForEveR
вполне, прошу прощения, я только учусь, и буду только рад если меня поправят =)
0
grizlik78
Эксперт С++
1967 / 1460 / 120
Регистрация: 29.05.2011
Сообщений: 3,022
19.06.2012, 12:07 #10
Цитата Сообщение от bLesk Посмотреть сообщение
Так как же выйти из такой ситуации ?
Когда разбиваешь на цифры ты (сам того не желая) подсчитываешь их количество в переменной i. Вот и используй полученное значение как количество инициализированных элементов. Если i получилось меньше трёх, то ответ сразу отрицательный. Если 3 или больше, то в дальнейшем надо проверять не все 10 элементов массива, а столько, сколько их было записано.
1
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 12:11 #11
Aesonet
если меньше 10 чисел, то все будет нормально. При больше 10 действительно будут проблемы, но я подумал, что скорее всего есть какое-то ограничение на размер числа.
И я не совсем уловил, как вы собираетесь прописывать в цикле размерность массива, если не знаете заранее какое число введет пользователь? Если не ошибаюсь, можно с вектором так делать, а с массивом как ума не приложу.

Добавлено через 28 секунд
ага понял, спасибо grizlik78
0
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
19.06.2012, 12:22 #12
Цитата Сообщение от ForEveR Посмотреть сообщение
bLesk, Быдлокодерский стиль, не находите?
Эм, а что в нём быдлокодерского?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
19.06.2012, 12:23 #13
Aesonet, Зачем создавать массив на 10 элементов да еще и заполнять его какие-то левыми данными, если можно выделить память под конкретно нужное число элементов?
1
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 12:35 #14
А как узнать, сколько вам понадобиться памяти, заранее ?
0
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
19.06.2012, 12:36 #15
Спасибо, буду учитывать тож. А в моем коде, нет ничего "быдлокодерского"?
0
19.06.2012, 12:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2012, 12:36
Привет! Вот еще темы с ответами:

Для натурального числа определить истинность предиката «все цифры в записи числа равны» - C++
Для натурального числа определить истинность предиката «все цифры в записи числа равны». Если предикат истинен, то вывести эту цифру.

Выбросить из записи введенного натурального числа n цифры 0 и 5 - C++
Я не могу записать эту задачу на языке си с помощью цикла, использовать массив нельзя 10. Выбросить из записи введенного натурального...

Есть в записи числа m цифры, которые совпадают с цифрами в записи числа n - C++
Дано два натуральных числа n(&lt;=9999) и m (&lt;=9999). Проверить, есть в записи числа m цифры, которые совпадают с цифрами в записи числа n. ...

Проверить есть ли в массиве одинаковые числа - C++
Как можно проверить есть ли в массиве числа с одинаковым значением? числа вводяться с клавиатуры.


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

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

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