zdravim, potřebuju u cyklu for hodně opakování(tolik, že už mi to hlásí chybu), představte si tisíce let převedené na sekundy;-) Nevíte někdo, jak to obejít, nebo nějakej jinen návrh jak to provést? Děkuji :darth:
Fórum › C / C++
For cyklus s opravdu hodně opakováním
tak dobr?, zd? se, ?e to jede(nefunguje to v pythonu, m?j omyl), provar je, ?e to jede skute?n? dlouho, ikdy? to se d? ?ekat. Jak dlouho se bude propo??t?vat cyklus(velmi jednoduch?, jen jedna rovnice+nahrazen? hodnot),kter? jede 31 536 000 000 kr?t?? :ehh: a dojede v?bec?
Jak dlouho pojede (v ideálním stavu) se dá spočítat -sečíst všechny hodnoty tiků v daných operacích. (IMHO je nesmyslené to počítat), pak záleží na systému.
Jinak nenapadá mě rozumný(žádné chyby, přehlcení atp.) důvod proč by to dojet nemělo, z logiky algoritmu to není problém.
No, taky nev?m, pro? by to nem?lo fr?et. J? jsem teda zat?m po??tal nejv?c okolo deseti milion? cykl? a probl?m nebyl. V jednom cyklu se po??talo asi 5 rovnic, n?soben?, d?len?, s??t?n?, od??t?n?. Jinak rychlost v?po?tu dost z?vis? na tom, kolik je v dan? chv?li voln?ch syst?mov?ch prost?edk? a jak?m způsobem se m? po??tat (jestli je k dispozici koprocesor a jak?, neboli: jestli do Brna m??e? jet po d?lnici nebo mus?? po okresk?ch)
mimochodem, je to progr?mek na v?po?et n?r?stu hmotnosti planetesim?ly v z?vislosti na ?ase, a simulu t?m situaci p?ekotn?ho r?stu(po??tek-miliony planetek->postupem ?asu se sr??ej? a sni?uje se po?et, a? vznikne kritick? situace). T?d k probl?mu-funguje to, 1000x no problem, 100 000 no problem, 1 000 000 pomalej??, le? jde to. Pak u? to je ne?nosn?, nevyp??e chybu, ale zd? se mi, jako by ve v?po?tu vůbec nepokra?oval. Jde n?jak nastavit priorita toho procesu? jako aby procesor vyu??val co nejv?c to jde? nebo jak?koli n?vrh pot???. u? t?d d
Priorita jde nastavit pomocí vláken ale to je trochu složitější. Spíš bych zkusil algoritmus nějak optimalizovat nebo když je to tak náročný výpočet, tak je docela logické, že to pude dlouho, tak třeba aspoň ukázat, kolik % už má za sebou, ať víš, jestli se to vůbec hejbe;)
Jak je tam o?et?en? podm?nka na po?et opakov?n?? Pomoc? cyklu for cca takhle(?):
for(long i = 0; i < 100000000; i++) ??? Resp. jakej typ inkrementu je pou?itej. Proto?e p?i tak velk?m po?tu na to cel? ??sla pravd?podobn? sta?it nebudou. A pokud tam je inkrementem typ float, tak potom zas hroz? n?co takov?ho:
1000000 + 1 = 1000000 !!!
Proto?e float m? jen 6 platn?h ??slic. Double m? tu??m 15 a long double 18.
Šlo spíš o to, jak to tam má autor, jestli porovnává v cyklu inkrementovanou hodnotu typu int s číslem 30 000 000, tak potom je otázkou, jestli operační systém odhalí přetečení, protože jestli ne, tak se konce nedočkáš. Dá se to řešit násobením typů, stačí mít dva do sebe vnořené cykly a když je v každém typ int, tak výsledný počet cyklů je 32 000 x 32 000 = hodně
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Variace s opakovanim — založil Milan
Variace s opakovanim — založil jirka
Permutacie s opakovanim rekurzivne — založil adzam333
Hádaní Čísel - problém s opakovaním — založil Tomáš
Hodne Velkej Help !!!! — založil Zbyněk Juroš
Moderátoři diskuze