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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
Alecia
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 29
16.12.2010, 01:19     Количество различных цифр в числе #1
Добрый вечер!
Задали написать программу на С++ для нахождения количество различных цифр в числе с использованием массива.

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

Вот мой код:

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). Не плодите одинаковых тем.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
caliper
 Аватар для caliper
10 / 10 / 0
Регистрация: 07.12.2010
Сообщений: 131
16.12.2010, 02:09     Количество различных цифр в числе #2
Вместо этого:
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;
}
Alecia
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 29
16.12.2010, 09:08  [ТС]     Количество различных цифр в числе #3
хм....так тут же нет проверки на то, есть ли одинаковые цифры или нет...
а она нужна....
caliper
 Аватар для caliper
10 / 10 / 0
Регистрация: 07.12.2010
Сообщений: 131
16.12.2010, 09:23     Количество различных цифр в числе #4
Так что все таки нужно сделать по заданию?)
Найти количество различных цифр из которых состоит число?
Цитата Сообщение от Alecia Посмотреть сообщение
Задали написать программу на С++ для нахождения количество различных цифр в числе с использованием массива.
Или найти сколько одинаковых цифр составляют запись числа?
Цитата Сообщение от Alecia Посмотреть сообщение
хм....так тут же нет проверки на то, есть ли одинаковые цифры или нет...
а она нужна....
eczo
37 / 37 / 1
Регистрация: 15.12.2010
Сообщений: 110
16.12.2010, 10:29     Количество различных цифр в числе #5
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;
}
Alecia
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 29
16.12.2010, 23:17  [ТС]     Количество различных цифр в числе #6
Цитата Сообщение от 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" не считает, если он в числе есть
eczo
37 / 37 / 1
Регистрация: 15.12.2010
Сообщений: 110
16.12.2010, 23:41     Количество различных цифр в числе #7
Цитата Сообщение от 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{бла-бла-бла}
Alecia
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 29
17.12.2010, 00:17  [ТС]     Количество различных цифр в числе #8
А если ввожу "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", то у меня три числа....прога тогда еще считает нули, которыми дозаполняет массив....
вот это конечно усложняет...
caliper
 Аватар для caliper
10 / 10 / 0
Регистрация: 07.12.2010
Сообщений: 131
17.12.2010, 00:18     Количество различных цифр в числе #9
Мне что-то жутко интересно стало... а чем мой вариант решения не подходит?)
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
Alecia
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 29
17.12.2010, 00:21  [ТС]     Количество различных цифр в числе #10
Цитата Сообщение от 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", то у меня три числа....прога тогда еще считает нули, которыми дозаполняет массив....
вот это конечно усложняет...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2010, 00:53     Количество различных цифр в числе
Еще ссылки по теме:

Количество цифр в числе C++
Рекурсия: количество цифр в числе, сумма цифр и реверс числа C++
Количество различных цифр в числе C++

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

Или воспользуйтесь поиском по форуму:
eczo
37 / 37 / 1
Регистрация: 15.12.2010
Сообщений: 110
17.12.2010, 00:53     Количество различных цифр в числе #11
Цитата Сообщение от Alecia Посмотреть сообщение
А если ввожу "12", то у меня три числа....прога тогда еще считает нули, которыми дозаполняет массив....
вот это конечно усложняет...
логично что прога добавляет нули число то 5ти значное стоит по умолчанию
C++
1
2
const int size=5;
int mas[size].....
для того и делал ранее "возможность" ввести самому количество символов в числе. Вот
Yandex
Объявления
17.12.2010, 00:53     Количество различных цифр в числе
Ответ Создать тему
Опции темы

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