wypisywanie kombinacji znaków

wypisywanie kombinacji znaków
K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
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.

Kopiuj
#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

robcio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Opole
  • Postów: 533
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.