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

Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Love-Love
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.10.2012, 22:41     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #1
Помогите написать код,очень Вас прошу..
вот условие: Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр.
Заранее ОЧЕНЬ благодарю всех,кто сможет хоть чем-то мне помочь!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2012, 22:41     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр
Посмотрите здесь:

Вывести все четырехзначные числа, в десятичной записи которых нет двух одинаковых цифр. C++
Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр. C++
C++ Вывести все четырехзначные числа в записи которых нет двух одинаковых цифр
Найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел. C++
Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.10.2012, 22:47     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #2
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(){
  int i, j, k, t;
  for (i=1; i<=9; i++)
    for (j=0; j<=9; j++)
      for (k=0; k<=9; k++)
        for (t=0; t<=9; t++)
          if ((i!=j)&&(i!=k)&&(i!=t)&&(j!=k)&&(j!=t)&&(k!=t))
            printf ("%d%d%d%d, ", i, j, k, t);
  return 0;
}
самое простое, что может придти в голову.
Но тут можно ещё подумать, как отсечь заранее неверные варианты, например
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(){
  int i, j, k, t;
  for (i=1; i<=9; i++)
    for (j=0; j<=9; j++)
      for (k=0; (k<=9)&&(i!=j); k++)
        for (t=0; (t<=9)&&(i!=k)&&(j!=k); t++)
          if ((i!=t)&&(j!=t)&&(k!=t))
            printf ("%d%d%d%d, ", i, j, k, t);
  return 0;
}
Love-Love
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.10.2012, 23:00  [ТС]     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #3
ОГРОМНЕЙШЕЕ ВАМ СПАСИБО"!"""!!!!! сейчас сяду проверять

Добавлено через 6 минут
Все отлично!!
Спасибо Вам еще раз! Вы меня очень выручили!!!

а можно вопрос по уже сделанному?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.10.2012, 09:54     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Универсальный вариант, работающий с любыми натуральными числами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
 
bool Check(unsigned long a)
{
   int count[10] = {0};
   while(++count[a%10] < 2 && (a /= 10))
      ;
   return !a;
}
 
int main()
{
   int i;
   for(i = 1000; i < 10000; i++)
      if (Check(i))
         std::cout << i << "\n";
   return 0;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.10.2012, 13:35     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #5
Цитата Сообщение от Thinker Посмотреть сообщение
bool Check(unsigned long a)
{
* *int count[10] = {0};
* *while(++count[a%10] < 2 && (a /= 10))
* * * ;
* *return !a;
}
жесть какая! И чё тут происходит? Тут a вообще не изменяется, а потом резульат, равныё а возвращают.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.10.2012, 14:05     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Тут a вообще не изменяется
А это:
a /= 10
По сути, здесь уже получается мини-хеш-таблица, т.к. адресация идет по остатку от деления элемента.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.10.2012, 15:31     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
жесть какая! И чё тут происходит? Тут a вообще не изменяется, а потом резульат, равныё а возвращают.

Не по теме:

хорошо, выведите все 7-значные числа с разными цифрами. будете 7 циклов писать? а сделайте проверку, все ли цифры 100-значного числа в 500-ричной системе счисления различны)))

Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.10.2012, 16:18     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #8
Цитата Сообщение от Thinker Посмотреть сообщение
Не по теме:
хорошо, выведите все 7-значные числа с разными цифрами. будете 7 циклов писать? а сделайте проверку, все ли цифры 100-значного числа в 500-ричной системе счисления различны)))
Во-первых, да, я стормозил, не заметил в твоём цикле "(a /= 10)".
Во-вторых, в моих циклах перебирается меньше, чем 8999 вариантов, т.е. теоретически работает быстрее.
Байт
 Аватар для Байт
13974 / 8805 / 1227
Регистрация: 24.12.2010
Сообщений: 15,949
28.10.2012, 16:27     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
теоретически работает быстрее.
Если уж мы взялись оптимизировать...
C
1
 for(i=1234; i<=9876; i++)
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.10.2012, 16:32     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
в моих циклах перебирается меньше, чем 8999 вариантов, т.е. теоретически работает быстрее.
никто не спорит про быстроту. вопрос был в универсальности. а по поводу быстроты, то можно сгенерировать все требуемые числа без одной проверки, то есть будет еще быстрее))
Байт
 Аватар для Байт
13974 / 8805 / 1227
Регистрация: 24.12.2010
Сообщений: 15,949
28.10.2012, 16:50     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #11
Цитата Сообщение от Thinker Посмотреть сообщение
можно сгенерировать все требуемые числа
Верно! Сгененировать все 4! = 24 перестановок (для данной задачи их можно хранить в памяти), потом C410 сочетаний, к каждому из них применить эти 24 перестановки, и дело в шляпе!
Одна проверочка все-таки нужна, чтоб на первом месте не вылез 0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2012, 16:55     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр
Еще ссылки по теме:

C++ Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр
Вывести все простые числа, в которых нет двух подряд идущих одинаковых цифр C++
Циклы: напечатать в убывающем порядке все трехзначные числа, в записи которых нет одинаковых цифр C++

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.10.2012, 16:55     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр #12
Байт, Вы верно поняли, через перестановки. С 0 можно отдельно, без проверок, то есть сначала все числа, где его нет, а затем все числа с 0,
то есть зафиксировали 0 на 2 позиции и крутим перестановки остальных цифр, затем 0 на третей позиции и т.д.
Yandex
Объявления
28.10.2012, 16:55     Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр
Ответ Создать тему
Опции темы

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