jeh_dias
(usa Ubuntu)
Enviado em 06/01/2013 - 09:59h
Olá , bom dia .
Preciso escrever um algoritmo em c++ para criar combinações entre caracteres . Porém eu vou passar por parâmetro a quantidade de caracteres para combinar e os caracteres também . A lógica é estilo a lei da tabela da verdade .
Vou colocar aqui uma explicação de lógica que me deram para facilitar .
Vamos supor que eu quero criar senhas de três caracteres com a, b e c.
aaa
aab
aac
Aí eu gerei todas as combinações possíveis começando com aa.
Agora...
aba
abb
abc
aca
acb
acc
Agora eu gerei todas as combinações possíveis que começam com a letra a.
Agora, perceba a variação dos caracteres. quando eu começo no aaa, o ultimo caractere tem a variação igual a 1, ou seja aaa, aab e aac, a cada uma combinação que eu gero, eu troco o caractere pelo seguinte. O segundo caractere tem variação 3, ou seja a cada três combinações eu troco o valor do segundo caractere
aba
abb
abc (três se passaram)
aca
acb
acc
E a variação do primeiro caractere é 9, ou seja a cada 9 combinações geradas eu troco o valor do primeiro caractere.
O segredo desse algorítmo é trabalhar com a variação, se eu tenho três caracteres para gerar as combinações de três caracteres então, a variação do último é 3^0 = 1, a variação do penúltimo é 3^1 = 3 e a variação do primeiro é 3^2 = 9
Agora vou colocar aqui o meu código .Só tentei fazer para a primeira parte da lógica , ele contêm erros , mas vou postar mesmo assim . Assim vocês me ajudam .
Obrigada .
O código ...
#include <iostream>
using namespace std ;
int main (int argc , char * argv[]) {
char vet[10];
int n;
for (int i = 1 ; i < 10;i++){
for (int j = 0 ; j < 10 ; j++){
argv [j + 1] = argv [j]; // iguala o segundo caracter ao primeiro
argv [j + 2] = argv [j]; // // iguala o terceiror caracter ao primeiro
n = pow(argc , 0 ); // fiz a quantidade de caracteres p/ combinacoes elevada a zero ,
// a primeira parte da logica que voce me enviou
vet[i] = argv * n ; // o vetor esta recebendo a combinacao . Porem algo falta .
}
cout << vet[i] << "" << ; // escrevendo o vetor
}
}