Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabiom2211

permutação em php

Recommended Posts

Como faço para fazer permutação em php???

eu tenho o numero 3 e quero fazer a permutação

ou seja, 3!=3x2x1= 6 ...vou ter como resposta...

e quero imprimir na tela a sua sequencia....exemplo

permutacao          sequencia 
     1                1-2-3
     2                1-3-2
     3                2-1-3
     4                2-3-1
     5                3-2-1
     6                3-1-2


 

 

Att, Fabio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente implementar um algorítmo. O Google encontra vários:

http://www.google.com.br/search?source=ig&hl=pt-BR&rlz=1G1GGLQ_PT-BRBR289&=&q=algoritmo+permutacao&meta=lr%3D&aq=f&aqi=g1&aql=&oq=&gs_rfai=

 

Se houver dúvidas, poste-as.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O João Batista Neto postou uma vez uma função para calcular o fatorial. Veja:

 

<?php
function f( $x ) {
return $x <= 2 ? $x : $x * f( $x - 1 );
}

echo f( 1 ); // 1
echo f( 2 ); // 2
echo f( 3 ); // 6
echo f( 4 ); // 24
echo f( 5 ); // 120
echo f( 6 ); // 720
echo f( 7 ); // 5040
echo f( 8 ); // 40320
?>

 

Agora é só seguir os passos do Beraldo ali em cima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu achei aqui uma solução mais ta faltando alguma coisa

não ta funcionando.:

 

#include <string.h>

typedef char * string;

// Esta função recebe uma cadeia de caracteres str 
// e imprime todas as permutações dos caracteres 
// da cadeia.

void ListPermutations( string str)
{
  RecursivePermute( str, 0);
}
// A função abaixo recebe uma cadeia de caracteres str 
// e imprime todas permutações de str que começam com 
// os k primeiros caracteres de str. No fim da execução 
// da função, a cadeia str é idêntica à original.

void RecursivePermute( string str, int k)
{
  int i, len;

  len = strlen( str);
  if (k == len) {
     printf( "%s\n", str);
  } else {
     for (i = k; i < len; i++) {
        ExchangeCharacters( str, k, i);
        RecursivePermute( str, k + 1);
        ExchangeCharacters( str, i, k);
     }
  }
}

// A função abaixo troca de posição os caracteres p1 e p2 
// da cadeia str.

void ExchangeCharacters( string str str[], int p1, int p2)
{
  char tmp;
  tmp = str[p1]; str[p1] = str[p2]; str[p2] = tmp;
}



 

 

ver se alguem cnsegue me ajudar...

para colocar esse codigo rodando...

 

Att, Fabio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você decidiu utiliza C++, vou mover para o fórum correto.

 

Tópico Movido

PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif C/C++

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse codigo que está no link que você passou não está compilando aqui

está dando o seguinte erro:

 

"main must return int"

 

o codigo é esse:

 


#include <stdio.h>

/**
  Read a number, N, from standard input and print the
  permutations.
*/

void print(const int *v, const int size)
{
 if (v != 0) {
   for (int i = 0; i < size; i++) {
     printf("%4d", v[i] );
   }
   printf("\n");
 }
} // print


void swap(int *v, const int i, const int j)
{
 int t;
 t = v[i];
 v[i] = v[j];
 v[j] = t;
} 


void rotateLeft(int *v, const int start, const int n)
{
 int tmp = v[start];
 for (int i = start; i < n-1; i++) {
   v[i] = v[i+1];
 }
 v[n-1] = tmp;
} // rotateLeft


void permute(int *v, const int start, const int n)
{
 print(v, n);
 if (start < n) {
   int i, j;
   for (i = n-2; i >= start; i--) {
     for (j = i + 1; j < n; j++) {
swap(v, i, j);
permute(v, i+1, n);
     } // for j
     rotateLeft(v, i, n);
   } // for i
 }
} // permute


void init(int *v, int N)
{
 for (int i = 0; i < N; i++) {
   v[i] = i+1;
 }
} // init


void main()
{
 char buf[80];
 int N;
 printf("Enter the number of elements: ");
 fgets(buf, sizeof(buf), stdin );
 sscanf(buf, "%d", &N);

 if (N > 0 && N <= 6) {
   int *v = new int[N];
   init(v, N);
   permute(v, 0, N);
   delete [] v;
 }
}


 

 

Att, Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Inglês básico: "main must return int" = "main deve retornar um inteiro".

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu sei...

mas não sei resolver esse problema...

desculpa...eu sou iniciante em programação...

você sabe como eu faço para resolver esse problema?

 

Att, Fabio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você sabe que o compilador reclama do tipo de retorno da função main e que ela deve retornar um inteiro...É só parar p/ pensar um pouco.

Pelo menos os tipos da linguagem você tem que saber.

Compartilhar este post


Link para o post
Compartilhar em outros sites

em suma, main sempre retorna int

troque void por int e faça o main retornar algo (0 se não ocorrer erro)

 

estude mais sobre o básico de C

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.