Todas as dúvidas que tenha sobre arranjos simples, completos, combinações ou probabilidades
Responder

Re: Combinação numérica simples com valores 101 a 125

21 fev 2015, 00:57

Baltuilhe, consegui gerar o arquivo, o problema é que não estava encontrando o arquivo .txt com as combinações geradas no codeblocks! ^^

Bem, gostaria de só tirar mais uma dúvida. De que maneira posso inserir mais números nas linhas ou colunas pelo código? Por exemplo:

Se eu quiser colocar mais números na linha, tipo 116 117 118, mas ainda tendo o 125 como último número da última coluna...

101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 119
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 120
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 121
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 122
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 123
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 124
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 125

ou aumentar somente os últimos números da última coluna...

101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
101 102 103 104 105 106 107 108 109 110 111 112 113 114 116
101 102 103 104 105 106 107 108 109 110 111 112 113 114 117
101 102 103 104 105 106 107 108 109 110 111 112 113 114 118
101 102 103 104 105 106 107 108 109 110 111 112 113 114 119
101 102 103 104 105 106 107 108 109 110 111 112 113 114 120
101 102 103 104 105 106 107 108 109 110 111 112 113 114 121
101 102 103 104 105 106 107 108 109 110 111 112 113 114 122
101 102 103 104 105 106 107 108 109 110 111 112 113 114 123
101 102 103 104 105 106 107 108 109 110 111 112 113 114 124
101 102 103 104 105 106 107 108 109 110 111 112 113 114 125
101 102 103 104 105 106 107 108 109 110 111 112 113 114 126
101 102 103 104 105 106 107 108 109 110 111 112 113 114 127

Ou então as duas coisas combinadas?

Re: Combinação numérica simples com valores 101 a 125

21 fev 2015, 05:48

ramon123 Escreveu:Baltuilhe, consegui gerar o arquivo, o problema é que não estava encontrando o arquivo .txt com as combinações geradas no codeblocks! ^^

Bem, gostaria de só tirar mais uma dúvida. De que maneira posso inserir mais números nas linhas ou colunas pelo código? Por exemplo:

Se eu quiser colocar mais números na linha, tipo 116 117 118, mas ainda tendo o 125 como último número da última coluna...

101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 119
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 120
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 121
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 122
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 123
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 124
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 125

ou aumentar somente os últimos números da última coluna...

101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
101 102 103 104 105 106 107 108 109 110 111 112 113 114 116
101 102 103 104 105 106 107 108 109 110 111 112 113 114 117
101 102 103 104 105 106 107 108 109 110 111 112 113 114 118
101 102 103 104 105 106 107 108 109 110 111 112 113 114 119
101 102 103 104 105 106 107 108 109 110 111 112 113 114 120
101 102 103 104 105 106 107 108 109 110 111 112 113 114 121
101 102 103 104 105 106 107 108 109 110 111 112 113 114 122
101 102 103 104 105 106 107 108 109 110 111 112 113 114 123
101 102 103 104 105 106 107 108 109 110 111 112 113 114 124
101 102 103 104 105 106 107 108 109 110 111 112 113 114 125
101 102 103 104 105 106 107 108 109 110 111 112 113 114 126
101 102 103 104 105 106 107 108 109 110 111 112 113 114 127

Ou então as duas coisas combinadas?


Boa noite!

Da forma como gostaria de modificar teria que aprender um pouco mais sobre laços (loops) na linguagem de programação C para poder resolver quaisquer problemas que tenha.
A solução que criei foi um 'quebra-galho' para resolver rapidamente o que pediu.
Para resolver todos os casos teria que ser repensado e criar uma solução mais robusta, de forma a poder entrar os parâmetros sem precisar recriar o código.
No caso, para fazer o que gostaria, teria que criar para cada nova coluna mais um laço for, consequentemente mais uma variável (para armazenar os valores que essa coluna terá).
Para aumentar o limite teria que aumentar para todos os laços um pouco mais o limite. Para cada número a mais, um a mais (somado, mesmo).
Vou tentar modificar o código abaixo para este limite ser mais maleável.

Código:
#include<stdio.h>

int main(void)
{
   FILE *combinacoes;
   int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, fator, limite;
   
   combinacoes = fopen("combinacoes.txt", "wt");
   
   fator = 100;
   limite = fator+25;
//   printf("%d", fator);
   for(a = fator+1; a < limite-13; a++) // { printf("%d ", a); // Como são valores de 101 a 111 aqui, por isso o limite ficou como ficou.
      for(b = a+1; b < limite-12; b++) //{ printf("%d ", b);
         for(c = b+1; c < limite-11; c++) //{ printf("%d ", c);
            for(d = c+1; d < limite-10; d++) //{ printf("%d ", d);
               for(e = d+1; e < limite-9; e++) //{ printf("%d ", e);
                  for(f = e+1; f < limite-8; f++) //{ printf("%d ", f);
                     for(g = f+1; g < limite-7; g++) //{ printf("%d ", g);
                        for(h = g+1; h < limite-6; h++) //{ printf("%d ", h);
                           for(i = h+1; i < limite-5; i++) //{ printf("%d ", i);
                              for(j = i+1; j < limite-4; j++) //{ printf("%d ", j);
                                 for(k = j+1; k < limite-3; k++) //{ printf("%d ", k);
                                    for(l = k+1; l < limite-2; l++) //{ printf("%d ", l);
                                       for(m = l+1; m < limite-1; m++) //{ printf("%d ", m);
                                          for(n = m+1; n < limite; n++) //{ printf("%d ", n);
                                             for(o = n+1; o < limite+1; o++) //{ printf("%d ", o);
                                                fprintf(combinacoes, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
   
   fclose(combinacoes);
   
   return 0;
   
}


Abraços!

Re: Combinação numérica simples com valores 101 a 125

21 fev 2015, 15:01

Ok, fico no aguardo! ;)

Re: Combinação numérica simples com valores 101 a 125

23 fev 2015, 14:24

Bom dia!

Divirta-se! :)
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[i] = limite_inf+i;

   ponteiro = n;
   while(variavel[0] <= limite_sup-n+1)
   {
      for(i = 0; i < n-1; i++)
         fprintf(arquivo, "%d ", variavel[i]);
      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[i] = variavel[i-1]+1;
      ponteiro = n;

   }

   free(variavel);
   fclose(arquivo);

   return 0;
}

Re: Combinação numérica simples com valores 101 a 125

23 fev 2015, 16:43

Baltuilhe, Puxa vida, muito obrigado! Isso vai me ajudar bastante, não sei nem como agradecer... 'O'

Só gostaria que por gentileza colocasse os valores no exemplo que mostrei para que eu possa entender o código, pois estou um pouco perdido.

23 fev 2015, 17:59

Para gerar igual ao que pediu inicialmente entre com "101 125" (sem as aspas) e depois entre 15

Re: Combinação numérica simples com valores 101 a 125

23 fev 2015, 19:55

Tentei inserir os valores 101 125 sem aspas em ("Entre com o limite inferior e o limite superior:") da seguinte forma:

(101 125), (101, 125), (101 125, 115) e (101, 125, 115), porém nenhuma destas maneiras funcionou.

Re: Combinação numérica simples com valores 101 a 125

23 fev 2015, 20:39

Boa tarde!

Ficou assim?
Código:
Entre com o limite inferior e o limite superior:101 125
Entre com a quantidade de elementos a serem combinados por vez:15

Na pasta onde ele foi executado gera um arquivo combinacoes.txt com o resultado.

Re: Combinação numérica simples com valores 101 a 125

24 fev 2015, 00:02

Quanto vou em BUILD > COMPILE CURRENT FILE, aparece os seguintes erros, como mostra a imagem:
Anexos
erros.png

Re: Combinação numérica simples com valores 101 a 125

24 fev 2015, 00:07

Ramon, boa noite!

Tente executar o programa que te passei sem alterar nada.
O próprio programa irá pedir os dados de entrada. Daí você digita (enquanto o programa estiver executando) que chegará no resultado desejado.

Abraços!
Responder