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

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

27.10.2012, 22:41. Показов 6394. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать код,очень Вас прошу..
вот условие: Выведите на экран все четырехразрядные числа, в записи которых нет одинаковых цифр.
Заранее ОЧЕНЬ благодарю всех,кто сможет хоть чем-то мне помочь!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2012, 22:41
Ответы с готовыми решениями:

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

Выведите на экран все четырехзначные числа, в записи которых нет одинаковых цифр
вот задание:выведите на экран все четырехзначные числа,в записи которых нет одинаковых цифр. ...

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

Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр
Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет...

11
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 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;
}
2
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.10.2012, 23:00  [ТС] 3
ОГРОМНЕЙШЕЕ ВАМ СПАСИБО"!"""!!!!! сейчас сяду проверять

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

а можно вопрос по уже сделанному?
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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;
}
3
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 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 вообще не изменяется, а потом резульат, равныё а возвращают.
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
28.10.2012, 14:05 6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Тут a вообще не изменяется
А это:
a /= 10
По сути, здесь уже получается мини-хеш-таблица, т.к. адресация идет по остатку от деления элемента.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.10.2012, 15:31 7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
жесть какая! И чё тут происходит? Тут a вообще не изменяется, а потом резульат, равныё а возвращают.

Не по теме:

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

1
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
28.10.2012, 16:18 8
Цитата Сообщение от Thinker Посмотреть сообщение
Не по теме:
хорошо, выведите все 7-значные числа с разными цифрами. будете 7 циклов писать? а сделайте проверку, все ли цифры 100-значного числа в 500-ричной системе счисления различны)))
Во-первых, да, я стормозил, не заметил в твоём цикле "(a /= 10)".
Во-вторых, в моих циклах перебирается меньше, чем 8999 вариантов, т.е. теоретически работает быстрее.
1
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
28.10.2012, 16:27 9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
теоретически работает быстрее.
Если уж мы взялись оптимизировать...
C
1
 for(i=1234; i<=9876; i++)
1
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.10.2012, 16:32 10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
в моих циклах перебирается меньше, чем 8999 вариантов, т.е. теоретически работает быстрее.
никто не спорит про быстроту. вопрос был в универсальности. а по поводу быстроты, то можно сгенерировать все требуемые числа без одной проверки, то есть будет еще быстрее))
1
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
28.10.2012, 16:50 11
Цитата Сообщение от Thinker Посмотреть сообщение
можно сгенерировать все требуемые числа
Верно! Сгененировать все 4! = 24 перестановок (для данной задачи их можно хранить в памяти), потом C410 сочетаний, к каждому из них применить эти 24 перестановки, и дело в шляпе!
Одна проверочка все-таки нужна, чтоб на первом месте не вылез 0
2
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.10.2012, 16:55 12
Байт, Вы верно поняли, через перестановки. С 0 можно отдельно, без проверок, то есть сначала все числа, где его нет, а затем все числа с 0,
то есть зафиксировали 0 на 2 позиции и крутим перестановки остальных цифр, затем 0 на третей позиции и т.д.
1
28.10.2012, 16:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2012, 16:55
Помогаю со студенческими работами здесь

Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр
Задание: Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи ...

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

найти все 4-ёх значные числа, в записи которых нет одинаковых цифр
найти все 4-ёх значные числа, в записи которых нет одинаковых цифр....мне нужно алогритм для Visual...

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


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

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