To Jeyekomon : I v pascalu je dynamicke alokovani, myslim ze se to jmenovalo getmem a freemem.
Overhead je pojem pro zbytecne operace/data. Teda ty, ktere nejsou primo pouzivane pro vypocet, ale jenom pomahaji vypoctu spravne fungovat. (toto jsem ted vysvetlil asi hodne spatne). Proste kdyz si koupis treba sesit, tak mas treba 20 listu, kam muzes psat+ 2 listy obal. Ty se nedaji vyuzit,jsou vlastne uplne k nicemu, ale jsou dobre na to, aby jsi tam napsaj treba jmeno, chrani ty listy uvnitr a tak. Toto je ten overhead potrebny ke sprave. A u spojaku jsou to ty zbytecne pointery, ktere ti usnadni praci, ale jsou pro to samotne ukladani dat nanic.
Pristup skokove k nejake cifre: Treba vsecky rychlejsi algoritny pro nasobeni (dokonce i deleni) pouzivaji nesekvencni pristup. Ale bezne "skolni" nasobeni ti bude urcite stacit.
Příspěvky odeslané z IP adresy 217.115.240.–
Vicemene jsi to trefil, jenom se pouziva pole misto spojaku a prvky nejsou cifry, ale inty. Takto to je v implementaci v .NET a GNU MP, jinde nevim, ale nejspis to bude uplne stejne.
Proc pole misto spojaku? Rychlejsi pristup ke vsem cifram, minimalni overhead.
Proc po velkych kusech a ne po cifrach? Procesor stejne bude pracovat s 32bit/64bit cislem, tak proc toho nevyuzit.
Jestli je struktura nejak slozitejsi. Treba v .NET se uklada opravdu jenom pole intu a par drobnosti.
Dovolim si odporovat s tim, ze nejsou zdrojaky- tady je vsechno (krome nekolika casti kodu, ktery nesmi sdilet, kvuli licencim a tak) : http://referencesource.microsoft.com/netframework.aspx
+K tomu stahovani frameworku, jak uz psal djanosik, staci, aby ho "nekdo" presvedcil. Nevim, jaka je rozsirenost, ale verim, ze .net 3 uz ma spousta lidi, takze to az tak horke nebude, staci pribalit webinstaller.
To Lukáš : Na foru programatoru se asi neda cekat nic jineho, nez ze budou branit kolegu.
K odhadu casu: Je potreba si uvedomit, ze programator muze ukol "napis modul na to a to" pojat zpusoby "napisu modul na to a to a hotovo" , coz trva chvilku, nebo to muze pojat "napisu modul na to a to, pridam k tomu pekne rozhrani, moznost jednoducheho rozsireni do budoucna, zabranim vlozit nejake nesmyslne udaje, vyborne to zabezpecim, udelam zatezove testy a nakonec napisu dokumentaci, aby to potom mohl upravovat i nekdo jiny." coz trva minimalne 10x tak dlouho. Idealni je ten druhy pristup, ale kdyz zamestnavatel uslysi, ze podle jeho nazoru jednoducha vec na hodinu muze trvat treba tyden, tak se strasne divi. Nejlepsi je platit procenta ze zisku, misto pevne taxy, aby byla motivace makat, a makat dobre.
Ono diskutovat s programatorem o jeho praci bez IT vzdelani (toto neberte jako nejaky utok, ale proste konstatovani stavu) je celkem problemove, protoze bezny clovek opravdu nevidi, na co vsechno je potreba myslet, aby se vysledek nerozpadnul pri prvnim pouziti. Stejne jako nekdo jiny si muze myslet o reklamnim plakatu, ze to je deset minut v malovani, ale nevidi dalsich deset navrhu, spousta psychologie, studia barev, pruzkumu cilove skupiny, zjistovani co kam dat, aby to zapusobilo a pod. (Jsem programator, takze toto byl nazor laika na to , co se asi tak dela bay reklama fungovala).
Samozrejme jestli je Vas programator jelito, tak kazda rada draha.
Ciste teoreticky, vlivem zareni. Ale je to tak vzacne, ze na "takove to domaci pocitani" nema cenu se tim zabyvat.
http://en.wikipedia.org/wiki/Dynamic_random_access_memory#Errors_and_error_correction
Ještě bych doplnil, že nově jde třídit s PLINQ aj paralelně. Asi to nevyužiješ u běžného programu, ale třeba v úkolu do školy můžeš zamachrovat :)
"libovolnou přesnost" ? To jako ze umi fakt libovolny pocet znaku? Treba i vic nez nacpes do vsech disku na svete? Treba i spocitat pi naprosto presne? To je dost tezke zadani.
Ale k reseni s omezene neomezenou presnosti- udelat si spojaky/nafukovaci pole, od nejmensi cifry po nejvetsi a pak s nima pocitat.Je to jednoduche, a vysledek je hned. Pak jeste neco na zjednodusovani zlomku.
Doporucil bych xna+c#. Vykon XNA je slusny, nekde v tutorialech maji rendrovani hry s 1M trojuhelniky na scene a jede to 30+ fps na beznem stroji, takze vetsi slusna hra by klidne sla. Plus ty jejich hry jsou celkem hratelne, zadne orezavatka ala flashove rychlokvasky na internetu.
Ted spis k tve snaze. Vsichni chteji udelat diru do sveta s giga super online hrou pro tisice hracu v jeden bitve, mapou 100x100 km a grafikou jako Crysis a pokazde to skonci stejne- "jak se posilaji data" "jak vytvorim/inportuju stihacku/rytire/draka.." " OMG lolz help, jak v c# ukladat savy do souboru". Radsi napis logicky rychlik, teba i hloupe tanky/lode/pisvorky/balancovani s kulickou na derave desce a zjistis, ze to takova sranda neni.
Taky ctu "vynasobeni A*B bez pouziti "*" " takze chyba je na vysilaci. Plus v dalsim prispevku pises "if (a and b)=true then vysledek:=true; " a tam je pouzite and, z toho se da usuzovat, ze and je povolene.
Co to je? Utok necromanceru nebo co? Toto je uz nekolikata zombie...
Spis prvni, protoze ti prvni si rekli "Cekam tu od zacatku, zadne specialni instrukce sem nedostal a je mu nevolno, takze mu asi fakt je nevolno". Kdezto ten, co prijde posledni "a, nejakou kulisarnu na me usili a ted cekaji jak se zachovam. Kaslu na to, at si hraje dal to svoje divadlo." Teda takto bych premyslel ja v cekarne na psychologicky experiment. Samozrejme pokud by se zacal svijet na zemi, tak pomoc vzdy, experiment neexperiment. A k cemu to vlastne potrebujes? A proc zrovna na programujte?
A to neslo napsat V:=A AND B; ? je to presne 11 znaku a funguje to stejne
Panove, sem znacne zmaten- co se vlastne nasobi- booleany, cela cisla lidsky,cela cisla bitove, jakozerealna, hrusky, nebo jeste neco uplne jineho?
Jeste oprava, pro 0 je to 1 tam to hapruje, ale od 1 uz to sedi.
Pridanim n te primky vznikne n ploch. Celkem je tedy n/2*(1+n) +1 ploch (s tou 1 si nejsu moc jisty, ale na zacatku to je pro 0 primek 1plocha, tak asi jo). Od toho se musi odecist neuzavrene, ty co jsou na okraji. Tech je snad 2*n, protoze pridanim kazde primky se 2 okrajove plochy rozdeli na 4.
Takze mame:
0 0
1 0
2 0
3 1
4 3
5 6
Sedi vzorec i pocitani rucne/papir, tak je to snad dobre.
To Slipknot : Jestli si myslis, ze toto je tezke, tak to teprve uvidis v 5. tride.
"ahoj potrebuju hacknout travian, potrebuju milion obili, napis takovy program" :) ... ale ted vazne, k cemu je umet vsechno?
Jeste bych se chtel opravit- 2 na 2A pokud kladne tak delsi je vetsi, 2B opacne.
To tymes.jan : A ty cisla jsou cela, prirozena nebo realna? Jake nejvetsi mozne cislo muze byt na vstupu?
To Mixxy : Je sice hezke, ze desetinne cisla to vezme v pohode, ale nedokaze to porovnat ani cele.Treba 456> 1234. Protoze to porovnava stringy znak po znaku a 4>1.U desetinnych je to uplne stejne. 7.6>456.1 >1234. A u zapornych je to take tak -876>-432 >-1.
To soul_draco : Pascal nema dost velky ciselny datovy typ, aby se do nej vesel nejvetsi mozny vstup tj 255 znaku.
Takze nejbliz reseni byl tymes.jan (pokud se v tom gulasi vyznam dobre).
1. porovnat znamenka, pokud ruzne tak + je vetsi, pokud ne tak
2. najit delici znak, tj tecku nebo carku a porovnat delky stringu pred- pokud je jeden delsi tak delsi je vetsi, pokud ne tak
3A. obe kladne- porovnat obe cisla jako string, vetsi je vetsi
3B. obe zaporne- porovna obe cisla jako string- mensi je vetsi (bacha chytak)
Tento postup dokaze vybraz nejvetsi realne cislo od asi -10e255 do 10e256 (- a 254 devitek, 255 devitek) , vcetne realnych zapsanych s teckou nebo carkou, ne exponentem.
Jediny problem by mohl byt pozice tecky a delka stringu.
function Pos(Substr: String; S: String): Byte; - najde pozici kde je ve stringu urcity jiny string pozice:=Pos('.', cislo);
function Length(S: String): Integer; - delka stringu- delka:=Length(cislo);
Melo by to byt dobre, zapsat to pujde taky dobre, az na spoustu if. samozrejme pokud vstup budou jenom prirozena cisla tak odpada 1 krok a v druhem se porovnavaji delky celeho stringu - tento postup nejspis mas v tom kodu, ale je to straslive napsane.
To Přéma : V procedure Prikazy si nulujes hodnota_cislo a pak to prevedes do toho stringu. Staci presunout "hodnota_cislo:=0; " a "hodnota_string:=''; " mimo tu proceduru, nebo treba uplne smazat.