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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.62
supreme1992
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
#1

Дано натурально число N. Сколько различных цифр встречается в его десятичной записи? - C++

24.12.2010, 22:37. Просмотров 3754. Ответов 16
Метки нет (Все метки)

Ребят, помогите, пожалуйста, с созданием программного кода на С++.

Вот, собственно, и сама задача:
Дано натурально число N. Сколько различных цифр встречается в его десятичной записи? Программа должна выводить результаты на экран и в файл "output.txt".

Добавлено через 2 минуты
то есть на си, а не си++.
и кстати, в чём отличие этих языков программирования?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2010, 22:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дано натурально число N. Сколько различных цифр встречается в его десятичной записи? (C++):

Дано натурально число N. Сколько различных цифр встречается в его десятичной записи? - C++
Дано натуральное число n. Определить количество различных цифр в нем. Например, в числе 1234 количество различных цифр равно 4, а числе...

Множества: дано N натуральных чисел. Сколько различных цифр встречается в его десятичной записи? - C++
Помогите написать порограу на с++ с множиствами. Дано N натуральных чисел.Для каждого введёного числа определить количество различных...

Сколько различных цифр встречается в десятичной записи числа? - C++
Дано натуральное число n. Сколько различных цифр встречается в его десятичной записи?

Дано натурально число n. Сколько цифр в этом числе. Чему равняется сумма цифр. Найти первую цифру - C++
Желательно в С

Дано число. Разделить каждую цифру десятичной записи этого числа на его порядковый номер. Полученное число нап - C++
2.Дано число. Разделить каждую цифру десятичной записи этого числа на его порядковый номер. Полученное число напечатать. #include...

Дано натуральное число. Верно ли, что в его десятичной записи есть шесть единиц подряд? - C++
Помогите пожалуйста с программой. Вот задание: Дано натуральное число. Верно ли, что в его десятичной записи есть шесть единиц подряд? У...

16
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
24.12.2010, 22:48 #2
supreme1992,
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
#include <iostream>
 
size_t get_count_of_diferent_digits(int N)
{
    int cnt_digits = 0, tmp = N;
 
    while(tmp)
    {
        tmp % 10;
        ++cnt_digits;
        tmp /= 10;
    }
 
    int *a = new int[cnt_digits], j = 0;
    tmp = N;
 
    while(tmp)
    {
        a[j++] = tmp % 10;
        tmp /= 10;
    }
 
    bool key;
    int cnt_dif_dig = 0;
    for(int i = 0; i < cnt_digits; ++i)
    {
        key = true;
 
        for(int j = 0; j < cnt_digits; ++j)
            if(i != j && a[i] == a[j])
                key = false;
 
        if(key)
            ++cnt_dif_dig;
    }
 
    delete[] a;
    return cnt_dif_dig;
}
 
int main()
{
    int N = 0;
    std::cout << "\n\nN -> ";
    std::cin >> N;
 
    std::cout << "\n\nResult -> " << get_count_of_diferent_digits(N) << std::endl;
 
    return 0;
}
0
silent_1991
24.12.2010, 22:54
  #3

Не по теме:

asics, ну а вы-то зачем в этой теме плодите посты а ля "Напишите Hello, World!"? Не уж то, по-вашему, эта программа достойна статуса "задачи для тренировки и лучшего понимания"?

0
asics
24.12.2010, 22:59
  #4

Не по теме:

silent_1991, ну модераторы потом и так перенесут все это в отдельную тему.



 Комментарий модератора 
А уважение к соучастникам проявлять вас не учили?
В теме "задачи для тренировки и лучшего понимания" нет места для студенческих задач.
Пожалуйста, не забывайте об этом.
0
supreme1992
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
24.12.2010, 23:35  [ТС] #5
Спасибо огромное))
Но судя по синтаксису, мне всё-таки нужно на с++.
Извини, чайникам свойственно путаться.
Аsics, если не сложно, перепеши, пожалуйста)
0
MikeSoft
Эксперт С++
3800 / 1776 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
24.12.2010, 23:40 #6
supreme1992, вы предупреждение в теме видели?
Это не тема, в которой решают студенческие задачи.
Т.к. вы новичок, предупреждаю устно.
Задачу вынесу в отдельную тему...
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
24.12.2010, 23:47 #7
Цитата Сообщение от supreme1992 Посмотреть сообщение
Аsics, если не сложно, перепеши, пожалуйста)
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
#include <stdio.h>
#include <malloc.h>
 
int get_count_of_diferent_digits(int N)
{
    int cnt_digits = 0, tmp = N;
    int key, i, j;
    int cnt_dif_dig = 0, *a;
 
 
    while(tmp)
    {
        tmp % 10;
        ++cnt_digits;
        tmp /= 10;
    }
 
    a = (int *)malloc(sizeof(int)*cnt_digits), j = 0;
    tmp = N;
 
    while(tmp)
    {
        a[j++] = tmp % 10;
        tmp /= 10;
    }
 
    for(i = 0; i < cnt_digits; ++i)
    {
        key = 1;
 
        for(j = 0; j < cnt_digits; ++j)
            if(i != j && a[i] == a[j])
                key = 0;
 
        if(key)
            ++cnt_dif_dig;
    }
 
    free(a);
    return cnt_dif_dig;
}
 
int main(void)
{
    int N = 0;
    printf("\n\nN -> ");
    scanf("%d", &N);
 
    printf("\n\nResult -> %d", get_count_of_diferent_digits(N));
 
    return 0;
}
1
supreme1992
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
24.12.2010, 23:54  [ТС] #8
asics, благодарю)
0
easybudda
Модератор
Эксперт CЭксперт С++
9662 / 5611 / 952
Регистрация: 25.07.2009
Сообщений: 10,774
25.12.2010, 00:17 #9
asics, как у Вас всё хитро получилось...
Вот чуть проще, только вывод в файл лень было приделывать, за то числа запрашивает до посинения
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main(void){
    int num;
    
    while ( printf("\nNumber: ") && scanf("%d", &num) == 1 ){
        int digits[10] = { 0 }, cnt = 0, i;
        do {
            digits[num % 10]++;
        } while ( num /= 10 );
        printf("Digit     Count\n--------------------\n");
        for ( i = 0; i < 10; ++i ){
            if ( digits[i] ){
                printf("%-10d%d\n", i, digits[i]);
                ++cnt;
            }
        }
        printf("--------------------\n%d different digits.\n", cnt);
    }
    
    return 0;
}
Дано натурально число N. Сколько различных цифр встречается в его десятичной записи?
2
supreme1992
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
25.12.2010, 13:48  [ТС] #10
сегодня препод посмотрел листинг и сразу понял, что не я делал.
заставил меня переделать, так как в листинге много операторов, которые мы не затрагивали.
как он объяснил, необходимо задать статический массив из 10ти чисел. в цикле с постусловием (пока n>0) мы отделяем по одной цифре от числа. Эти цифры сохраняем в массив, причём осуществляется проверка,-если это число есть в массиве, то его не заносим. в конце подсчитываем количество ненулевых элементов массива и выводим их в файл и на экран. Желательно, чтобы программа состояла из самых примитивных и простейших операторов)
0
easybudda
Модератор
Эксперт CЭксперт С++
9662 / 5611 / 952
Регистрация: 25.07.2009
Сообщений: 10,774
25.12.2010, 15:55 #11
Цитата Сообщение от supreme1992 Посмотреть сообщение
как он объяснил, необходимо задать статический массив из 10ти чисел. в цикле с постусловием (пока n>0) мы отделяем по одной цифре от числа. Эти цифры сохраняем в массив, причём осуществляется проверка,-если это число есть в массиве, то его не заносим. в конце подсчитываем количество ненулевых элементов массива и выводим их в файл и на экран. Желательно, чтобы программа состояла из самых примитивных и простейших операторов)
Так это же как-раз моя програмка! Что именно не так-то?
0
supreme1992
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
27.12.2010, 21:35  [ТС] #12
Ребят, я понимаю, что уже достал вас этой задачей, но можете помочь в последний раз?

Вот мне необходимо задать массив из десяти чисел.
Каждому элементу массива присвоить нулевое значение.
От числа N, вводимого с клавиатуры, отделять по последней цифре.
Если эта последняя цифра не встречается в массиве, то её необходимо записать в массив.
После того, как число разложено на цифры, и различные цифры сохранены в массив, осуществить подсчёт ненулевых элементов массива.

Вот моя попытка с ошибками, конечно:

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<stdlib.h>
#include<stdio.h>
#include<conio.h>
int main(void)
{
     int const m=10;
     int i,n,s,k;
     int a[10];
     printf("Введите натуральное число N");
     printf("\n");
     scanf("%d",n);              
         {for(i=0;i<10;i++)
                  a[10]=0;                 
                  }
                  
                 do 
                 {
                 s=n%10;                                 
                    {for(i=0;i<10;i++)
                 
                      {if(s!=a[10])
                       i=0;
                       s=a[i];
                       i++;                     
                       } 
                    }
                 }
                 while(n/=10);
                 
                 {for(i=0;i<10;i++);
                 {if(a[10]!=0)
                 k=k+1;
                 }                 
                 printf("%d",k);                          
                 getch();
}
В чём у меня ошибка?
Подкорректируйте, пожалуйста))

Добавлено через 2 минуты
Цитата Сообщение от easybudda Посмотреть сообщение
Так это же как-раз моя програмка! Что именно не так-то?
Всё так, но уровень написания не тот.
То есть ты написал это на более высоком уровне, а мне бы немного попроще)

Добавлено через 6 часов 57 минут
Ребят, завтра последний день и я должен уже предоставить эту программу (именно ту, которую я последней запостил) в корректном виде. помогите, пожалуйста!
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.12.2010, 22:02 #13
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
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
int main(void)
{
     int const m=10;
     int i,n,s,k=0;
     int a[10];
     printf("Введите натуральное число N");
     printf("\n");
     scanf("%d",&n);              
     for(i=0;i<10;i++)
         a[i]=0;                 
     do 
     {
         s=n%10;                                 
         a[s]++; 
     } while(n/=10);
     for(i=0;i<10;i++)
         if(a[i]!=0)
             k=k+1;
     printf("%d",k);                          
     getch();
}
1
supreme1992
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
28.12.2010, 00:29  [ТС] #14
valeriikozlov, Выручил прям!

Добавлено через 1 час 40 минут
а чтобы вывести значение переменной "k", достаточно прописать? или что-то ещё?

C++
1
2
3
ofstream outfile("output.txt");
cin >> k;
outfile.close("output.txt");
Добавлено через 44 минуты
или всё-таки:

C++
1
2
3
4
5
6
  FILE* f;
   if((f=fopen("output.txt","wt"))==NULL)
   {printf("Error");return;}
   else
fprintf(f,"%d",k);}
     fclose(f);
как правильно?
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
28.12.2010, 06:51 #15
Второй вариант правильнее:
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
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
int main(void)
{
     int const m=10;
     int i,n,s,k=0;
     int a[10];
     printf("Введите натуральное число N");
     printf("\n");
     scanf("%d",&n);              
         for(i=0;i<10;i++)
                 a[i]=0;                 
         do 
         {
                 s=n%10;                                 
                 a[s]++; 
         } while(n/=10);
         for(i=0;i<10;i++)
                 if(a[i]!=0)
                         k=k+1;
    FILE* f;
    if((f=fopen("output.txt","wt"))==NULL)
    {printf("Error");return;}
    else
        fprintf(f,"%d",k);
    fclose(f);
    getch();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2010, 06:51
Привет! Вот еще темы с ответами:

дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!! - C++
дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!...

Дано натурально число n.Заполнить массив его цифрами, расположенным в обратном порядке - C++
Прошу помочь решить задачки!:(очень нужно (Билет №4) Дано натурально число n.Заполнить массив его цифрами, расположенным в обратном...

Подсчитать количество различных цифр в десятичной записи натурального числа - C++
Тема: Строки.Множества. 3.1. Напишите программу, которая вводит строку и выводит ее, сокращая каждый раз на 1 символ до тех пор, пока в...

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


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

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

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