» Poradna » Programy

Max. počet vnořených cyklů pas, c++

 |   |  Android Chrome 109.0.0.0

Rád bych něco spočítal ale překladače to přeloží blbě. Mám 40 vnořených cyklů a program zabloudí. Očekávám, že by to mohla vylepšit nějaká volba pro překladač.Zoušel jsem fpc pro windows. Přepsal jsem to pro c++ v aide pro android ani c4droid to nedal. code:https://pastebin.com/MgYYxc2G//Na kód používejte externí služby. Moderátor//

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Android Chrome 109.0.0.0

Ještě ten pascal:https://pastebin.com/WXNP4kC0//Na kód používejte externí služby. Moderátor//

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Android Chrome 109.0.0.0

Všimnul jsem si chyby, že MIN, MAX, DELTA a MINDELTA mají být float resp. real, ale na to bych přišel až by mi fungovaly správně cykly.Ještě by se hodila optimalizace, aby se mi neopakovaly kombinace se stejnými množinami A protože nezáleží na pořadí S ale na MINDELTA.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 108.0

Kód, aby se dal kopírovat, máte tady https://pastebin.com/MPsLhvytByla by slušnost to prezentovat tak, aby si ostatní "Vykopírováním" z poradny neodnesli kód "na jedné řádce".Nevadí vám, že si j pokaždé "zresetujete" na nulu?Co to má dělat a nedělá?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 108.0

Jinak souhlas s ostatními - určitě není problém v kompilátoru, ale na 99 % v autorovi (to 1 % je rezerva pro případ, že tohle je jen nějaký maskovaný proof of concept geniálního řešení).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Nejsem tu častým návštěvníkem, a nešlo mi vložit to sem jinak. Dal jsem opravenou verzi na https://pastebin.com/usuCwfteJeště to chce nějak zrychlit a jsem rád, že jsem zatím vypotil aspoˇn tohle.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Unknown Mozilla 109.0

https://pastebin.com/ je tvůj nejlepší přítel. Prosím, vždy nahrávat kód tam...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Macintosh OS X Safari 16.0

aaa, zkouskove je tady :D

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Ale kdeže. Takhle to vypadá, když jsem koupil baterie od Číˇnana.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 108.0

Jaký baterky?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android AppleMAC-Safari 5.0

Co mají baterky od Číňana společného s programem? To že Číňani lžou a nikdy nevíš, co ti od nich přijde, to už ví i školní děti. A že baterie a paměťová zařízení se v Číně nekupují, to ví taky každý.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 109.0

40 vnořených cyklů?To vypadá na blbě vymyšlený algoritmus. Technicky (pro překladač) to problém není, proč taky, dokud se to vejde do paměti..., ale pro autora spíš ano - tedy určitě, když to nedělá, co očekává.Ona taky doba výpočtu v zanořených cyklech roste exponenciálně a 40 zanoření, to bude docela náročné.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Opravil jsem code a doufám, že už to dělá co má. Ještě by to chtělo nějakou efektivnější metodu řešení. Cyklů tam už méně nebude a 8 vláken by to vylepšilo, ale ne až tak moc. Snažil jsem se to napsat srozumitelně pro čtenáře.https://pastebin.com/usuCwfteJinak beru i výsledek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Už jen z toho, že máš problém s různými překladači, plyne, že problém je spíš v tom programu ...Možná se zamyslet nad tím, co vlastně chceš dosáhnout, resp. jak. Třeba jdeš špatnou cestou.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Omlouvám se, našel jsem chybu, že s Bxx musím pracovat jako s indexem. Opravil jsem to vč. práce s A a už to dělá co by mělo. Udělám však nové vlákno a pokusím se zaregistrovat na pastebin nebo co to chcete, a pošlu opravené.Mám však potíž s výkonem. Po přeložení ve VS to jede jenom na 12% cpu. To nepotěší. ˇZe to bude jedno vlákno sem čekal, ale chce to hodně zrychlit nebo dokonce použít nějakou matematickou metodu pro minimalizaci onoho DELTA.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 108.0

Mas osmijadro a tak 1 CPU tvori 12% z 8. Rozloz to do vice (8) vlaken a pojede to na 100%

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Samo se to na víc vláken nerozloží, to musíš zařídit ty.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Optimalizace (maximalizace/minimalizace) - říká ti něco "simplexový algoritmus" ???

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 109.0

"minimalizace rodílu součtu 4 prvků ze 12 množin vytvořených kombinací ze 48 prvků" Mohl bys to prosim popsat jeste jednou a lepe? Nejak se mi nedari pochopit, o co se vlastne snazis. Idealne zkus popsat problem, ktery resis. A mozna existuje lepsi reseni nez to ktere se snazis popsat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0
avatar
 | Microsoft Windows 10 Firefox 109.0

Ano, tohle jsem videl. To neni popis problemu, to je implementace algoritmu a z toho to vestit nebudu. Zajima me popis toho, co se snazis vyresit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 108.0

Programuje, a ještě blbě robota kterej mu má ty baterky sestavit. Jinak si to nedokážu vysvětlit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Lidově řečeno: Potřebuji složit baterii 12s4p ze 48 článků od Číˇnana.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android AppleMAC-Safari 5.0

A co přesně z toho potřebuješ spočítat, že k tomu ještě potřebuješ program? To se copak nedá spočítat na papíře s využitím kalkulačky??? Co má být výsledkem?

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 109.0

Hodne stesti s papirem a kalkulackou Slysel jsi nekdy pojem NP-uplnych problemech, treba o problemu batohu? https://cs.wikipedia.org/wiki/Probl%C3%A9m_batohu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android AppleMAC-Safari 5.0

Samozřejmě záleží na tom, co přesně chce vlastně spočítat

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 109.0

No vida, s tim uz se da pracovat. Kdybys pocital vsechny kombinace, tak to v rozumnem case neudelas. Staci ti "dost dobre" reseni, i kdyz nemusi byt idealni?(29.8616, 29.7898, 31.4324, 35.2363) 126.320(29.8038, 30.1869, 36.2898, 30.0396) 126.320(30.7146, 28.5678, 36.0331, 31.0046) 126.320(35.4622, 31.038, 29.9704, 29.8497) 126.320(29.2263, 35.8329, 30.9752, 30.2859) 126.320(35.793, 30.2525, 30.7302, 29.5441) 126.320(30.8928, 29.2175, 30.0225, 36.1883) 126.321(29.4223, 30.9813, 31.247, 34.6654) 126.316(30.5407, 31.0243, 30.5338, 34.2155) 126.314(29.3278, 30.6927, 30.6881, 35.6385) 126.347(35.9967, 28.7797, 31.0565, 30.6323) 126.465(36.385, 29.6376, 29.0747, 31.0599) 126.157

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 109.0

Je to samozrejme jen jedno z moznych reseni, dala by se napsat jina implementace ktera hodi jiny vysledek, ktery bude optimalizovany nejak jinak a vymysli jine ctverice.Tenhle vypocet trval cca vterinu, kdybys chtel najit idealni kombinace, tak to bude na hodne dlouho.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 109.0

Tady mas jine seskladani, ktere ma oproti tomu prvnimu mensi vykyvy od idealniho souctu kapacit pro danou ctverici.(35.9967, 29.8616, 30.8928, 29.6376) 126.389(35.4622, 29.2263, 30.7146, 30.9813) 126.384(36.385, 29.7898, 28.7797, 31.4324) 126.387(35.793, 29.2175, 30.5407, 30.7302) 126.281(28.5678, 30.2525, 36.1883, 31.247) 126.256(31.038, 29.4223, 30.0225, 35.8329) 126.316(29.8038, 30.1869, 36.2898, 30.0396) 126.320(36.0331, 29.3278, 29.9704, 31.0046) 126.336(29.5441, 30.9752, 30.5338, 35.2363) 126.289(29.0747, 31.0243, 30.6323, 35.6385) 126.370(29.8497, 30.6927, 31.0565, 34.6654) 126.264(30.6881, 30.2859, 31.0599, 34.2155) 126.249O moc lepe to myslim udelat nejde.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

To mu stejně nepomůže - v té paralelní kombinaci jsou dost různé kapacity a pokud tam nebudou balancéry, nebudou se stejně správně nabíjet. Takže ty výsledné kapacity/náboje stejně nebudou stejné ...Asi jediné smysluplné řešení je dát paralelně "stejné" kapacity (alespoň se to jakž takž spravedlivě rozdělí při nabíjení i vybíjení) a při vybíjení/nabíjení hlídat napětí na "nejslabším" členu (který tak určí nejzazší mez vybití celé sestavy).

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 109.0

To se me netyka, klidne se tady prede vsemi priznam, ze baterkam a jejich nabijeni vubec nerozumim. Ja jsem jen reagoval na zadani a tu programatorskou cast problemu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Tys to udělal velmi dobře ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

... to bylo pro tazatele.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Unknown Firefox 109.0

Paralelne mozete dat aj diametralne odlysne kapacity a "fungovat" to bude celkom dobre. Seriovo zapojit rozne baterky sa nevyplati. Cela sada by bola obmedzena clankom s najnizsou kapacitou. Autorov myslienkovy pochod je spravny za predpokladu, ze sa kapacity clankov pocas pouzivania vyrazne nezmenia.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Za mne palec nahoru Já se nebráním jinému řešení ba naopak ho vítám. Pro praktické využití je to luxusní výsledek.3/4 roku jsem to odkládal vědom si toho, že propočíta všechny kombinace není moc dobrý nápad. Raději bych "lovil ryby" než se jen nechal krmit ale i tak jsem rád, že z tohodle už zpětně vypočítám která baterie přijde kam zapojit. Jak jsem s tím nemohl pohnot, tak jsem ze zoufalství objednal další baterie, ale jak tu někdo psal, není vyloučeno, že tam budou zase rozdíly. Jinak dal jsem si pěknou práci naměřit charakteristiky kus po kusu a z prvních sedmi jsem udělal i graf nabíjení a vybíjení proudem 20A s časovou osou v desítkách sekund.https://1drv.ms/u/s!Ajf9KrDbOTOVhJYr8OSsxDe1A0PwxQ?e=IPhxHCPro efektivnější měření už mám připravený materiál na výrobu experimentální měřicí aparatury metodou spektroskopie. Očekávám, že se mi podaří významně zkrátit čas měření a získat přesnější informace o složení a stavu baterie. Teprve budu získávat zkušenosti, ale jsem již takový vědátor samouk.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 108.0.0.0

Program nezabloudí. A většinou ani ten překladač to nepřeloží špatně. Program se chová podle kódu. To co zabloudí je programátor, který to blbě napíše. A musím říct, že po tom co jsem se na ten kód jen podíval, tak je tam velká šance na nějaký překlep, místo 12 omylem napíšeš 11 a hned se dostaneš do nekonečné smyčky apod. Divím se že se v tom vyznáš, ikdyž vlastně vidím že se v tom nevyznáš ani ty sám a vinu svaluješ na překladač.Začni tím, že nám sdělíš co a jak ten program má spočítat. Tam je nutné začít a zamyslet se nad tím jak to vůbec počítat. Třeba si připravit dopředu ty množiny, zredukovat je na jedinečné kombinace a až nad tím spustit ten výpočet. To že děláš kombinace všech kombinací z kombinací pomocí 40ti vnořených cyklů vede k tomu, že 4000x počítáš to stejné, což je neefektivní a naprosto zbytečné. Ten kód vypadá že sis vybral BruteForce metodu a ještě napsanou prasáckým způsobem. Z toho nechci ani hádat co to má dělat natož jak to vlastně počítá. 40 vnořených cyklů je naprostý nesmysl, většina problémů se dá napsat na nějaké 3-4 vnořené cykly. 40 fakt svědčí o chybném návrhu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Snažil jsem se to napsat co nejméně záludně aby to bylo dobře čitelné. Co sem našel, to sem opravil.https://pastebin.com/usuCwftePočítám, jak sestavit baterii 12s4p ze 48 článků od Cínana. Byl jsem podveden a i kdyz mají být všechny články stejné, měření ukázalo rozdílné kapacity.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Chrome 108.0.0.0

nějaká odlišnost v kapacitě je snad tolerance výroby, ne? Zvláště u konzum článků. Nebo to měly být vyloženě předvybrané baterky?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 108.0

Proč sem pořád dáváš ten odkaz na ty písmenka a čísílka? Nafoť baterky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android AppleMAC-Safari 5.0

Tvl. a co jsi čekal? Že budeš mít 48 baterek se zcela přesně shodnou kapacitou? Ani omylem. To nemáš ani u značkových baterek. Proto se při sériovém nebo serioparalelním řazení musí používat balancery, které zajišťují, aby se baterie nabíjely a vybíjely rovnoměrně.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 108.0

Kolik je balancérů v autobaterii 12V 55Ah? Jinak měření kapacity baterky je docela ošidná věc, aby došlo ke blížení se 100%, musí se nabitá baterka za měření vybít, a pak to zpočíst. Měření vnitřního odporu je lepší, je to takový kompromis. Měření dle jenom napětí jsou docela k prdu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

Tam není nic paralelně ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 108.0

Když už obecně, tak největší přínos má právě sériové balancování.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 108.0.0.0

Ok, s tím už se dá nějak pracovat.Abych to teda shrnul. Máš 48 článků od číňana a každej je jinej.Musíš je rozdělit na 12 skupin po 4 článcích. Kapacita skupiny se vypočítá prostým součtem kapacit těch 4 článků.A hledáš takovou kombinaci aby jsi kapacitu všech 12 skupin měl co nejblíže u sebe. Tj rozdíl mezi skupinou s největší kapacitou a nejmenší kapacitou byl co nejmenší.Tohle vypadá na variantu "problému batohu" což je jeden z NP problémů a tam to řešit hrubou silou jde do nějakých 15ti možná 20ti prvků, které budeš mít za rozumný čas (pár hodin) spočítané. Každý prvek zvyšuje časovou náročnost exponenciálně, takže pro těch 48 článků se výsledku možná ani nedožiješ.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 109.0

Dekuju ti nacelniku, ze ses me zastal

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 109.0

Priznam se, ze se mi nechce premyslet, co ten program ma delat ani proc vzniklo neco takhle komplikovaneho. Jen me zaujalo, ze prirazujete promene typu short int, coz muze byt v zavislosti na okolnostech klidne jen -32768 az 32767, vychozi hodnotu 99999. Lepsi by bylo pouzit konstantu SHRT_MAX. Ale to je asi nejmensi problem tohoto kodu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 109.0.0.0

MAXDELTA jsem opravil na float. Jsem při přepisu z pascalu nezvládnul. Jina ten pascal jsem také psal a udělal v něm méne chyb než v c++.Nicméně to C++ už mi snad dělá co má i když mi to už dost dlouho ukazuje jen 4 řádky výsledků, což je mi trochu podezřelé.https://pastebin.com/usuCwfte

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 109.0

jak se říká kdo nemá v hlavě musí mít v nohách :)

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Překladače