1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 9

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

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

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

Вот, собственно, и сама задача:
Дано натурально число 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
3956 / 1811 / 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
12841 / 7590 / 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
12841 / 7590 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025
Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025
gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru