RVPF Posted January 11, 2016 at 12:32 AM Report #591801 Posted January 11, 2016 at 12:32 AM Boas pessoal, mais uma vez preciso da vossa ajuda, tenho uma matriz com varias sequências de movimentos e precisava de fazer as combinações / permutações possíveis entre elas, por exemplo: 12 21 11 22 Já criei uma matriz com o tamanho das permutações para as guardar mas não consigo fazer as permutações e guardar na matriz, encontrei um código que funciona com uma string mas não consigo fazer com matrizes. #include <stdio.h> #include <math.h> int main() { char seq[]="01"; int n=2, m=3; char res[8][4]; int i, j, k; for(i=0; i<=pow(n, m)-1; i++) { k=i; for(j=0; j<=m-1; j++) { res[i][j]=seq[k%n]; k=k/n; } } for(i=0; i<pow(n,m); i++) { res[i][m]=0; puts(res[i]); } return 0; } Obrigado 🙂
HappyHippyHippo Posted January 11, 2016 at 09:49 AM Report #591803 Posted January 11, 2016 at 09:49 AM estás a falar de matrizes ou vectores ? qual a gama de valores que as posições da matriz/vector pode tomar. apresenta um exemplo concreto e completo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
RVPF Posted January 11, 2016 at 01:54 PM Author Report #591808 Posted January 11, 2016 at 01:54 PM Matrizes, uma matriz bidimensional que pode ter qualquer tamanho. Eu já criei uma matriz para as permutações que calcula as permutações possíveis para uma sequência de x numeros. Função que cria a matriz permutações: void** criarMatrizInteiros(int linhas, int colunas) { int** ppTabuleiro = NULL; ppTabuleiro =(int**) malloc(sizeof(int*) * linhas); int auxLinhas=0, auxColunas=0; for (auxLinhas = 0; auxLinhas < linhas; auxLinhas++) { *(ppTabuleiro+auxLinhas)=(int*)malloc(colunas*sizeof(int)); for(auxColunas=0; auxColunas<colunas; auxColunas++) { *(*(ppTabuleiro+auxLinhas)+auxColunas)=' '; } } return ppTabuleiro; } Função que calcula quantas permutações são possiveis para x de valor j tamanho: int numeroCombinacoes(int p) /// so indica quantas permutacoes sao possiveis para um conjunto de n caracteres { int i, j, k; for(i=0; i<=pow(2, p)-1; i++)/// o comando pow serve para calcula a base elevada a uma potencia sendo 2 a base e p a potencia { k=i; for(j=0; j<=p-1; j++) { k=k/2; } } return i; } Aqui é onde tudo fica preto, tentei passar o código acima para funcionar com matrizes, passando uma linha da matriz para uma string, fazer as permutações e depois inserir os resultados na matriz de permutações: int** preenchaerPremutacoes(int** ppPermutacoes, int** sequencias, int n, int m) { int linhas=0, colunas=0 ,i, j, k,x=0; int sequencia[m*n]; n=n+n; printf("\n p = %d",n); for(linhas=0; linhas<m; linhas++) { for(colunas=0; colunas<n; colunas++) { sequencia[x]=sequencias[linhas][colunas]; x++; } printf("X = %d",x); } system("PAUSE"); for(i=0; i<=pow(n, 2)-1; i++) { k=i; for(j=0; j<=m-1; j++) { ppPermutacoes[i][j]=sequencia[k%n]; k=k/n; } } return ppPermutacoes; } Espero ter conseguido explicar melhor, obrigado.
HappyHippyHippo Posted January 11, 2016 at 01:57 PM Report #591809 Posted January 11, 2016 at 01:57 PM (edited) Como disse. Apresenta um caso completo. Por exemplo, uma matrix 2x3 Edited January 11, 2016 at 01:58 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
RVPF Posted January 16, 2016 at 08:28 PM Author Report #592079 Posted January 16, 2016 at 08:28 PM (edited) Boas, parece que eu estava a perceber mal o exercício (talvez explique a minha dificuldade em me explicar), mas o que realmente preciso de fazer também me causa problemas, eu tenho uma matriz de sequencias de movimentos e tenhos que as organizar de varias maneiras, por exemplo: Quantas Sequências pretende fazer: 3 Insira a sequencia 1: 0003690 Insira a sequencia 2: 0603006 Insira a sequencia 3: 09036 Agora que sei quantas sequências são tenho de fazer as combinações para 3 algarismos para dentro de uma matriz: 012 021 102 120 201 210 mas se forem 4 sequências tenho de gerar uma matriz com as combinações de 0 a 3 Estas combinações são para depois executar as sequências por essas ordens testando assim os caminhos. Obrigado pela ajuda Edited January 16, 2016 at 08:29 PM by RVPF
HappyHippyHippo Posted January 16, 2016 at 11:42 PM Report #592090 Posted January 16, 2016 at 11:42 PM não vejo relação entre as sequências dadas e a matriz, estás a dizer que os dados da sequência são irrelevantes para a matriz que queres ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
RVPF Posted January 17, 2016 at 10:57 AM Author Report #592100 Posted January 17, 2016 at 10:57 AM Sim para a matriz que quero fazer são irrelevantes, eles só se vão combinar mais a frente no programa.
HappyHippyHippo Posted January 18, 2016 at 11:16 AM Report #592131 Posted January 18, 2016 at 11:16 AM neste fórum existem vários exemplos de código para fazer permutações tipo https://www.portugal-a-programar.pt/topic/55530-funcao-recursiva-ajuda/?do=findComment?comment=471225 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now