Olá todos,
Sei que o objetivo do código abaixo é para criar combinações numéricas, pois utilizo para gerar combinações de códigos de botões numa máquina, mas tenho curiosidade de saber como funciona. :)
Segue o código:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int *variavel, ponteiro, limite_inf, limite_sup, limite, n, i;
FILE *arquivo;
arquivo = fopen("combinacoes.txt", "wt");
printf("Entre com o limite inferior e o limite superior:");
scanf("%d %d", &limite_inf, &limite_sup);
printf("Entre com a quantidade de elementos a serem combinados por vez:");
scanf("%d", &n);
variavel = (int *)malloc(n*sizeof(int));
for(i = 0; i < n; i++)
variavel = limite_inf+i;
ponteiro = n;
while(variavel[0] <= limite_sup-n+1)
{
for(i = 0; i < n-1; i++)
fprintf(arquivo, "%d ", variavel);
fprintf(arquivo, "%d\n", variavel[n-1]);
while(ponteiro != 0 && (variavel[ponteiro-1] == limite_sup-(n-ponteiro)))
ponteiro--;
if(ponteiro == 0)
ponteiro = 1;
variavel[ponteiro-1]++;
for(i = ponteiro; i < n; i++)
variavel = variavel[i-1]+1;
ponteiro = n;
}
free(variavel);
fclose(arquivo);
return 0;
}