[ negative7 @ 14.05.2010. 19:58 ] @
Da li bi netko mogao napraviti program ako nije problem,a nije zurno koji radi ovo:

ispisuje na ekran sve moguce kombinacije od 3 znaka,recimo a,b,c: a,b,c,aa,ab,ac,bb,ba,bc,cc,ca,cb,aaa,aab,aac,aba,a bb,abc,.... itd

Znam da treba nesto prije uradit sam da bi bilo po pravilima foruma,ali stvarno ne znam kako,na prvi pogled mi izgleda da treba puno for petlji....(ima previse kombinacija)
[ Mihajlo Cvetanović @ 14.05.2010. 21:09 ] @
Takvih kombinacija ima beskonačno. Na primer, i abcabcabcabcabcabc je jedna takva kombinacija. Da nema neko ograničenje, recimo maksimalan broj slova? Druga stvar, jesi li siguran da kombinacije mogu da imaju i manje slova od tog maksimalnog broja? Pitam jer je jednostavnije ako sve kombinacije imaju isti broj slova.
[ negative7 @ 15.05.2010. 10:59 ] @
Da moja greska,mislio sam na max 3 znaka,i da moze imat manje,ali ako je i to pretesko kako onda samo od 3 znaka sve kombinacije.
[ Mihajlo Cvetanović @ 15.05.2010. 12:52 ] @
Pitanje je da li ovo treba da se rešava rekurzijom. Može i bez rekurzije, sa trostrukom for petljom, ali ako ti profesor kaže "dobro, a sad ispiši sve kombinacije sa maksimalno 20 znakova", to bi trebalo da bude 20-struka petlja, što nije baš lepo prizor. Recimo da ne mora rekurzija. I recimo za početak da treba da ispišeš sve kombinacije sa tačno 3 znaka, to jest aaa, aab, ..., ccc. Ako imaš trostruku petlju vrlo je prosto. Svaki od tri brojača je jedan znak, a ta tri znaka u nizu daju jednu kombinaciju. Zaglavlje svake od tri petlje bi recimo izgledala ovako: for (char i3 = 'a'; i3 <= 'c'; i3++). I analogno za unutrašnje i2 i i1. Telo petlje je onda prosto printf("%c%c%c\n", i3, i2, i1). Za dvoslovne i jednoslovne kombinacije treba samo da ubaciš dva printf-a na pravo mesto negde unutar ove tri petlje. Ali ispiši prvo samo troslovne kombinacije za početak.
[ pgavrilo @ 15.05.2010. 12:57 ] @
Code:

#include <iostream>
#include <algorithm>
using namespace std;
int main ()
{
  char s[] = "car";
  sort(s,s+3);
  do
    cout << s << " ";
  while (next_permutation(s,s+3));
}

Evo primer koda koji će ti dati sve moguće kombinacije sa 3 slova, a još malo koda mogo bi dobiti i sa 2 slova, pa ti malo razmisli. Funkcija sort je potrebna da postavi niz u rastući redosled da bi mogla funkcija next_permutation raditi da izbacuje sve kombinacije. Nadam se da može pomoći. Da ti ne uradim čitav zadatak.
[ Mihajlo Cvetanović @ 15.05.2010. 13:35 ] @
Obično je uslov ovakvih zadataka da ne koristiš gotove funkcije. Ali treba pitati profesora :-)
[ negative7 @ 15.05.2010. 15:33 ] @
ma nema nikakvog profesora jednostavno mi palo napamet,znaci sve se moze koristit.
[ negative7 @ 15.05.2010. 15:43 ] @
Evo prema ovome sto Mihajlo kaze,ali stvar je u tome da uopce ne znam jesu li to sve moguce kad ne znam ni koliko ih moze bit razlicitih...i kako kod ucinit preglednijim sa rekurzijom..u biti kako vi razmisljate kako upotrijebit rekurziju,dobro evo kad se nesto ponavlja ali kako evo bas sad na ovom primjeru ili nekom drugom,nekako mi se rekurzija cini zapetljana..
Code:

#include <iostream>

using namespace std;
int main ()
{
  char i3,i2,i1;
  for(i3='a';i3<='c';i3++)
  {
      cout<<i3<<endl;
    for(i2='a';i2<='c';i2++)
    {
        cout<<i3<<i2<<endl;
        for(i1='a';i1<='c';i1++)
        {
            cout<<i3<<i2<<i1<<endl;
        }
    }
  }
}


[Ovu poruku je menjao negative7 dana 15.05.2010. u 17:00 GMT+1]