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

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

Войти
Регистрация
Восстановить пароль
 
Wonderwall
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 5
#1

Среди всех четырехзначных цифр определить число тех, у которых все цифры различны - C++

10.10.2013, 18:58. Просмотров 929. Ответов 10
Метки нет (Все метки)

Среди всех четырехзначных цифр определить число тех, у которых все цифры различны.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2013, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Среди всех четырехзначных цифр определить число тех, у которых все цифры различны (C++):

Среди всех четырехзначных чисел получить все простые числа - C++
Среди всех четырехзначных чисел получить все простые числа, каждое из которых обладает тем свойством, что сумма первых двух цифр равна...

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

Удалить из массива все элементы,в записи которых все цифры различны. - C++
Ребят,помогите задачу решить: в файле input.txt содержаться сведения о группе студентов в формате: номер группы; запись о каждом...

Удалить из массива все элементы,в записи которых все цифры различны. - C++
дана последовательность целых чисел. Удалить из массива все элементы,в записи которых все цифры различны. при решении задачи нужно...

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

Найти все четырехзначные числа, у которых все цифры различны - C++
Найти все четырехзначные числа, у которых все цифры различны.

10
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
10.10.2013, 19:16 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Wonderwall Посмотреть сообщение
четырехзначных цифр
Четырехзначные цифры это что-то из доказательства Перельмана гипотизы Пуанкаре?
3
Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
10.10.2013, 20:14 #3
Инициализируешь string как ---- , потом рандомом для , например moe_chislo = rand() 9999-8999 присваешь рандомное число, переводишь позначно int в стринг и if() ом проверяешь каждый символ в цикле.
for(){
if...
cout<< Да
else
Нет.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 20:19 #4
Цитата Сообщение от Warezovvv Посмотреть сообщение
потом рандомом
Если "среди всех", тогда уж не рандомом, а от и до.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7425 / 4540 / 675
Регистрация: 29.11.2010
Сообщений: 12,327
11.10.2013, 03:21 #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
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <algorithm>
 
// последняя комбинация служит стоп-сигналом, поэтому считаем с 1
// M - система счисления, N - число цифр, val - массив цифр числа
bool stop(const int N, const int* val, const int M)
{
    for (int i=0; i < M; i++)
        if (val[i] != N - 1 - i)
            return false;
    return true;
}
 
// функция возвращает истину если все цифры в числе разные
bool unique(const int* val, const int sz)
{
    // копируем наше число во временное
    int* tmp = new int[sz];
    for (int i=0; i < sz; i++)
        tmp[i] = val[i];
    // сортируем цифры временного числа
    std::sort(tmp, tmp + sz);
    bool onlyUniqueDigits = (std::unique(tmp, tmp + sz) == tmp + sz);
    delete[] tmp;
 
    return onlyUniqueDigits;
}
 
// M - система счисления, N - число цифр, val - массив цифр числа
void increment(const int M, int* val, const int N)
{
    val[N-1]++;
    for (int i = N-1; i > 0; i--)
        if (val[i] == M)
        {
            val[i - 1]++;
            val[i] -= M;
        }
}
 
void print(const int* arr, const int sz)
{
    for (int i=0; i < sz; i++)
        std::cout << arr[i];
    std::cout << std::endl;
}
 
 
int main()
{
    const int N = 10, M = 3;
    int val[M], counter = 1;
 
    // формируем начальное число
    for (int i=0; i < M; i++)
        val[i] = i;
    std::swap(val[0], val[1]); // меняем первые две цифры
 
    // пока не достигли последней комбинации
    while (!stop(N, val, M))
    {
        // если число уникально
        if (unique(val, M))
            counter++;
            //print(val, M);
        increment(N, val, M);
    }
    std::cout << "Counter: " << counter << std::endl;
}
без проверок на входные данные
1
Wonderwall
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 5
11.10.2013, 14:12  [ТС] #6
примерно такого вида должно быть, но тут очень-очень много недочётов и не дописано еще. Но к сожалению не могу сообразить, что писать, ибо совсем новичок ещё

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_CTYPE,"russian");
    int a, b, c, d, n;
    do
    {
        cout << "Среди всех четырехзначных цифр число тех, у которых все цифры различны=";
    }
 while ((n>999)&&(n<10000));
  {
a=n/10;
b=a/10;
c=b/10;
d=c/10;
 
 
{
if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&&(b!=d)&&(c!=d))
cout<< '\n';
}
return 0;
 }
}
Добавлено через 20 минут
нет, просто четырёхзначные цифры)
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
11.10.2013, 14:34 #7
Тогда уж числа, а не цифры.
0
Wonderwall
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 5
11.10.2013, 15:02  [ТС] #8
ну да :-[
0
MrGluck
Модератор
Эксперт CЭксперт С++
7425 / 4540 / 675
Регистрация: 29.11.2010
Сообщений: 12,327
11.10.2013, 17:04 #9
Wonderwall, тогда в качестве решения частного случая совсем по простому так:
- в цикле от 1023 до 9876 (можете от 1000 до 9999)
- проверяете число (которое логично было бы сделать параметром цикла) на момент уникальности цифр. Для этого было бы лучше сделать функцию, но можно проверять и в теле цикла: (разбиваете число на цифры и пишете огромный if, сами уже во время реализации поймете, что это как-то по гуманитарному)
- и увеличиваете счетчик, если функция/условие вернет истину

Советую отдельно написать для начала функцию, которая принимает число (в частном случае четырехзначное, но лучше бы в общем) и разбивает его на цифры.
0
Wonderwall
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 5
11.10.2013, 18:57  [ТС] #10
а вы не могли бы показать, как это делать. дело в том, что практически первый раз в жизни имею дело с с++, т.к. я первокурсница университета, а программирование было в 10 классе и то в бейсике, так что пока я полный 0 (
0
MrGluck
Модератор
Эксперт CЭксперт С++
7425 / 4540 / 675
Регистрация: 29.11.2010
Сообщений: 12,327
12.10.2013, 00:26 #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main()
{
    // govnokod
    int counter = 0;
    for (int i=1000; i < 10000; i++)
    {
        int a = i % 10;
        int b = (i % 100 - a) / 10;
        int c = (i % 1000 - b) / 100;
        int d = (i - c) / 1000;
        // govnokod^2
        if (!(a == b || a == c || a == d || b == c || b == d || c == d))
            counter++;
    }
    std::cout << "Counter: " << counter << std::endl;
}
1
12.10.2013, 00:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2013, 00:26
Привет! Вот еще темы с ответами:

Найти все четырехзначные числа, у которых все цифры различны - C++
4)Найти все четырехзначные числа, у которых все цифры различны.

Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны - C++
Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны. Можете подсказать хотя бы алгоритм, ...

Подсчет натуральных чисел, в которых все три цифры различны - C++
Подсчитать количество натуральных чисел 102\leq n\leq 987 , в которых все три цифры различны. Как можно это сделать. Попроще, если можно,...

Удалить из массива элементы, в записи которых все цифры различны - C++
Удалить из массива элементы, в записи которых все цифры различны. (Желательно использовать вектора)


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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