Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/89: Рейтинг темы: голосов - 89, средняя оценка - 4.52
1 / 1 / 1
Регистрация: 28.11.2010
Сообщений: 29

Количество различных цифр в числе

16.12.2010, 01:19. Показов 17212. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Задали написать программу на С++ для нахождения количество различных цифр в числе с использованием массива.

Я написала, но как-то некорректно работает. Сижу уже не один час, не могу понять в чем проблема.
Помогите, пожалуйста, разобраться.
А то уже завтра сдавать надо!

Вот мой код:

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
#include <iostream>
using namespace std;
int main()
{
const int size=10;
int mas[size]={0},i,n,m=0;
cout<<"Enter number: "<<endl;
cin>>n;
cout<<endl;
    while(n>0)
    {
        i=n%10;
        mas[i]++;
        n/=10;
    }
    
 
    for(i=0;i<size-1;i++)
    {
        for(int k=i+1;k<size; k++)
        {
            if(mas[i]==mas[k])
            {
                m++;
                break;
            }
        }
    }
 
cout<<"It has "<<size-m<<" different numbers!"<<endl;
cout<<endl<<endl;
 
return 0;
}
 Комментарий модератора 
Дублирование тем запрещено правилами форума (п. 3.4). Не плодите одинаковых тем.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2010, 01:19
Ответы с готовыми решениями:

Количество различных цифр в числе
Дано натуральное число n. Подсчитать количество различных цифр, встречающихся в k-старших разрядах его записи. Почему не работает...

Количество различных цифр в числе рекурсия
для натурального n вывести количество разных цифр, участвовавших в его записи. Помогите составить рекурсивную функцию, я плохо...

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

10
 Аватар для caliper
10 / 10 / 3
Регистрация: 07.12.2010
Сообщений: 131
16.12.2010, 02:09
Вместо этого:
C++
1
2
3
4
5
6
7
8
9
10
11
for(i=0;i<size-1;i++)
    {
        for(int k=i+1;k<size; k++)
        {
            if(mas[i]==mas[k])
            {
                m++;
                break;
            }
        }
    }
Нужно что-то вот такое:
C++
1
2
3
for(int i=0; i<10; i++)
        if(mas[i])
            m++;
И выводить результат так:
C++
1
cout<<"It has "<<m<<" different numbers!"<<endl;
Добавлено через 1 минуту
Я бы как-то так написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main()
{
    int mas[10]= {0};
    int n, counter = 0;
    cin >> n;
    while(n)
    {
        mas[n%10]++;
        n/=10;
    }
    for(int i=0; i<10; i++)
        if(mas[i])
            counter++;
    cout << counter;
        return 0;
}
0
1 / 1 / 1
Регистрация: 28.11.2010
Сообщений: 29
16.12.2010, 09:08  [ТС]
хм....так тут же нет проверки на то, есть ли одинаковые цифры или нет...
а она нужна....
0
 Аватар для caliper
10 / 10 / 3
Регистрация: 07.12.2010
Сообщений: 131
16.12.2010, 09:23
Так что все таки нужно сделать по заданию?)
Найти количество различных цифр из которых состоит число?
Цитата Сообщение от Alecia Посмотреть сообщение
Задали написать программу на С++ для нахождения количество различных цифр в числе с использованием массива.
Или найти сколько одинаковых цифр составляют запись числа?
Цитата Сообщение от Alecia Посмотреть сообщение
хм....так тут же нет проверки на то, есть ли одинаковые цифры или нет...
а она нужна....
0
38 / 38 / 17
Регистрация: 15.12.2010
Сообщений: 110
16.12.2010, 10:29
Alecia; чуть подправил твое решение надеюсь так как тебе нужно делано
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
#include <iostream>
 
using namespace std;
 
int main(){
int size;
cout<<"Vvedi kol-vo cifr v chisle:";
cin>>size;
int mas[size],i,j,n,m=0;
cout<<"Enter number:"<<endl;
cin>>n;
cout<<endl;
    while(n!=0)
    {
        for(j =0; j<size;j++){
        i=n%10;
        mas[j]=i;
        n/=10;
        cout<<mas[j]<<" "<<endl;
        }
    }
    for(j=0;j<size;j++)
    {
        for(int k=j+1;k<size; k++)
        {
            if(mas[k] == mas[j])
            {
                m++;
                break;
            }
        }
    }
cout<<"It has "<<size-m<<" different numbers!"<<endl;
cout<<endl<<endl;
return 0;
}
0
1 / 1 / 1
Регистрация: 28.11.2010
Сообщений: 29
16.12.2010, 23:17  [ТС]
Цитата Сообщение от eczo Посмотреть сообщение
Alecia; чуть подправил твое решение надеюсь так как тебе нужно делано
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
#include <iostream>
 
using namespace std;
 
int main(){
int size;
cout<<"Vvedi kol-vo cifr v chisle:";
cin>>size;
int mas[size],i,j,n,m=0;
cout<<"Enter number:"<<endl;
cin>>n;
cout<<endl;
    while(n!=0)
    {
        for(j =0; j<size;j++){
        i=n%10;
        mas[j]=i;
        n/=10;
        cout<<mas[j]<<" "<<endl;
        }
    }
    for(j=0;j<size;j++)
    {
        for(int k=j+1;k<size; k++)
        {
            if(mas[k] == mas[j])
            {
                m++;
                break;
            }
        }
    }
cout<<"It has "<<size-m<<" different numbers!"<<endl;
cout<<endl<<endl;
return 0;
}

А нельзя сделать её без использования ввода размера числа?
Я пробовала, но она тогда "0" не считает, если он в числе есть
0
38 / 38 / 17
Регистрация: 15.12.2010
Сообщений: 110
16.12.2010, 23:41
Цитата Сообщение от Alecia Посмотреть сообщение
А нельзя сделать её без использования ввода размера числа?
Я пробовала, но она тогда "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
#include <iostream>
 using namespace std;
int main(){
const int size=5;
int mas[size],i,j,n,m=0;
cout<<"Enter number:"<<endl;
cin>>n;
cout<<endl;
    while(n!=0)
    {
        for(j =0; j<size;j++){
        i=n%10;
        mas[j]=i;
        n/=10;
        cout<<mas[j]<<" "<<endl;
        }
    }
    for(j=0;j<size;j++)
    {
        for(int k=j+1;k<size; k++)
        {
            if(mas[k] == mas[j])
            {
                m++;
                break;
            }
        }
    }
cout<<"It has "<<size-m<<" different numbers!"<<endl;
cout<<endl<<endl;
return 0;
}
при вводе 12003 отвечает it hase 4{бла-бла-бла}
0
1 / 1 / 1
Регистрация: 28.11.2010
Сообщений: 29
17.12.2010, 00:17  [ТС]
А если ввожу "12", то у меня три числа....прога тогда еще считает нули, которыми дозаполняет массив....
вот это конечно усложняет...

Добавлено через 25 минут
Цитата Сообщение от eczo Посмотреть сообщение
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
#include <iostream>
 using namespace std;
int main(){
const int size=5;
int mas[size],i,j,n,m=0;
cout<<"Enter number:"<<endl;
cin>>n;
cout<<endl;
    while(n!=0)
    {
        for(j =0; j<size;j++){
        i=n%10;
        mas[j]=i;
        n/=10;
        cout<<mas[j]<<" "<<endl;
        }
    }
    for(j=0;j<size;j++)
    {
        for(int k=j+1;k<size; k++)
        {
            if(mas[k] == mas[j])
            {
                m++;
                break;
            }
        }
    }
cout<<"It has "<<size-m<<" different numbers!"<<endl;
cout<<endl<<endl;
return 0;
}
при вводе 12003 отвечает it hase 4{бла-бла-бла}


А если ввожу "12", то у меня три числа....прога тогда еще считает нули, которыми дозаполняет массив....
вот это конечно усложняет...
0
 Аватар для caliper
10 / 10 / 3
Регистрация: 07.12.2010
Сообщений: 131
17.12.2010, 00:18
Мне что-то жутко интересно стало... а чем мой вариант решения не подходит?)
code
#include <iostream>
using namespace std;
int main()
{
int mas[10]= {0};
int n, counter = 0;
cin >> n;
while(n)
{
mas[n%10]++;
n/=10;
}
for(int i=0; i<10; i++)
if(mas[i])
counter++;
cout << counter;
return 0;
}

ввод: 12 => вывод: 2
ввод: 12003 => вывод: 4
1
1 / 1 / 1
Регистрация: 28.11.2010
Сообщений: 29
17.12.2010, 00:21  [ТС]
Цитата Сообщение от eczo Посмотреть сообщение
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
#include <iostream>
 using namespace std;
int main(){
const int size=5;
int mas[size],i,j,n,m=0;
cout<<"Enter number:"<<endl;
cin>>n;
cout<<endl;
    while(n!=0)
    {
        for(j =0; j<size;j++){
        i=n%10;
        mas[j]=i;
        n/=10;
        cout<<mas[j]<<" "<<endl;
        }
    }
    for(j=0;j<size;j++)
    {
        for(int k=j+1;k<size; k++)
        {
            if(mas[k] == mas[j])
            {
                m++;
                break;
            }
        }
    }
cout<<"It has "<<size-m<<" different numbers!"<<endl;
cout<<endl<<endl;
return 0;
}
при вводе 12003 отвечает it hase 4{бла-бла-бла}


А если ввожу "12", то у меня три числа....прога тогда еще считает нули, которыми дозаполняет массив....
вот это конечно усложняет...
0
38 / 38 / 17
Регистрация: 15.12.2010
Сообщений: 110
17.12.2010, 00:53
Цитата Сообщение от Alecia Посмотреть сообщение
А если ввожу "12", то у меня три числа....прога тогда еще считает нули, которыми дозаполняет массив....
вот это конечно усложняет...
логично что прога добавляет нули число то 5ти значное стоит по умолчанию
C++
1
2
const int size=5;
int mas[size].....
для того и делал ранее "возможность" ввести самому количество символов в числе. Вот
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2010, 00:53
Помогаю со студенческими работами здесь

Количество различных цифр в заданном числе
определить количество различных цифр в заданном числе. (Например, если задано число 1225, то количество различных цифр должно быть...

Определить количество различных цифр в натуральном числе
Всем добрый день! Задали задачу: дано число N. И надо определить количество различных цифр в нем. Например, 1221 - 2 цифры (1 и 2);...

Вывести на экран количество цифр в заданном числе и сумму этих цифр
я начинающий! помогите! мне на екзам! Дано натуральное число а (a&lt;100). Напишите программу, выводящую на экран количество цифр в этом...

Рекурсия: количество цифр в числе, сумма цифр и реверс числа
Вот задание: Написать программу, которая запрашивает у пользователя целое число, на экран выводит сколько цифр в числе, их сумму и...

Определить количество цифр в числе n и сумму всех его цифр
Дано натуральное n , определить количество цифр в числе n и сумму всех его цифр. Значение n ввести с клавиатуры. Добавлено через...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru