wypisywanie kombinacji znaków

0

Witam. Napisałem program który wypisuje wszystkie kombinacje znaków zawartych w "char znaki[]" . Użytkownik podaje tylko ile znaków może być wynikiem.

#include <iostream>

#include <conio.h>
#include <windows.h>
#include <string>


using namespace std;
char znaki[]={'a','b','c'};//"abcdefghijklmnoprstuwyzABCDEFGHIJKLMNOPRSTUWYZ1234567890!@#$%^&*_-=+,.;:`~";
int znakow=sizeof(znaki);

char haslo[21];
int ilosc;

void func(int pozycja, char haslo[])//ilosc  znakow, pozycja w hasle, haslo
{

    int cos2=pozycja;
    cos2++;

    Sleep(10);

    for(int i=0;i<znakow;i++)
    {
        if(pozycja<ilosc)
        {
            func(cos2, haslo);
        }
        haslo[-pozycja+ilosc]=znaki[i];
        cout<<"pozycja: "<<pozycja<<" haslo: "<<haslo<<endl;
    }
}
int main()
{
    for(int y=0;y<20;y++)
    {
        haslo[y]=' ';
    }
    cout<<"podaj ilosc znakow"<<endl;
    cin>>ilosc;
    ilosc--;
    cout<<endl;
    Sleep(50);
    func(0, haslo);
}

 

program wypisuje kombinacje tylko wyniki są dziwne co trzeci wyraz jest odwrócony a wyrazy wychodzą w dziwnej kolejności i nie za bardzo wiem jak to poprawić ;/ proszę o pomoc

0

a nie można użyć do tego gotowej funkcji? http://www.cplusplus.com/reference/algorithm/next_permutation/. Tylko pamiętaj żeby tablicę posortować bo ta funkcja zwraca false gdy dany zakres jest malejący.

1 użytkowników online, w tym zalogowanych: 0, gości: 1