Получить возможные комбинации чисел из трёх двоичных чисел - C (СИ)
Формулировка задачи:
вожу три числа через пробел 22 56 34 ,
соответственно надо получить 225634, 223456, 345622, 342256, 562234, 563422
сделал программу поиском через mod и div , конечно работает не правильно , подскажите где ошибки
#include "stdafx.h" #include <stdio.h> #include <conio.h> int main () { int a,b,c,i; printf(" Enter 3 double numbers\n"); scanf("%2d" "%2d" "%2d", &a, &b, &c); while ((a<100)&&(b<100)&&(c<100)&&(a>9)&&(b>9)&&(c>9)) { for (i=100000 ; i<1000000; i++) { if (((a=i%100)||(a=i/10000)||(a=((i%10000)/100))&& ((b=i%100)||(b=i/10000)||(b=((i%10000)/100))&& ((c=i%100)||(c=i/10000)||(c=((i%10000)/100)))))) { printf ("%d\n",i); } } } return 0; }
разобрался спасибо
" == "
и убрать "while ((a<100)&&(b<100)&&(c<100)&&(a>9)&&(b>9)&&(c>9))"
#include "stdafx.h" #include <stdio.h> int main () { int a,b,c,i; printf(" Enter 3 double numbers\n"); scanf("%d" "%d" "%d", &a, &b, &c); for (i=100000 ; i<1000000; i++) { if (((a==i%100)||(a==i/10000)||(a==((i%10000)/100)))&& ((b==i%100)||(b==i/10000)||(b==((i%10000)/100)))&& ((c==i%100)||(c==i/10000)||(c==((i%10000)/100)))) { printf ("%d\n",i); } } return 0; }
Решение задачи: «Получить возможные комбинации чисел из трёх двоичных чисел»
textual
Листинг программы
//gcc 5.4.0 #include <stdio.h> #include <string.h> #define N 3 typedef int T; void arr_print(T *arr, size_t size) { for (size_t i = 0; i<size; i++) printf("%d", arr[i]); // putchar('\n'); } void swap(T *x, T *y) { T temp; temp = *x; *x = *y; *y = temp; } void permute(T *a, int l, int r) { if (l == r) { arr_print(a, r+1); // } else { for (size_t i = l; i <= r; i++) { swap((a+l), (a+i)); permute(a, l+1, r); swap((a+l), (a+i)); } } } int main(void) { T arr[N] = {22, 56, 34}; permute(arr, 0, N-1); return 0; }
Объяснение кода листинга программы
В этом коде на языке C реализуется функция, которая выводит все возможные перестановки трёх чисел: 22, 56, 34. Обратите внимание на следующие элементы кода:
- #include
и #include — эти строки подключают необходимые для работы функции файлы. - #define N 3 — эта строка определяет количество чисел, для которых нужно найти все возможные перестановки.
- typedef int T; — здесь определяется тип данных переменной, с которой будет работать функция.
- *void arr_print(T arr, size_t size) {** — это функция для вывода чисел на экран.
- void swap(T x, T y) — эта функция меняет местами два числа.
- *void permute(T a, int l, int r)** — это рекурсивная функция, которая генерирует все возможные перестановки чисел.
- int main(void) — это точка входа в программу.
- T arr[N] = {22, 56, 34}; — это массив, в котором хранятся числа, для которых нужно найти все перестановки.
- permute(arr, 0, N-1); — это вызов функции permute для массива arr с первым элементом 0 и последним элементом N-1.
- return 0; — это завершение работы программы. Таким образом, код генерирует все возможные перестановки чисел 22, 56, 34 и выводит их на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д