[C++]tvrdy orisek- libovolny pocet cyklu for?

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod kokos 2. 10. 2005 18:15

cest praci,
nevite jestli jde nejak jednoduse naprogramovat tato vec:

Kód: Vybrat vše
for(i1=0;i1<5;i1++)
  for(i2=0;i2<5;i2++)
    for(i3=0;i3<5;i3++)
        .
           .
            for(iN=0;iN<5;iN++);


proste aby probehlo tolik vnorenych cyklu for, kolik bych zadal... dumal jsem nad tim a na nic neprisel:-))
diky
kokos
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Wikan 2. 10. 2005 18:21

A k cemu by to bylo dobry? Urcite by to slo napsat jinak a lip.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod kokos 2. 10. 2005 18:31

no vsak se vole ptam jak:-)))
kokos
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Wikan 2. 10. 2005 18:34

No a proto se te vole ptam k cemu to potrebujes.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod miho 2. 10. 2005 18:46

Wikan se naprosto spravne pta protoze toto vede na algoritmus s exponencialni slozitosti a ty byvaji jen zridkakdy v praxi pouzitelne...

Kdybych to musel realizovat tak vyjdu z vlastnosti cisel v ruznych ciselnych soustavach. pokud maji byt ty cykly od 0 do 5 tak pouziju sestkovou soustavu. pricitam vzdy jednicku a cislice v kazdem radu mi da jednu z hodnot ridicich promennych v cyklu. Jednoduche a da se efektivne realizovat.
miho
Hlavní administrátor
Uživatelský avatar

Odeslat příspěvekod root 2. 10. 2005 18:48

protoze to nevis, tak se ho ptas na co to potrebuje? Dost slaby, no tohle se da napsat dost jednoduse; pokud se na d tim zamyslis dost, prides na to, ze pro tebe by byla asi nejlepsi 'rekurzivni' funkce :)
root
Junior
Uživatelský avatar

Odeslat příspěvekod Delfín 2. 10. 2005 18:49

Sice neznam ucel tohoto pozadavku ale reseni bude v rekurzivnim volanim fce.
Delfín
Junior
Uživatelský avatar

Odeslat příspěvekod fkonvick 2. 10. 2005 18:50

Co treba neco jako tohle:

Kód: Vybrat vše
#define LOOP_COUNT 1000
#define I_MAX 5
int ib;
for(ib=0; ib<(int)pow(I_MAX, LOOP_COUNT); ++ib) {
  int i[LOOP_COUNT], x, ibc=ib;
  for(x=LOOP_COUNT-1; x>=0; --x) {
    i[x]=ibc%I_MAX;
    ibc/=I_MAX;
  }
  // .......
}


//adams: upraveno. Používejte pro kód tag code !!!
fkonvick
Kolemjdoucí

Odeslat příspěvekod root 2. 10. 2005 18:50

Hehe - Delfin :)
root
Junior
Uživatelský avatar

Odeslat příspěvekod root 2. 10. 2005 18:53

fkonvick píše:Co treba neco jako tohle:

#define LOOP_COUNT 1000
#define I_MAX 5
int ib;
for(ib=0; ib<(int)pow(I_MAX, LOOP_COUNT); ++ib) {
int i[LOOP_COUNT], x, ibc=ib;
for(x=LOOP_COUNT-1; x>=0; --x) {
i[x]=ibc%I_MAX;
ibc/=I_MAX;
}
// .......
}


fuj! horsi kod sem nevidel XD
root
Junior
Uživatelský avatar

Odeslat příspěvekod miho 2. 10. 2005 18:54

Myslete trochu na efektivitu. Pokud bude N vysoke tak kolikrat se bude muset zavolat ta funkce v rekurzivnim reseni?

m^(N+1) nepletu li se
Naposledy upravil miho dne 2. 10. 2005 19:11, celkově upraveno 1
miho
Hlavní administrátor
Uživatelský avatar

Odeslat příspěvekod root 2. 10. 2005 19:00

a cemu to jako vadi?
myslis, ze nejaky parsovani pole ti zezere 10 minut procesoorvyho casu? i kdyby bylo N 10^e99 tak je to porad v pohode.
root
Junior
Uživatelský avatar

Odeslat příspěvekod Delfín 2. 10. 2005 19:06

Mohl jsem si usetrit namahu :)
Delfín
Junior
Uživatelský avatar

Odeslat příspěvekod miho 2. 10. 2005 19:15

Nechci ti brat nejake iluze roote ale pokud m je 6 a N je treba 20 pak se operace uvnitr cyklu provede
3,65616E+15 krat (6^20)
Pokud budeme pocitat milion prubehu cyklu za vterinu pak se dostaneme na cas vypoctu 115 let.
miho
Hlavní administrátor
Uživatelský avatar

Odeslat příspěvekod HáRoš 2. 10. 2005 20:08

miho píše:Nechci ti brat nejake iluze roote ale pokud m je 6 a N je treba 20 pak se operace uvnitr cyklu provede
3,65616E+15 krat (6^20)
Pokud budeme pocitat milion prubehu cyklu za vterinu pak se dostaneme na cas vypoctu 115 let.


Kdesi v nějakém výzkumu vyzkoumali, že nejvíce strojového času se sežere předpovídáním spotřeby strojového času u skutečných úloh...

Uf, doufám, že jsem se vyjádřil jasně :roll:
navždy mladý. navždy junior
HáRoš
Junior
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků