Dev - C++ - Permutaciones y cadenas

   
Vista:

Permutaciones y cadenas

Publicado por Luis Juarez (2 intervenciones) el 11/04/2008 10:13:13
Hola, espero puedan ayudarme, creo que me he complicado mucho la vida, y he caído en un código spaghetti horrible lo peor del caso es que creo que este es un programa muy sencillo, pero me esta causando mucho problemas.

Lo que nececito es un progrma que genere las combinaciones del numero 123456, y que con cada resultado te cuente el numero de permutaciones que hay es decir:
Numero Permutaciones
123456 0
123465 1
123564 2
125643 5

Etc… el orden d elos numeros no importa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Sigo con esto...

Publicado por Luis Juarez (2 intervenciones) el 11/04/2008 10:15:23
Para eso he utilizado dos códigos. Uno que genera los números y otro que cuenta las permutaciones.

#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>

using namespace std;
int d;

//Esta funciona realiza permutaciones
bool next_permutation2(string &s) {
int i, j, n = s.size();
d=0;

if (n<=1) return false;

// buscar primer par en orden (s[i], s[i+1])
for (i=n-2; i>=0; i--)
if (s[i]<s[i+1]) break;
d=d+1;

if (i<0) return false;

// buscar a la derecha de este par, el menor elemento mayor que s[i]
for (j=n-1; j>i; j--)

if (s[i]<s[j]) break;

swap(s[i], s[j]);

// dar vuelta todo lo que quedo de i+1 en adelante
for (i++, j=n-1; i<j; i++, j--)

swap(s[i], s[j]);

return true;
}

int main()
{

string str ="123";
char a[]="123";


//Funcion propia
cout << str << ' ';
while(next_permutation2(str)){

cout << str << ' ';
// ordenamiento burbuja
// he tratado de utilizar el metodo de la burbuja para que contara las permutaciones
int pasadas;
int i;
int almacena;
int b;
int num;

b=0;
//trate de convertir la string de char a int pero dev me devuelve un error
num = atoi(str);

for (pasadas = 1; pasadas < 3 ; pasadas++ ) {
for (i=0; i < 2; i++) {
if (str [i] > str[i+1]) {
b=b+1;
//almacena = str [i];
//str [i] = str[i+1];
//str[i+1]= almacena;
}
}
}

printf( " Numero de Permutaciones ");
printf("%4d", b);
printf(" ");


}

system("pause");
return 0;
}

El problema como verán es que el que genera los números era un código que antes había utilizado para generar las permutaciones con letras y creo que alli radica el problema solo que no encuentro una solución, en este codigo uso el comando atoi, pero dev me devuelve un error, no se que hacer porfavor ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sigo con esto...

Publicado por fabian (1 intervención) el 14/04/2008 00:23:04
uhi hombre pues la verdad no eh tenido mucho tiempo para ver el codigo pero la idea que yo propongo seria que tuvieras una funcion que hiciera las permutaciones y dentro de esa una variable global que cuente cada vez que la funcion se llame ahh la funcion se deberia de llamar dentro de un for hasta que esten todas las permutaciunes asi cada vez que se llame la variable contaria en 1 cada permutacion y listo creo que ya es todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar