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

Найти количество чисел, в записи которых нет одинаковых цифр

27.11.2015, 00:32. Показов 5310. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В ВУЗе лабораторная работа по программированию, а преподаватель наша заболела. В первые 4 лабораторные я худо-бедно вник. А вот дальше застопорился. Задание таково:
Программа вводит n положительных целых чисел. Найти количество чисел, в записи которых нет одинаковых цифр. Например, для последовательности чисел: 123, 51, 3473, 4, 44 ответ 3 (это числа 123, 51, 4)

Сам допер до следующего:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
void main() {
    int i;  // i-ый член массива
    int a[10]; // объявление массива
    for (i=0; i<10; i++) { a[i]=rand(); cout<<a[i]<< endl; } //Заполнение массива числами и их вывод, для контроля
    system("pause");
}
На этом мои скромные познания в c++ иссякли. По моим прикидкам, нужно число преобразовать в строку и посимвольно проверить на повторение. Трудность в том, что как это написать в коде я не понимаю. Пытался найти темы с похожей задачей (там где повторяющиеся буквы в словах) но прибить к своей задаче так и не смог. Если можно, киньте хотя бы тему где можно почитать о том, как мне это сделать. Или код с пояснениями. Чтобы разобраться.

Не по теме:

А то сессия близко, А без сданных лабораторных не допустят ведь... Спасите-Помогите!! =)

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2015, 00:32
Ответы с готовыми решениями:

Найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел.
Найти все натуральные числа в диапазоне между m и n (m&lt;n), в записи которых нет двух одинаковых...

Найти количество простых чисел, не превосходящих N, в десятичной записи которых нет четных цифр
Задано натуральное число N. Найти и вывести одно число - количество простых чисел, не...

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

Найти все натуральные числа в диапазоне между m и n, в записи которых нет двух одинаковых цифр
Всем привет. Найти все натуральные числа в диапазоне между m и n (m&lt;n), в записи которых нет двух...

4
219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
27.11.2015, 00:56 2
Snohodec, я бы делала так.
вводила число, разбивала его на цифры заносила их в массив, сортировала и сравнивала i и i+1. Если где-то встречалось равенство, то флаг переводила в истину.
Если после проверки флаг остался ложью, то говорила, счетчик увеличила бы на 1.
и так со всеми.
может быть, это можно как-то и быстрее и проще сделать.
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
27.11.2015, 01:07 3
Цитата Сообщение от Chertenok_n_13 Посмотреть сообщение
может быть, это можно как-то и быстрее и проще сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int m[10];
 
void c(int i) {if (i) {m[i-1]=0; c(i-1);}}
 
bool t(int n) {if (n) {m[n%10]++; return m[n%10]>1 || t(n/10);} else return 0;}
 
bool f(int n) {c(10); return !t(n);}
 
int main(void) {
    cout<<f(1)<<'\n';    
    cout<<f(11)<<'\n';
    cout<<f(12)<<'\n';
}
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
27.11.2015, 01:12 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
using namespace std;
int check(int a){
    int used[10];
    fill(used,used+10,0);
    while(a)
        used[a%10]++,a/=10;
    for(int i=0;i<10;i++)
        if(used[i]>1)
            return 0;
    return 1;   
}
int main() {
    int n,x,answer=0;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>x;
        if(check(x))
            answer++;
    }
cout<<answer;   
    return 0;
}
0
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
27.11.2015, 09:07 5
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
#include <iostream>
 
bool is_unique(int n){
    unsigned shf = 0x3FF;
    for(int i; n != 0; n /= 10){
        i = n % 10;
        if(!((shf >> i) & 1))
            return false;
        shf &= ~(1 << i);
    }
    return true;
}
 
int main(void){
    int a[] = { 123, 51, 3473, 4, 44 };
    int n   = sizeof(a)/sizeof(a[0]);
    int k   = 0;
    for(int i = 0; i < n; ++i){
        if(is_unique(a[i])){
            std::cout << a[i] << ' ';
            ++k;
        }
    }
    std::cout << std::endl << "count: " << k << std::endl;
    return 0;
}
0
27.11.2015, 09:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2015, 09:07
Помогаю со студенческими работами здесь

Среди десятичных чисел найти те, в которых нет одинаковых цифр
Доброї ночі всім!!!Дуже Потрібна ваша допомога.На завтра обов'язково =(дякую за увагу і допомогу....

Вывести на консоль количество простых чисел, не превосходящих N, в десятичной записи которых нет четных цифр
Дано число N. Вывести одно число - количество простых чисел, не превосходящих N, в десятичной...

Вывести все четырехзначные числа в записи которых нет двух одинаковых цифр
Вывести все четырехзначные числа в записи которых нет двух одинаковых цифр. Например...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru