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

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

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

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

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

Добавлено через 2 минуты
то есть на си, а не си++.
и кстати, в чём отличие этих языков программирования?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2010, 22:37
Ответы с готовыми решениями:

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

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

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

16
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.12.2010, 22:48
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
24.12.2010, 22:54

Не по теме:

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

0
24.12.2010, 22:59

Не по теме:

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



 Комментарий модератора 
А уважение к соучастникам проявлять вас не учили?
В теме "задачи для тренировки и лучшего понимания" нет места для студенческих задач.
Пожалуйста, не забывайте об этом.
0
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
24.12.2010, 23:35  [ТС]
Спасибо огромное))
Но судя по синтаксису, мне всё-таки нужно на с++.
Извини, чайникам свойственно путаться.
Аsics, если не сложно, перепеши, пожалуйста)
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.12.2010, 23:40
supreme1992, вы предупреждение в теме видели?
Это не тема, в которой решают студенческие задачи.
Т.к. вы новичок, предупреждаю устно.
Задачу вынесу в отдельную тему...
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.12.2010, 23:47
Цитата Сообщение от 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
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
24.12.2010, 23:54  [ТС]
asics, благодарю)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
25.12.2010, 00:17
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;
}
2
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
25.12.2010, 13:48  [ТС]
сегодня препод посмотрел листинг и сразу понял, что не я делал.
заставил меня переделать, так как в листинге много операторов, которые мы не затрагивали.
как он объяснил, необходимо задать статический массив из 10ти чисел. в цикле с постусловием (пока n>0) мы отделяем по одной цифре от числа. Эти цифры сохраняем в массив, причём осуществляется проверка,-если это число есть в массиве, то его не заносим. в конце подсчитываем количество ненулевых элементов массива и выводим их в файл и на экран. Желательно, чтобы программа состояла из самых примитивных и простейших операторов)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
25.12.2010, 15:55
Цитата Сообщение от supreme1992 Посмотреть сообщение
как он объяснил, необходимо задать статический массив из 10ти чисел. в цикле с постусловием (пока n>0) мы отделяем по одной цифре от числа. Эти цифры сохраняем в массив, причём осуществляется проверка,-если это число есть в массиве, то его не заносим. в конце подсчитываем количество ненулевых элементов массива и выводим их в файл и на экран. Желательно, чтобы программа состояла из самых примитивных и простейших операторов)
Так это же как-раз моя програмка! Что именно не так-то?
0
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
27.12.2010, 21:35  [ТС]
Ребят, я понимаю, что уже достал вас этой задачей, но можете помочь в последний раз?

Вот мне необходимо задать массив из десяти чисел.
Каждому элементу массива присвоить нулевое значение.
От числа 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
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
27.12.2010, 22:02
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
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9
28.12.2010, 00:29  [ТС]
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
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
28.12.2010, 06:51
Второй вариант правильнее:
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
Лексий
03.04.2011, 15:12
asics, Здраствуйте мне нужна помошь по с++ ты можеш мне помочь если да по прошу отпишись мне лучше в скайп FelInS ClaW так меня можно найти. Зарание спасибо!
03.04.2011, 15:16

Не по теме:

Лексий, Мой логин в скайпе есть в профиле, если нужно - посмотри.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2011, 15:16
Помогаю со студенческими работами здесь

Сколько различных цифр встречается в десятичной записи натурального числа
Уважаемые профессионалы, прошу решение такой задачи, через массив, чем проще написано тем лучше ) P.S. если ранее была такая тема то...

Определить, сколько различных цифр встречается в десятичной записи числа
Задание: Дано натуральное число n. Сколько различных цифр встречается в его десятичной части? Пример: 544 - две. ( 5 и 4 )

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru