Edi, me vjen keq nese pergjigja ime eshte konsideruar si sfide apo dicka tjeter e ketij lloji.
Une kam 20 vjet qe programoj dhe nese kam mesuar nje gje eshte qe gjithkush ka mundesi te te mesoje dicka. Ketu perballe meje ne pune une kam nje djale 20 vjecar te cilit i bej pyetje te pakten nje here ne dite dhe me ndihmon goxha.
Une i kam ndjekur per nje kohe shume te gjate forumet shqiptare por nuk jam futur pasi nuk me interesonin diskutimet. Por keto kohet e fundit vura re qe ishin futur ne kete forum njerez si ti e disa te tjere. Shume inteligjente pa diskutim por te tille ka pasur edhe me pare. E reja ketu eshte qe ju keni njohuri te thella, keni bonsens per te ndihmuar dhe keni vullnet ti uleni nje dickaje qe "dihet" dhe vertet ta beni realitet.
Une bera nje pyetje ketu ne forum dhe vertet mora pergjigje te vlefshme.
Ndaj dhe vendosa te shikoj nese mund te jap edhe une ndihmen time ne ndonje teme diskutimi.
Une besoj se ke mesuar dicka te vlefshme nga pergjigja ime. Kufizimet e numrave dhe zgjedhja e algoritmit me te pershtatshem jane probleme qe nuk dalin shpesh neper shkolla por ndodhin shpesh ne praktike. P.sh. para disa javesh une po shkruaja nje sistem ne C++ qe komunikonte me nje sistem ne Java. Sistemi ne Java perdorte nje long (64 bit) per te paraqitur nje moment ne kohe. Nese do perdorej nje long ne anen tjeter ne C++ do humbnim rezultatin sepse nje long ne C++ eshte 32 bit. Mu desh te mendohesha disa kohe derisa gjeta nje zgjidhje te pershtatshme.
Shpresoj se nuk eshte e vertete ajo qe askush nuk do hedhe kod ne forum tani. Ne fund te fundit nese njerezit bezdisen une po heq dore, bile edhe s'po i lexoj fare.
Por duhet te vesh re qe i pari qe hodhi kod ketu pas jush jam une, dhe ti menjehere gjete disa probleme. Nuk ka kod pa probleme Edi, ka vetem kod qe eshte "good enough".
Ti nese ke deshire mund te gjesh nje zgjidhje me te mire se imja.
Problemi i pare me kodin tim eshte qe nuk jep pergjigje te sakte nese rezultati eshte me i madh se 4294967295. Arsyeja eshte sepse perdor unsigned int per te paraqitur rezultatin. Pra ti mund te gjesh menyra te tjera per te llogaritur numra me te medhenj. Mund te shkosh me 64 bit, ose mund te ndertosh nje klase Integer qe paraqet nje numer me precizion te cfaredoshem te kufizuar vetem nga memoria e makines. Meqe ra fjala numra te tille kaq te medhenj kane vlere ne kriptografi.
Problemi i dyte eshte ai qe ke gjetur ti qe per numra te medhenj programi shkaton gabime memorie. Ti sugjeron qe mund te perdoret ndonje formule. Pse nuk e gjen nje formule te tille? Ti mund te vesh re p.sh. qe formula origjinale qe ti paraqite eshte e tipt n!/k!(n-k)! ku kUne mund te sugjeroja nje drejtim tjeter. Nese e studion me kujdes ciklin qe kam shkruar une ne funksionin paskal() do shohesh qe per te llogaritur elementet e nje rreshti te duhen vetem elementet e nje rreshti me lart. Pra ti mund te shkruash nje program qe sapo perfundom se llogarituri nje rresht i fshin rezultatet e rreshtit te mesiperm duke liruar keshtu memorien. Ne kete menyre ne cdo kohe do kesh ne memorie jo me shume se dy rreshta.
Nese shkruan nje program te tille do vesh re qe do jesh gjithe kohen duke zene memorie te re dhe duke fshire te vjetren (new and delete). Keto operacione harxhojne kohe. Por ti mund te shkosh me tej dhe te fillosh ta riperdoresh memorien qe ke zene ne vend qe ta lirosh per ta zene prape. E keshtu me radhe Edi, permiresimet jane te pafundme.
Shpresoj qe te kem qene me shume ndihme se sa bezdi Edi. Te jesh i bindur qe une vete mesoj shume nga diskutimet qe behen ketu.
Krijoni Kontakt