الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مكتبة mathX

بدأه C++er في 14 أغسطس 2011 · 33 رد · 4,940 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تم تحويل نسخة المشروع 1.0.1 إلى النسخه unversioned update 1 و ذلك لعدة أسباب سيتم ذكرهم بعد قليل، فى الوقت الحالي يتم العمل على الإصدار الأول و الذى يحتوى على نفس الـ interface القديمه مع بعض التعديلات البسيطه فيها، ايضا تم تغيير قلب المكتبه و تم إعادة بناءها جذريا.

يمكنك متابعة المشروع على هذا الرابط و يمكنك ان تجد المشروع داخل قائمة مكتبات Arbitrary-precision arithmetic بموقع Wikipedia.

التقييم و إبداء الرأى فى المشروع مرحب به و يمكنك ذلك من خلال هذه الصفحه، و قريبا سيتم رفع الموقع الرئيسي للمكتبه على نفس الموقع و الذى سيحتوى على كافة التفاصيل التى تحتاجها للتعامل مع الكود و تطويره او تعديله إن احتجت لذلك.

الإصدار الذى جارى العمل عليه سيقدم نفس ما كانت النسخه القديمه تقدمه و بشكل افضل و هي النقاط التاليه:

المكتبه عبارة عن مجموعه من template classes تستخدم للتعامل مع انواع رقميه، تحتوى المكتبه على العديد من المزايا هي:

- سهوله فى التعامل.

- تمثيل الأرقام بإشاره و بدون إشاره.

- دعم لـ Little Endian و Big Endian.

- تم تضمين جميع المعاملات (الحسابيه، المنطقيه، معاملات البت).

- التحويل من و إلى النصوص.

- دعم IOstream.

- دعم IO manipulators و هم (dec, hex, oct, showbase, showpos, uppercase, setw, setfill, left, right).

- دعم numeric_limits.

- سهوله فى تصمين انواع جديده بدون الحاجه لكتابة سطر كود إضافي.

- تحويل تلقائى بين اى نوع بإشاره إلى أى نوع اخر بإشاره، مثلا تحويل int128 إلى int1024 و هكذا.

- تحويل تلقائى بين اى نوع بدون إشاره إلى أى نوع اخر بدون إشاره، مثلا تحويل uint128 إلى uint1024 و هكذا.

- تحويل تلقائى بين نوع بإشاره و اخر بدون اشاره بشرط ان يكون الجزء الموجب لهما له نفس النوع، مثلا يمكن تحويل النوع int256 إلى uint128 و ذلك لأن الجزء الموجب بكلاهما هو uint128.

- تحويل تلقائي لمحتويات النوعين int_t و uint_t للأنواع الأساسيه باللغه صحيحه و عشريه.

- المكتبه تأتي بشكل افتراضي بالانواع التاليه:

int128 - uint128 - int256 - uint256 - int512 - uint512 - int1024 - uint1024 - int2048 - uint2048 - int4096 - uint4096 - int8192 - uint8192

من الهام جدا قرائة محتويات الملفات TODO, README, VERSION حيث يحتووا على معلومات هامه تخص عملية البرمجه و الإصدار، ستجد الملفات داخل المجلد الرئيسي للمشروع.

الإختلافات بين النسخه القديمه و التى جارى العمل عليها:

1-

* فى النسخه القديمه تم تضمين الأنواع بشكل تراكمي بمعنى النوع int256 يعتمد على النوع uint128 و بالتالي عند بناء الفئه int2048 سيتم تضمين جميع اكواد العمليات التى يتم احتياجها لكل الأنواع وصولا للنوع uint128، هذا الإسلوب يتيح كتابة كود اقل و لكن الأداء يكون سئ جدا.

* فى النسخه الحديث جميع الأنواع تعتمد على الانواع الإفتراضيه باللغه التى تحددها انت، أيضا الأنواع الجديده لا تعتمد على بعضها و بهذا تضمن عملية بناء اسرع لبرامجك بالإضافة لكود اقل.

2-

* فى النسخه القديمه تم إستخدام algorithms مع العمليات الأساسيه، هذه الـ algorithms تقل كفائتها كلما زاد حجم النوع المستخدم.

* فى النسخه الجديده تم إستخدام algorithms تتناسب مع النوع نفسه مما يضمن سرعة و كفاءه عاليه فى الأداء.

3-

* النسخه القديمه تستخدم نفس الكود لكل من big-endian و little-endian مع التلاعب بترتيب الـ low و الـ high components.

* النسخه الجديده يوجد بها كود خاص بالـ big-endian و اخر خاص بالـ little-endian و اخر مشترك بينهم و ذلك لضمان استخدام افضل الـ algorithms التى تستخدم لكلا الـ platforms.

4-

* فى النسخه القديمه التحويل للنصوص يستخدم مصفوفه بحجم اكبر نوع مستخدم و ذلك لضمان استهلاك اقل للذاكره و بالتالي فى المشارع التى تحتوى على اكثر من thread عند التحويل للنصوص ستصبح فى مشكله كبيره.

* فى النسخه الجديده تم تلاشئ هذا العيب حيث تم وضع option ملف الـ config ألخاص بالمكتبه ليحدد طبيعة المشروع الذى ستستخدم المكتبه به لذا فى حال مشروع يستخدم مسار واحد فقط (هذا هو الوضع الإفتراضي) سيتم إستخدام نفس الإسلوب القديم و مع المشاريع التى تحتوى على اكثر من مسار يتم حجز المساحه من الـ stack عند الحاجه.

5-

* فى النسخه القديمه توجد بعض الحالات التى يتم الحاجه فيها لحساب قيم تعتبر ثابته لكل نوع و هذه الحلات يتم التحقق منها وقت التشغيل و هذا الأكواد المعقده سيجعل التفيذ ابطء بكل تأكيد.

* فى النسخه الجديده تم إستخدام الـ templates يشكل كبير جدا و ذلك مع ضمان انه فى وقت التشغيل جميع الأكواد التى ستحتاج لثابت سيكون موجود، هذا الإسلوب يحعل الكود مقروء و ايضا يعطئ افضل اداء وقت التشغيل.

6- مع النسخه الجديده سيتم وضع test-unit لكل عمليه حتى يتسنى إختبارها بشكل جيد، ايضا سيتم وضع الـ documentation الخاص بالمكتبه مع الإصدار، أيضا سيتم اختبار المكتبه على اكثر من نظام تشغيل لضمان مع اكثر من مترجم.

هذا كان ملحض لبعض الإختلافات بين النسخه القديمه و الحديثه و السبب فى تحويل النسخه القديمه لـ Unversioned هو لعدم جعل احد إصدارات المكتبه الرسميه بهذا السوء حيث ان هذه النسخه لا تصلح إلا للدراسه فقط.

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 3 نوفمبر 2011 في 21:42

12

مدونتي: C++ Tips and Tricks

#2

رائعة من روائعك يامحمد بجد, سألقى نظرة على الكود الأن, شكرا لك و بالتوفيق ان شاء الله :)

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#3

يا ترى

uint8192كم أكبر عدد يستطيع تمثيله ؟

إذا ماني غلطان 4.0 في 10 أس 1690

صح ؟

تم تعديل هذه المشاركة بواسطة docesam في 16 أغسطس 2011 في 02:52

#4

هذا مدى الأرقام للأنواع الموجوده بالمكتبه بشكل افتراضي:

int128-Min : -170141183460469231731687303715884105728
int128-Max :  170141183460469231731687303715884105727

int256-Min : -57896044618658097711785492504343953926634992332820282019728792003956564819968
int256-Max :  57896044618658097711785492504343953926634992332820282019728792003956564819967

int512-Min : -6703903964971298549787012499102923063739682910296196688861780721860882015036773488400937149083451713845015929093243025426876941405973284973216824503042048
int512-Max :  6703903964971298549787012499102923063739682910296196688861780721860882015036773488400937149083451713845015929093243025426876941405973284973216824503042047

int1024-Min : -89884656743115795386465259539451236680898848947115328636715040578866337902750481566354238661203768010560056939935696678829394884407208311246423715319737062188883946712432742638151109800623047059726541476042502884419075341171231440736956555270413618581675255342293149119973622969239858152417678164812112068608
int1024-Max :  89884656743115795386465259539451236680898848947115328636715040578866337902750481566354238661203768010560056939935696678829394884407208311246423715319737062188883946712432742638151109800623047059726541476042502884419075341171231440736956555270413618581675255342293149119973622969239858152417678164812112068607

int2048-Min : -16158503035655503650357438344334975980222051334857742016065172713762327569433945446598600705761456731844358980460949009747059779575245460547544076193224141560315438683650498045875098875194826053398028819192033784138396109321309878080919047169238085235290822926018152521443787945770532904303776199561965192760957166694834171210342487393282284747428088017663161029038902829665513096354230157075129296432088558362971801859230928678799175576150822952201848806616643615613562842355410104862578550863465661734839271290328348967522998634176499319107762583194718667771801067716614802322659239302476074096777926805529798115328
int2048-Max :  16158503035655503650357438344334975980222051334857742016065172713762327569433945446598600705761456731844358980460949009747059779575245460547544076193224141560315438683650498045875098875194826053398028819192033784138396109321309878080919047169238085235290822926018152521443787945770532904303776199561965192760957166694834171210342487393282284747428088017663161029038902829665513096354230157075129296432088558362971801859230928678799175576150822952201848806616643615613562842355410104862578550863465661734839271290328348967522998634176499319107762583194718667771801067716614802322659239302476074096777926805529798115327

int4096-Min : -522194440706576253345876355358312191289982124523691890192116741641976953985778728424413405967498779170445053357219631418993786719092896803631618043925682638972978488271854999170180795067191859157214035005927973113188159419698856372836167342172293308748403954352901852035642024370059304557233988891799014503343469488440893892973452815095130470299789726716411734651513348221529512507986199933857107770846917779942645743159118957217248367043905936319748237550094520674504208530837546834166925275516486044134775384991808184705966507606898412918594045916828375610659246423184062775112999150206172392431297837246097308511903252956622805412865917690043804311051417135098849101156584508839003337597742539960818209685142687562392007453579567729991395256699805775897135553415567045292136442139895777424891477161767258532611634530697452993846501061481697843891439474220308003706472837459911525285821188577408160690315522951458068463354171428220365223949985950890732881736611925133626529949897998045399734600887312408859224933727829625089164535236559716582775403784110923285873186648442456409760158728501220463308455437074192539205964902261490928669488824051563042951500651206733594863336608245755565801460390869016718045121902354170201577095168
int4096-Max :  522194440706576253345876355358312191289982124523691890192116741641976953985778728424413405967498779170445053357219631418993786719092896803631618043925682638972978488271854999170180795067191859157214035005927973113188159419698856372836167342172293308748403954352901852035642024370059304557233988891799014503343469488440893892973452815095130470299789726716411734651513348221529512507986199933857107770846917779942645743159118957217248367043905936319748237550094520674504208530837546834166925275516486044134775384991808184705966507606898412918594045916828375610659246423184062775112999150206172392431297837246097308511903252956622805412865917690043804311051417135098849101156584508839003337597742539960818209685142687562392007453579567729991395256699805775897135553415567045292136442139895777424891477161767258532611634530697452993846501061481697843891439474220308003706472837459911525285821188577408160690315522951458068463354171428220365223949985950890732881736611925133626529949897998045399734600887312408859224933727829625089164535236559716582775403784110923285873186648442456409760158728501220463308455437074192539205964902261490928669488824051563042951500651206733594863336608245755565801460390869016718045121902354170201577095167

int8192-Min : -545374067809707964731492122366891431224132080998116346215916393094860665924559647608132117262600993611978645898078512636554935410088592031805489882538777399539453149421096494769304912614024102579848425806795819098385943271304662280060645276950943150508950126267899958600005039800013267918400452648902940476175250815097737826955502656182280007423713017646775622921964459376384348139672044027808757847174972703338912570407450308052960128219252289006663246782918023621203691221406122565758878759582449613182871861216138684037513813941522603250896380850472849584248628939841925868524998450480560257827525057780635745746257671052874483314773516393160752865414215110832485162198069317625813204758084002713811717998154460845723090593703197655332702442869717416438714083703747685496755934378179985195058510911808374729310484928503131806041353357704078533287568640513511155463782455138379580260439152316205524682284377460483661491229592381713691895136224219009263488882470536357805790217345413729669995980707121370705299558713030278241881878157263805681329314191684310578996819010439268837772668394957847117216977833157535043606767735127835156002065362747917254178719826914468038540489275289456483953676390027467810780545397922586477057986463739938763869280004102059279465002388874363880926906755246920290930799326105802980154178202970910594857018934363109740749363801826808149428087411206516742719392662012375709708591506140539104864651768686402287186047614351811388181972645434903129211177574253785519809693724814933404094384831407889076539696589546571824170380869290909781501497211395377477530644409154215039824346616089579382959017782608078557701496060138077803936553968738733420764181493854349725076015615931297101542846919472328530673118352117013410551479477475598543538273093311398147268225810378254675509453011886910769766388104338489294865983165154446652332584718092539175320784168472265025718745655649417183632619297702452136727964361974762613592308702183927377305237188509884012788302940519038635353858971110988545192719292922047746058049926269451987327851971986543045465298481680383764982469207299092852981877280748677913906811916644453154502144008660712404331981335666764004616379175436529807059361890711050730099307873693427548448044594590220669779262411433770556606319396837783825170181485015965011698914232659273619122116014007594844830209411488000407718805326127135081797825437716925573561607113633302701790890734545403288234475293830998593252832737857896448
int8192-Max :  545374067809707964731492122366891431224132080998116346215916393094860665924559647608132117262600993611978645898078512636554935410088592031805489882538777399539453149421096494769304912614024102579848425806795819098385943271304662280060645276950943150508950126267899958600005039800013267918400452648902940476175250815097737826955502656182280007423713017646775622921964459376384348139672044027808757847174972703338912570407450308052960128219252289006663246782918023621203691221406122565758878759582449613182871861216138684037513813941522603250896380850472849584248628939841925868524998450480560257827525057780635745746257671052874483314773516393160752865414215110832485162198069317625813204758084002713811717998154460845723090593703197655332702442869717416438714083703747685496755934378179985195058510911808374729310484928503131806041353357704078533287568640513511155463782455138379580260439152316205524682284377460483661491229592381713691895136224219009263488882470536357805790217345413729669995980707121370705299558713030278241881878157263805681329314191684310578996819010439268837772668394957847117216977833157535043606767735127835156002065362747917254178719826914468038540489275289456483953676390027467810780545397922586477057986463739938763869280004102059279465002388874363880926906755246920290930799326105802980154178202970910594857018934363109740749363801826808149428087411206516742719392662012375709708591506140539104864651768686402287186047614351811388181972645434903129211177574253785519809693724814933404094384831407889076539696589546571824170380869290909781501497211395377477530644409154215039824346616089579382959017782608078557701496060138077803936553968738733420764181493854349725076015615931297101542846919472328530673118352117013410551479477475598543538273093311398147268225810378254675509453011886910769766388104338489294865983165154446652332584718092539175320784168472265025718745655649417183632619297702452136727964361974762613592308702183927377305237188509884012788302940519038635353858971110988545192719292922047746058049926269451987327851971986543045465298481680383764982469207299092852981877280748677913906811916644453154502144008660712404331981335666764004616379175436529807059361890711050730099307873693427548448044594590220669779262411433770556606319396837783825170181485015965011698914232659273619122116014007594844830209411488000407718805326127135081797825437716925573561607113633302701790890734545403288234475293830998593252832737857896447

uint128-Min : 0
uint128-Max : 340282366920938463463374607431768211455

uint256-Min : 0
uint256-Max : 115792089237316195423570985008687907853269984665640564039457584007913129639935

uint512-Min : 0
uint512-Max : 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084095

uint1024-Min : 0
uint1024-Max : 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215

uint2048-Min : 0
uint2048-Max : 32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123930385521914333389668342420684974786564569494856176035326322058077805659331026192708460314150258592864177116725943603718461857357598351152301645904403697613233287231227125684710820209725157101726931323469678542580656697935045997268352998638215525166389437335543602135433229604645318478604952148193555853611059596230655

uint4096-Min : 0
uint4096-Max : 1044388881413152506691752710716624382579964249047383780384233483283953907971557456848826811934997558340890106714439262837987573438185793607263236087851365277945956976543709998340361590134383718314428070011855946226376318839397712745672334684344586617496807908705803704071284048740118609114467977783598029006686938976881787785946905630190260940599579453432823469303026696443059025015972399867714215541693835559885291486318237914434496734087811872639496475100189041349008417061675093668333850551032972088269550769983616369411933015213796825837188091833656751221318492846368125550225998300412344784862595674492194617023806505913245610825731835380087608622102834270197698202313169017678006675195485079921636419370285375124784014907159135459982790513399611551794271106831134090584272884279791554849782954323534517065223269061394905987693002122963395687782878948440616007412945674919823050571642377154816321380631045902916136926708342856440730447899971901781465763473223850267253059899795996090799469201774624817718449867455659250178329070473119433165550807568221846571746373296884912819520317457002440926616910874148385078411929804522981857338977648103126085903001302413467189726673216491511131602920781738033436090243804708340403154190335

uint8192-Min : 0
uint8192-Max : 1090748135619415929462984244733782862448264161996232692431832786189721331849119295216264234525201987223957291796157025273109870820177184063610979765077554799078906298842192989538609825228048205159696851613591638196771886542609324560121290553901886301017900252535799917200010079600026535836800905297805880952350501630195475653911005312364560014847426035293551245843928918752768696279344088055617515694349945406677825140814900616105920256438504578013326493565836047242407382442812245131517757519164899226365743722432277368075027627883045206501792761700945699168497257879683851737049996900961120515655050115561271491492515342105748966629547032786321505730828430221664970324396138635251626409516168005427623435996308921691446181187406395310665404885739434832877428167407495370993511868756359970390117021823616749458620969857006263612082706715408157066575137281027022310927564910276759160520878304632411049364568754920967322982459184763427383790272448438018526977764941072715611580434690827459339991961414242741410599117426060556483763756314527611362658628383368621157993638020878537675545336789915694234433955666315070087213535470255670312004130725495834508357439653828936077080978550578912967907352780054935621561090795845172954115972927479877527738560008204118558930004777748727761853813510493840581861598652211605960308356405941821189714037868726219481498727603653616298856174822413033485438785324024751419417183012281078209729303537372804574372095228703622776363945290869806258422355148507571039619387449629866808188769662815778153079393179093143648340761738581819563002994422790754955061288818308430079648693232179158765918035565216157115402992120276155607873107937477466841528362987708699450152031231862594203085693838944657061346236704234026821102958954951197087076546186622796294536451620756509351018906023773821539532776208676978589731966330308893304665169436185078350641568336944530051437491311298834367265238595404904273455928723949525227184617404367854754610474377019768025576605881038077270707717942221977090385438585844095492116099852538903974655703943973086090930596963360767529964938414598185705963754561497355827813623833288906309004288017321424808663962671333528009232758350873059614118723781422101460198615747386855096896089189180441339558524822867541113212638793675567650340362970031930023397828465318547238244232028015189689660418822976000815437610652254270163595650875433851147123214227266605403581781469090806576468950587661997186505665475715792895

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 16 أغسطس 2011 في 16:38

2

مدونتي: C++ Tips and Tricks

#5

الـ int8192-Max مداها ضخم جدا ..

حقيقة عمل جميل جدا يا محمد بارك الله فيك ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#6

عمل اكثر من رائع.

استوقفني خطاء املائي بسيط

الملف ptypes_mathx

السطر 58

يجب تصحيح mone الى none

كذلك في السطر 63

static const uint32 size_t

حيث انها تستخدم اسم variable بنفس اسم size_t datatype def في ال crtdefs.h او ال cstring

اعلم انها صحيحه ولن تعطي اي compilation errors ولكن تعطي سهوله اكثر عن قرائه ال code .

تم تعديل هذه المشاركة بواسطة Ali Al-Zyoud في 16 أغسطس 2011 في 12:32

#7
اقتباس
يجب تصحيح mone الى none

mone إختصار لـ minus one

اقتباس
حيث انها تستخدم اسم variable بنفس اسم size_t datatype def في ال crtdefs.h او ال cstring

للأسف لم اجد تسميه افضل منها لإرتباطها مع المسميات الأخرى half_t و used_t.

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#8

ماشاء الله يابوحميد ... عمل راائع ... للأمام دائما ..

لكن لي سؤال ..

ماذا تعنى ب Template Library ؟

#9
اقتباس
ماذا تعنى ب Template Library؟

تعنى ان المكتبه قائمه على template classes.

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#10

ماشاء الله عمل ممتاز.

من فضلك أريد مثال حول كيفية إستخدام هذه المكتبة؟

وهل من الممكن أن تطورها إلى الأعداد العشرية الكبيرة؟

#11
اقتباس

من فضلك أريد مثال حول كيفية إستخدام هذه المكتبة؟

إستخدمها كما تستخدم الأنواع الإفتراضيه باللغه مثلا:

#include <iostream>
#include "mathx.h"
using namespace std;

int main()
{
   int128 i = 2500;
   i += 312;
   i -= 7;
   i *= 17;
   i /= 19;

   cout << "i = " << i << endl;
}

اقتباس
هل من الممكن أن تطورها إلى الأعداد العشرية الكبيرة؟

جارى العمل على دعم الأعداد العشريه.

راجع صفحة الـ home الخاص بالمشروع و ستجد التحديثات بها بشكل مستمر و ايضا هنا.

و الله ولي التوفيق

1

مدونتي: C++ Tips and Tricks

#12
محمد علاء الدين كتب:

إستخدمها كما تستخدم الأنواع الإفتراضيه باللغه مثلا:

#include <iostream>
#include "mathx.h"
using namespace std;

int main()
{
   int128 i = 2500;
   i += 312;
   i -= 7;
   i *= 17;
   i /= 19;

   cout << "i = " << i << endl;
}

كيف هي Template Lib .. على حسب علمى المحدود في السي++ أن الtemeplete تكون على هذا الشكل

vector<some_other_type> v

إذن كيف يمكن إستخدام المكتبه بهذا الشكل؟

#13

تم تعريف الأنواع الإفتراضيه بالمكتبه داخل الملف mathx.h كالتالي:

typedef  int_t<int64, uint64> int128;
typedef  uint_t<uint64>      uint128;

typedef  int_t<int128, uint128> int256;
typedef uint_t<uint128>        uint256;

typedef  int_t<int256, uint256> int512;
typedef uint_t<uint256>        uint512;

typedef  int_t<int512, uint512> int1024;
typedef uint_t<uint512>        uint1024;

typedef  int_t<int1024, uint1024> int2048;
typedef uint_t<uint1024>         uint2048;

typedef  int_t<int2048, uint2048> int4096;
typedef uint_t<uint2048>         uint4096;

typedef  int_t<int4096, uint4096> int8192;
typedef uint_t<uint4096>         uint8192;

عندما تكتب int128 كأنك تكتب int_t<int64, uint64>

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 18 أغسطس 2011 في 04:25

مدونتي: C++ Tips and Tricks

#14
محمد علاء الدين كتب:

إستخدمها كما تستخدم الأنواع الإفتراضيه باللغه مثلا:

#include <iostream>
#include "mathx.h"
using namespace std;

int main()
{
   int128 i = 2500;
   i += 312;
   i -= 7;
   i *= 17;
   i /= 19;

   cout << "i = " << i << endl;
}

لقد قمت بهذه الخطوة لكن لم تنفع مع Devc++ و CodeBlock فقد أعطتني عدة أخطاء

#15

على أى نظام تشغيل تعمل؟ ما نوع المترجم الذى تستخدمه؟ و ما هو اصداره؟ و ماهى رسائل الخطأ؟

مدونتي: C++ Tips and Tricks

#16
محمد علاء الدين كتب:

على أى نظام تشغيل تعمل؟ ما نوع المترجم الذى تستخدمه؟ و ما هو اصداره؟ و ماهى رسائل الخطأ؟

أستخدم نظام التشغيل ويندوز Xp

أستعمل DevC++4.9.9.2 والذي يستخدم MingW كمترجم، وكذلك أستخدم أحياناً CodeBlocks10.5

ورسائل الأخطاء كثيرة ونها:

 C:\Documents and Settings\zarif\Bureau\mathx_1_0_r1\common_mathx.h In function `t& mathx_add_t(t*, const t&)': 
86 C:\Documents and Settings\zarif\Bureau\mathx_1_0_r1\common_mathx.h expected `;' before "_lo" 
94 C:\Documents and Settings\zarif\Bureau\mathx_1_0_r1\common_mathx.h `_lo' undeclared (first use this function) 
...
 C:\Documents and Settings\zarif\Bureau\mathx_1_0_r1\common_mathx.h In function `t& mathx_sub_t(t*, const t&)': 
104 C:\Documents and Settings\zarif\Bureau\mathx_1_0_r1\common_mathx.h expected `;' before "_lo" 
.....

الأخطاء كثيرة جداً

1
#17
اقتباس
الذي يستخدم MingW كمترجم

ما إصدار MingW الذى لديك؟

اقتباس
الأخطاء كثيرة جداً

ضعها فى ملف و ارفعها هنا.

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#18
محمد علاء الدين كتب:

ما إصدار MingW الذى لديك؟

ضعها فى ملف و ارفعها هنا.

و الله ولي التوفيق

إصدار

DevC++ 4.9.9.2 يستخدم MingW/GCC 3.4.2

و أما

CodeBlocks 10.05 يستخدم Mingw/GCC 3.4.5

والأخطاء موجودة في الملف المرفق

errors.txt

محمد علاء الدين كتب:

ما إصدار MingW الذى لديك؟

ضعها فى ملف و ارفعها هنا.

و الله ولي التوفيق

إصدار

DevC++ 4.9.9.2 يستخدم MingW/GCC 3.4.2

و أما

CodeBlocks 10.05 يستخدم Mingw/GCC 3.4.5

والأخطاء موجودة في الملف المرفق

2
#19

جارى حل المشكله، شكرا لك.

تم حل المشاكل الموجوده بالملف و أخرين.

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 18 أغسطس 2011 في 07:23

1

مدونتي: C++ Tips and Tricks

#20
محمد علاء الدين كتب:

جارى حل المشكله، شكرا لك.

تم حل المشاكل الموجوده بالملف و أخرين.

و الله ولي التوفيق

شكراً جزيلاً لك، إنه يعمل الآن، فقط يوجد خطأ صغير وهو فاصلة منقوطة وكذلك إنذار على else في الهيدر common_mathx.h في الدالة mathx_fstr_t(const_astr str, t& i, Base base) وبالضبط في السطر 397:

if (global_t<t>::used_t != global_t<t>::size_t)
	{
		if (base == Dec)
			if (*buf == '-') {++buf; sign = global_t<t>::mone;}
			else if (*buf == '+') {++buf};
	}

ليصبح كما يلي

if (global_t<t>::used_t != global_t<t>::size_t)
	{
		if (base == Dec)
			if (*buf == '-') {++buf; sign = global_t<t>::mone;}
			if (*buf == '+') {++buf;}
	}

وهو الآن يعمل بشكل ممتاز على devC++ وكذلك على CodeBlocks

شكرا لك مرة أخرى.

1
#21

هذه نسيت اضافتها، شكرا لك

تم تحديث الإصدار 1.0.2

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 18 أغسطس 2011 في 19:29

مدونتي: C++ Tips and Tricks

#22

عمل مبدع ، لكن مدى النوع أكبر من أي استخدام بشري :D

1090748135619415929462984244733782862448264161996232692431832786189721331849119295216264234525201987223957291796157025273109870820177184063610979765077554799078906298842192989538609825228048205159696851613591638196771886542609324560121290553901886301017900252535799917200010079600026535836800905297805880952350501630195475653911005312364560014847426035293551245843928918752768696279344088055617515694349945406677825140814900616105920256438504578013326493565836047242407382442812245131517757519164899226365743722432277368075027627883045206501792761700945699168497257879683851737049996900961120515655050115561271491492515342105748966629547032786321505730828430221664970324396138635251626409516168005427623435996308921691446181187406395310665404885739434832877428167407495370993511868756359970390117021823616749458620969857006263612082706715408157066575137281027022310927564910276759160520878304632411049364568754920967322982459184763427383790272448438018526977764941072715611580434690827459339991961414242741410599117426060556483763756314527611362658628383368621157993638020878537675545336789915694234433955666315070087213535470255670312004130725495834508357439653828936077080978550578912967907352780054935621561090795845172954115972927479877527738560008204118558930004777748727761853813510493840581861598652211605960308356405941821189714037868726219481498727603653616298856174822413033485438785324024751419417183012281078209729303537372804574372095228703622776363945290869806258422355148507571039619387449629866808188769662815778153079393179093143648340761738581819563002994422790754955061288818308430079648693232179158765918035565216157115402992120276155607873107937477466841528362987708699450152031231862594203085693838944657061346236704234026821102958954951197087076546186622796294536451620756509351018906023773821539532776208676978589731966330308893304665169436185078350641568336944530051437491311298834367265238595404904273455928723949525227184617404367854754610474377019768025576605881038077270707717942221977090385438585844095492116099852538903974655703943973086090930596963360767529964938414598185705963754561497355827813623833288906309004288017321424808663962671333528009232758350873059614118723781422101460198615747386855096896089189180441339558524822867541113212638793675567650340362970031930023397828465318547238244232028015189689660418822976000815437610652254270163595650875433851147123214227266605403581781469090806576468950587661997186505665475715792895

هل هذا المشروع هو نفسه المشروع الذي كتب عنه الأخ " خالد الشايع " في تطوير إضافة للـ boost أو هذا مشروع آخر ،

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#23
اقتباس
هل هذا المشروع هو نفسه المشروع الذي كتب عنه الأخ " خالد الشايع " في تطوير إضافة للـ boost أو هذا مشروع آخر ،

مشروع أخر.

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 18 أغسطس 2011 في 21:11

مدونتي: C++ Tips and Tricks

#24

السلام عليكم

لقد طبقت مدى أكبر لكن لم يعمل مع DevC++ و CodeBlocks

وذلك في هذا المثال

#include <iostream>
#include "mathx.h"
using namespace std;

int main()
{
   int128 i = 1701411834604692317812912;

    i+=4545;

   i /= 10;

   cout << "i = " << i << endl;
}

فقد أعطاني إنذارين:

C:\Documents and Settings\zarif\Bureau\1_0_r2\First\main.cpp|7|warning: integer constant is too large for its type|
C:\Documents and Settings\zarif\Bureau\1_0_r2\First\main.cpp|7|warning: integer constant is too large for 'long' type|
||=== Build finished: 0 errors, 2 warnings ===|

وعندما قمت بتشغيل البرنامج جائت النتيجة خاطئة.

i = 375733387646928710
1
#25

المشكله ليست فى المكتبه و لكن المشكله من الرقم الذى وضعته انت حيث مداه اكبر من unsigned long long و هو ما لا تسمح به اللغه

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 19 أغسطس 2011 في 00:57

مدونتي: C++ Tips and Tricks

مواضيع مشابهة