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

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

Восстановить пароль Регистрация
 
Wonderwall
 Аватар для Wonderwall
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 5
10.10.2013, 18:58     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны #1
Среди всех четырехзначных цифр определить число тех, у которых все цифры различны.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2013, 18:58     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны
Посмотрите здесь:

Удалить из массива все элементы,в записи которых все цифры различны. C++
C++ Удалить из массива все элементы,в записи которых все цифры различны.
Нахождение всех четырехзначных натуральных чисел, в записи которых нет одинаковых цифр». C++
C++ Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны
C++ Найти все трехзначные числа, в которых все цифры различны.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
10.10.2013, 19:16     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Wonderwall Посмотреть сообщение
четырехзначных цифр
Четырехзначные цифры это что-то из доказательства Перельмана гипотизы Пуанкаре?
Warezovvv
 Аватар для 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
Нет.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 20:19     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны #4
Цитата Сообщение от Warezovvv Посмотреть сообщение
потом рандомом
Если "среди всех", тогда уж не рандомом, а от и до.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,426
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;
}
без проверок на входные данные
Wonderwall
 Аватар для 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 минут
нет, просто четырёхзначные цифры)
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
11.10.2013, 14:34     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны #7
Тогда уж числа, а не цифры.
Wonderwall
 Аватар для Wonderwall
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 5
11.10.2013, 15:02  [ТС]     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны #8
ну да :-[
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,426
11.10.2013, 17:04     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны #9
Wonderwall, тогда в качестве решения частного случая совсем по простому так:
- в цикле от 1023 до 9876 (можете от 1000 до 9999)
- проверяете число (которое логично было бы сделать параметром цикла) на момент уникальности цифр. Для этого было бы лучше сделать функцию, но можно проверять и в теле цикла: (разбиваете число на цифры и пишете огромный if, сами уже во время реализации поймете, что это как-то по гуманитарному)
- и увеличиваете счетчик, если функция/условие вернет истину

Советую отдельно написать для начала функцию, которая принимает число (в частном случае четырехзначное, но лучше бы в общем) и разбивает его на цифры.
Wonderwall
 Аватар для Wonderwall
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 5
11.10.2013, 18:57  [ТС]     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны #10
а вы не могли бы показать, как это делать. дело в том, что практически первый раз в жизни имею дело с с++, т.к. я первокурсница университета, а программирование было в 10 классе и то в бейсике, так что пока я полный 0 (
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2013, 00:26     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,426
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;
}
Yandex
Объявления
12.10.2013, 00:26     Среди всех четырехзначных цифр определить число тех, у которых все цифры различны
Ответ Создать тему
Опции темы

Текущее время: 15:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru