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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.64
advan
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 25
#1

Верно ли, что число содержит ровно три одинаковые цифры? - C++

20.11.2010, 20:04. Просмотров 3635. Ответов 22
Метки нет (Все метки)

Верно ли, что это число содержит ровно три одинаковые цифры, как, например, числа 6676, 4544, 0006 и т.д.?
Помогите. Я знаю как вызвать последнее число но как вызвать 1,2,3 ?(желательно без использования масивов)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2010, 20:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Верно ли, что число содержит ровно три одинаковые цифры? (C++):

Определить, верно ли, что заданное натуральное число содержит ровно три одинаковые цифры - C++
Решите задачу дано натуральное число n n 10000 определить, верно ли, что это число содержит ровно три одинаковые цифры, как например,...

Дано натуральное четырехзначное число n.верно ли что это число содержит три одинаковые цифры - C++
дано натуральное четырехзначное число n.верно ли что это число содержит три одинаковые цифры

Дано натуральное четырехзначное число n. Верно ли что это число содержит три одинаковые цифры - C++
Дано натуральное четырехзначное число n. Верно ли что это число содержит три одинаковые цифры

Дано число n. Верно ли, что это число содержит ровно 3 одинаковых цифры - C++
Помогите пожалуйста с решением очень надо.))) С++ Добавлено через 44 минуты Парни выручайте... осталось 30 минут((( срочно нужно, а...

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

Дано натуральное число <= 9999; верно ли, что оно содержит три одинаковых цифры? - C++
дано натуральное число &lt;=9999 верно ли что оно содержит три одинаковых цифры как например 6676, 4544, 0006?

22
M128K145
Эксперт С++
8289 / 3509 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
20.11.2010, 21:42 #16
Вот решение с массивом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int mas[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
while(number > 0)
{
    ++mas[number % 10];
    number /= 10;
}
for(int i = 0; i < 10; ++i)
    if(mas[i] == 3)
    {
        std::cout<<"true";
        break;
    }
if(i == 10)
    std::cout<<"false";
Kastaneda, slice, думаю, вам теперь ясен смысл задания и ваш спор решен? А теперь попробуйте сделать без массива
1
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
20.11.2010, 21:44 #17
M128K145
+1


Kastaneda
Цитата Сообщение от Kastaneda Посмотреть сообщение
Я предлогал варианты, как сделать без массива
я не увидел ни одного варианта, объясни как сделать без массива.
1
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
20.11.2010, 21:45 #18
Вот решение через функции без массивов. Подправьте там если что не так. Выводит 1 или 0.
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int countofdigit(int x)
{
    int p=x, k=1;
    while (p>=10)
    {
        p/=10;
        k++;
    }
    return k;
}
 
int numeral(int x, int index)
{
    int n=countofdigit(x),p=x;
    for (int i=n; i>index; i--)
    {
        p/=10;
    }
    if (p<10) return p;
    return p%((p/10)*10);
}
 
bool checknum(int x)
{
    int n=countofdigit(x),k=1,temp;
    for (int i=1; i<=n; i++)
    {
        temp=numeral(x,i);
        for (int j=i+1; j<=n; j++)
        {
            if (temp==numeral(x,j))
            {
                k++;
            }
        }
        if (k==3)
        {
            return true;
        }
        else
        {
            k=1;
        }
    }
    return false;
}
 
void main()
{
    int x;
    cin>>x;
    cout<<checknum(x);
    system("pause");
}
0
M128K145
Эксперт С++
8289 / 3509 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
20.11.2010, 21:45 #19
Цитата Сообщение от slice Посмотреть сообщение
объясни как сделать без массива
В лоб - перебором остатков от деления на степени 10


Цитата Сообщение от almazsr Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
int countofdigit(int x)
{
        int p=x, k=1;
        while (p>=10)
        {
                p/=10;
                k++;
        }
        return k;
}
Можно написать проще,
C++
1
int n = log10(x) + 1;
2
advan
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 25
20.11.2010, 21:52  [ТС] #20
Все спасибо всем понял
VASSUV запустил - работает
0
odip
Эксперт С++
7157 / 3219 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.11.2010, 21:56 #21
я не увидел ни одного варианта, объясни как сделать без массива.
Читай внимательнее
VASSUV написал код
0
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
20.11.2010, 21:57 #22
Цитата Сообщение от advan Посмотреть сообщение
Все спасибо всем понял
VASSUV запустил - работает
Будет работать если числа из того диапазона. А если например я хочу больше 10000 ввести, то хрен.
0
VASSUV
MiThEoN
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 418
Записей в блоге: 2
Завершенные тесты: 1
20.11.2010, 23:17 #23
Цитата Сообщение от almazsr Посмотреть сообщение
Будет работать если числа из того диапазона. А если например я хочу больше 10000 ввести, то хрен.
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
int len_a(int  a1)
{
    int len=0;
    while(a1>1)
    {
        a1=int(a1/10);
        len++;
    }
    return len+1;
}
int main ()
{
    int a;
    int a1;
    int ai,aj,ak;
    int len,lena=0;
    int l;
    bool flag=false;
    cout<<"a=";
    cin>>a;
    lena=len_a(a);
    for(int i=0;i<lena;i++)
    {
        for(int j=i+1;j<lena;j++)
        {
            for(int k=j+1;k<lena;k++)
            {
                ai=int(a/pow(10.0,lena-i-1));
                len=len_a(ai);
                l=len-1;
                while(l>0)
                {
                    ai-=(int(ai/pow(10.0,l)))*pow(10.0,l);
                    l--;
                }
                aj=int(a/pow(10.0,lena-j-1));
                len=len_a(aj);
                l=len-1;
                while(l>0)
                {
                    aj-=(int(aj/pow(10.0,l)))*pow(10.0,l);
                    l--;
                }
                ak=int(a/pow(10.0,lena-k-1));
                len=len_a(ak);
                l=len-1;
                while(l>0)
                {
                    ak-=(int(ak/pow(10.0,l)))*pow(10.0,l);
                    l--;
                }
                if(ai==aj && ai==ak)
                    flag=true;
            }
        }
    }
    if(flag)
        cout<<"verno\n";
    else
        cout<<"ne verno\n";
    system ( " Pause " );
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2010, 23:17
Привет! Вот еще темы с ответами:

Установить, что число содержит ровно две разные цифры - C++
Буду премного благодарен за помощь. Натуральное число называется двояким, если в его десятичной записи встречается не более двух...

Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры - C++
Задача на С++ (do..while) Нужно ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры? Буду...

Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры (не обязательно ст - C++
Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры (не обязательно стоящие рядом) Пример: ...

Вложенные циклы(Вывести на экран все четырехзначные числа, в которых ровно три одинаковые цифры) - C++
Вывести на экран все четырехзначные числа, в которых ровно три одинаковые цифры. Подсчитать количество таких чисел.с (использованием...


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

Или воспользуйтесь поиском по форуму:
23
Yandex
Объявления
20.11.2010, 23:17
Ответ Создать тему
Опции темы

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