تور لحظه آخری
امروز : چهارشنبه ، 13 تیر 1403    احادیث و روایات:  امام صادق (ع):سنگهاى زیربناى اسلام سه چیز است: نماز، زکات و ولایت که هیچ یک از آنها بدون دیگرى درس...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

اتاق فرار

خرید ووچر پرفکت مانی

تریدینگ ویو

کاشت ابرو

لمینت دندان

ونداد کولر

صرافی ارکی چنج

صرافی rkchange

دانلود سریال سووشون

دانلود فیلم

ناب مووی

رسانه حرف تو - مقایسه و اشتراک تجربه خرید

سرور اختصاصی ایران

تور دبی

دزدگیر منزل

تشریفات روناک

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

پیچ و مهره

طراحی کاتالوگ فوری

دانلود کتاب صوتی

تعمیرات مک بوک

Future Innovate Tech

آموزشگاه آرایشگری مردانه شفیع رسالت

پی جو مشاغل برتر شیراز

قیمت فرش

آموزش کیک پزی در تهران

لوله بازکنی تهران

میز جلو مبلی

هتل 5 ستاره شیراز

آراد برندینگ

رنگ استخری

سایبان ماشین

قالیشویی در تهران

مبل استیل

بهترین وکیل تهران

شرکت حسابداری

نظرسنجی انتخابات 1403

استعداد تحلیلی

کی شاپ

خرید دانه قهوه

دانلود رمان

وکیل کرج

آمپول بیوتین بپانتین

پرس برک

بهترین پکیج کنکور

خرید تیشرت مردانه

خرید نشادر

خرید یخچال خارجی

وکیل تبریز

اجاره سند

وام لوازم خانگی

نتایج انتخابات ریاست جمهوری

خرید سی پی ارزان

خرید ابزار دقیق

بهترین جراح بینی خانم

 






آمار وبسایت

 تعداد کل بازدیدها : 1804006954




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

راهنمایی برای استفاده کردن از اعداد بزرگتر از longint


واضح آرشیو وب فارسی:سایت ریسک: zed 206-07-2008, 10:38 AMسلام من برنامه ای دارم که باید اعداد بزرگتر از مقدار longint رو بتونه محاسبه و جواب بده .ولی هر چی کتاب برنامه نویسی را نگاه کردم چیزی در این مورد پیدا نکردم چجوری می تونم اعداد بزرگتر را تو برنامه بزارم؟ Mehrdad-bx06-07-2008, 02:58 PMسلام دوست عزیز، مشکلت با آرایه حل نمیشه؟ میتونی تابع جمع، ضرب، تفریق و... برای آرایت تعریف کنی و باهاشون کار کنی. zed 206-07-2008, 03:04 PMمیشه بیشتر راهنمایی کنید( من مبتدی ام) مثلا اگر برنامه من 2104317849 رو تو یک عدد مثلا 14 ضرب کند عددش تو مقدار longint جا نمیشه؟ چجوری چنین جوابی رو درست چاپ کنم Mehrdad-bx06-07-2008, 03:51 PMاز آرایه بلدی استفاده کنی؟ بیخیال longint! از اول با آرایه شروع کن. مثلا: یه آرایه که تو هر خونه اش یه رقمه(مثلا 50 خونه ای، یه عدد 50 رقمی). فهمیدی؟ بعد میام تابع جمع براش مینویسیم: از رقم آخر(یکان) شروع میکنیم جمع یا یکان دیگری، اگر از 9 بزگرتر بود رقمی بعدی رو +1 میکنیم. تا اینجا فهمیدی؟ VDeveloper07-07-2008, 06:50 AMمن برنامه ای دارم که باید اعداد بزرگتر از مقدار longint رو بتونه محاسبه و جواب بده .ولی هر چی کتاب برنامه نویسی را نگاه کردم چیزی در این مورد پیدا نکردم از نوع داده Int64 استفاده کنید که محدوده -2 به توان 63 تا 2 به توان 63 - 1 را پشتیبانی میکنه. برای اطلاعات بیشتر، به Help دلفی مراجعه کنید. BoomDoongDang07-07-2008, 06:59 PMاگر میخوای با اعداد بیشتر از 64 بیت کار کنی ، باید یکی از این کارها رو بکنی : 1- اون تایپ رو خودت پیاده سازی کنی . یک روشش همون آرایه هست که دوستمون گفت . 2- از تایپ های متن باز منتشر شده توی اینترنت استفاده کنی . مثل DFFLib ، WinNTL و ... . اگر سرعت محاسبه برات مهمه من پیشنهاد میکنم راه دوم یا همون کتابخانه های متن باز آماده رو انتخاب کنی . اما اگر چند تا محاسبه جمع و تفریق ساده است که سرعتش هم خیلی مهم نیست ، با همون آرایه کارت راه میفته . zed 208-07-2008, 12:33 PMدوستان من باید از خود زیان پاسکال استفاده کنم نه دلفی. من رو حالت استاندارد می خوام . این ارایه ها رو خوندم ولی مثال ها و توضیح هایی که داده بود همش در این مورد بود که توی هر خونه مقدار گذاری شه و همه را با هم چاپ کنه ولی در مورد این حالت که من نیاز دارد که ارایه خودش یک عدد بزرگ رو اول دربافت کنه بعد تو معادله بزاره و جواب رو دوباره ذخیره کنه پیدا نکردم میشه یکی راهنمایی کنه چجوری میشه اینکارو کرد.(با مثال بگید احتمالا بهتر می فهمم) Mehrdad-bx08-07-2008, 03:04 PMآره. چه خوب منم با پاسکال از این کارا زیاد کردم. ببین تو توی هر خونه از آرایه میتونی یه عدد داشته باشی، ما این آرایه رو 100 تایی تعریف میکنیم تا 100 تا خونه داشته باشیم. بعد تو هر خونه تنها یه رقم میریزیم، یعنی خونه 100 آرایه یکان ما میشه و خونه دوم دهگان و... (البته راه استاندارد و اصولی استفاده از رشته هاست که پدرت درمیاد!) حالا این عدد صد (سد درسته، فرهنگستان ادب و زبان فارسی ...) رقمی رو با 9 که عددیست یه رقمی جمع میکنیم، مسلما نمیشه ولی ما تابعی مینویسیم که این رو با یکان جمع کنه، اگه یکان از 9 بیشتر شد منهای 10 میکندش و یکی به دهگان اضافه میکنه، حالا میتونیم تابعمون رو پیشرفته کنیم و جمع 100 رقمی با 100 رقمی رو که آسون هم هست بنویسیم. فهمیدی؟ اگه نه بگو ساده تر بگم، درضمن کد هم میزارم از دفعه بعد الان کار دارم ببخشید. zed 208-07-2008, 03:37 PMباید کد بزارید تا بفهمم . الان فهمیدم که از لحاظ برنامه تو جمع باید یکانم رو ارایه 100 بزنم( در ارایه 100 خونه ای ) و جواب اگر ارایه بزرگتر از 9 شد یکانش رو تو خود ارایه( به کمک تقسیم بر 10 )می زارم و یک واحد به ارایه 99 اضافه می کنم بعد دهگان رو و همینجور به ترتیب... ولی تو ضرب اگر بخواهیم مثلا عدد 46 را از ورودی گرفتیم و به ترتیب تو ارایه گذاشتیم چجوری در 36 ضرب کنیم رقم اول جوابش میشه216 و دومین رقم جوابش میشه 144 که چون دهگان است 1440 چجوری این جواب هارو در ارایه بزاریم؟ Mehrdad-bx08-07-2008, 04:30 PMضرب رو ولش کن! فعلا جمع رو بنویسیم. آره، ما اول یه آرایه تعریف میکینم(اینا کلیت کاره و کد برنامه رو بعدا که یاد گرفتیم بزار تا درستش کنیم، اگه همنجوری که میخوام بریم راحت تبدیلش میکنیم و در تبدیل کردن مشکل نداره): a :array[1..100] of integer; ما قرارداد میکنیم تو هرخونه با توجه به اینکه integer هست یه رقم بیشتر نریزیم تا کارمان راحت شه. حالا این آرایه رو که به نظرمون یه عدد سد رقمی توش جا میشه باید پر کنیم، برای این کار سد تا خونه رو از کاربر میگیریم(میدونی چه جوری که؟) حالا ما یه آرایه 100 تایی داریم که طبق کار خود کاربر رقم اولی که زده رقم اول است، و رقم آخری که زده رقم سدم. نکته: کاربر برای پر کردن برای هر خونه یه عدد یه رقمی میزنه. یعنی هرخونه یه رقم از عدد سد رقمیه مائه، مثلا یکان. *حالا ما جدولی فرضی میکشیم که خونه اول آن جدول 1*100 (یک اوله، یعنی عرضه) سمت چپ باشد و رقم راستِ راست میشه رقم سدم که یکان هست و از نظر ریاضی هم جلوئه نکته قسمت ستاره دار:این یه توزیح چرت بود! فارسیش میشه اینکه رقم سدم رو میگیریم یکان و رقم 99 رو دهگان و..، یعنی برعکس عدد اندیس. حالا ما یه عدد سد رقمی داریم که هر رقم آن در یکی از خانه های آرایه ذخیره شده.یعنی یه عدد داریم که ذخیره آن در توان int64 هم نیست چه برسنه به longint! خب، حالا باید با این عدد کار کنیم ... به همین رویه ما یه عدد سد رقمی دیگه درست میکنیم تا این دو عدد رو با هم جمع کنیم و در یک آرایه 101 رقمی ذخیره کنیم. حالا ما دو تا آرایه داریم با 100 خانه یا سد رقم از هر کدوم از عدد هامون. برای جمع اینا به یک تابع (function) احتیاج داریم: چون تعریف تابع اینجوری که ورودی و خروجی آن آرایه باشه سخته و استفاده از var در تابع کار خوبی نیست و... ما یه procedure درست میکنیم و آرایه هامون رو جهانی (global) تعریف میکنیم تا در این procedure آنها رو تغییر بدیم) توضیحات: aو b دو آرایه سد تایی ما هستند و k متغییر 101 رقمیست که جواب را در آن میریزیم. procedure sum; var i,j : integer; begin for i := 100 downto 1 do begin k[i+1]:= a[i] + b[i]; if (k[i+1] > 9) and (i<>1) then begin k[i+1]:=k[i+1]-10; k[i]:= k[i]+1; end; end; if k[2]> 9 then k[1]:=1 else for i:=1 to 100 do k[i]:=k[i+1]; end; برنامه رو در نوت پد کپی بگیر درست میشه(اگه نشد بگو فایلشو آپلود کنم برات) یه دور برنامه رو بخون اگه نفهمیدی بگو توضیحش میدم برات. یه نکته برای اندیس k و فرقش با بقیه: چون k ، 101 رقمیه و اون دو تا 100 رقمی و یکان آنها در اندیس 100 موجود است ولی یکان k باید در اندیس 101 باشد، چون ممکنه 101 رقمی شه، اگه 101 رقمی نشه آخر تابع(البته تابع نمیشه ترجمه procedure) همه ارقام رو یه دونه شیفت میده(جابجا میکنه، طوری که رقم یکان بیاد خونه 100 و رقم دهگان بره خونه 99) نکته پایانی: اینارو بفهمی حله همه چی، تابع ضرب مثلا برای ضرب در 5 میشه 5 بار آرایه رو با خودش جمع کنیم. برای اینکار هم میشه تابع ضرب نوشت(اصولیش اینه) که البته نوشتن تابع ضرب دیگه مثل آب خودنه. باز هم درخدمتم zed 208-07-2008, 04:47 PMخود فایلو بزار چون کپی کردم کلی بهم ریخته است. دیدم کلی باید دوباره بنویسم تا حدودی فهمیدم ویرایش : تونستم کپی کنم . یک مقدار i و j تعریف کردیم بعد گفتیم از 100 شروع تا 1 انجام بده بعد گفتیم مقدارر k i از جمع a i و b i است که اگر k مقدار i+1 بزرگتر از 9 بشه و خود i مساوی 1 نشه شروع کنه مقدار k که i+1 است رو منهای 10 کنه بجاش بزاره و یک واحد به k ای i اضافه کنه. اینجا گفتیم اگر k 2 بزرگتر از 9 بود پس k 1 مساوی 1 (چرا؟) و همچنین برای 1 تا 100 k[i]:=k[i+1] تمام این تو خود تابع اصلی استفاده میشه یا خودش یک تابع است؟ Mehrdad-bx08-07-2008, 06:08 PMخود فایلو بزار چون کپی کردم کلی بهم ریخته است. دیدم کلی باید دوباره بنویسم تا حدودی فهمیدم ویرایش : تونستم کپی کنم . یک مقدار i و j تعریف کردیم بعد گفتیم از 100 شروع تا 1 انجام بده بعد گفتیم مقدارر k i از جمع a i و b i است که اگر k مقدار i+1 بزرگتر از 9 بشه و خود i مساوی 1 نشه شروع کنه مقدار k که i+1 است رو منهای 10 کنه بجاش بزاره و یک واحد به k ای i اضافه کنه. اینجا گفتیم اگر k 2 بزرگتر از 9 بود پس k 1 مساوی 1 (چرا؟) و همچنین برای 1 تا 100 k[i]:=k[i+1] تمام این تو خود تابع اصلی استفاده میشه یا خودش یک تابع است؟ نه، یه اشتباه داشتی: مقدار k[i] جکع a i و b i نیست، جمع اون دو تا میشه k i+1. چون k 101 خونه داره. نکته: اون i اندیس آرایه است و منظور ما اینه که خونه ی i ام رو مساوی جمع a i و b i (مقدار موجود در خونه i اینا) قرار بده. چون k یه دونه جلوئه درواقع i برای a و b یکانه (خونه 100) و برای k دهگان(خونه 100)، پس برای k ما i+1 میزاریم تا یکان k یکان a و b با هم مقایسه شن(مقدارشون جمع شه). حالا گفتیم اگه جمع a i و b i بزگرتر شد از 9(دورقمی شد) چون هر خونه یه رقمه و دورقمی معنی نداره یه بسته ده تایی(ده تا ازش کم میکنیم) انتقال میدیم به دهگان(یه دونه به دهگان اضافه میشه). حالا چون for ما تا خونه 1 a و b میره ولی از طرفی تا خونه 2 k پس ممکنه که این خونه 2 رقمی بمونه، به همین دلیل بعد از for اصلی یه شرط گذاشتیم اگه دورقمی بود یه بسته ازش انتقال بده به خونه بعدی(با ارزش بالاتر). و بعد از شرط گفتیم اگه خونه 2 آرایه k دورقمی نبود رقم سدم رو به خونه 1 انتقال بده چون عدد با ارزش بالاتری نیست که درخونه 1 قرار بگیره و مثلا موقع چاپ رقم اول رو از خونه 1 مینویسه(که درواقع رقم اول اگه این کارو نکنیم خونه 2 میباشد) Mehrdad-bx08-07-2008, 06:09 PMراستی یه سوال: کارت با int64 را نمیفته؟ اگه میفته و adsl داری لینک کامپایلر پاسکالو بهت بدم int64 رو داره. ولی خوب یاد گرفتن اینا هم بدردت میخوره زیاد zed 208-07-2008, 06:24 PMنه، یه اشتباه داشتی: مقدار k[i] جکع a i و b i نیست، جمع اون دو تا میشه k i+1. چون k 101 خونه داره. نکته: اون i اندیس آرایه است و منظور ما اینه که خونه ی i ام رو مساوی جمع a i و b i (مقدار موجود در خونه i اینا) قرار بده. چون k یه دونه جلوئه درواقع i برای a و b یکانه (خونه 100) و برای k دهگان(خونه 100)، پس برای k ما i+1 میزاریم تا یکان k یکان a و b با هم مقایسه شن(مقدارشون جمع شه). حالا گفتیم اگه جمع a i و b i بزگرتر شد از 9(دورقمی شد) چون هر خونه یه رقمه و دورقمی معنی نداره یه بسته ده تایی(ده تا ازش کم میکنیم) انتقال میدیم به دهگان(یه دونه به دهگان اضافه میشه). حالا چون for ما تا خونه 1 a و b میره ولی از طرفی تا خونه 2 k پس ممکنه که این خونه 2 رقمی بمونه، به همین دلیل بعد از for اصلی یه شرط گذاشتیم اگه دورقمی بود یه بسته ازش انتقال بده به خونه بعدی(با ارزش بالاتر). و بعد از شرط گفتیم اگه خونه 2 آرایه k دورقمی نبود رقم سدم رو به خونه 1 انتقال بده چون عدد با ارزش بالاتری نیست که درخونه 1 قرار بگیره و مثلا موقع چاپ رقم اول رو از خونه 1 مینویسه(که درواقع رقم اول اگه این کارو نکنیم خونه 2 میباشد) این سبز رو میشه بهتر بگید نفهمیدم ایم زرده که زدم منظورتان این است که اگر k 2 دو رقمی نشد تمامی مقدار k i ها یک واحد برن عقب یعنی k2 بیا جای k1 و همینطور به ترتیب راستی یه سوال: کارت با int64 را نمیفته؟ اگه میفته و adsl داری لینک کامپایلر پاسکالو بهت بدم int64 رو داره. ولی خوب یاد گرفتن اینا هم بدردت میخوره زیاد نمیشه باید تو حالت استاندارد کار کنم Mehrdad-bx08-07-2008, 06:59 PMزرد رو درست فهمیدی. درباره سبز: ببین، ما یه قرار دادی داشتیم که یکان خونه آخر باشه و دهگان خونه یکی مونده به آخر و... و بالاترین ارزش مکانی در خونه اول. خوب اینو داشته باش تا بعد ...(تا آخر پست میفهمی) از طرفی a و b هردو 100 رقمی اند، همونطور که ممکنه بدونی(میدونی) جمع دو عدد n رقمی میتونه n رقمی شه میتونه n+1 رقمی شه.(در اینکه یکان ها از 9 بزرگتر شن 10 تا ازشون کم شه و یه دونه به بعدی اضافه شه نه بیشتر از این قانون استفاده کردیم) پس با توجه با این نکته k یا 100 رقمیه یا 101 رقمی. برای احتیاط(درسّش همینه، اگه 100 رقمی بگیریم 101 رقمی شه چی؟) k رو میگیرم 101 خونه. و جمع رو شروع میکنیم ... . یکان میافته تو خونه 101(برای احتیاط دیگه و... ، پرانتز بالا!) و همینطور دهگان و ...(به خاطر همین اندیس k همیشه i+1 و اندیس دو آرایه دیگه i که یه دونه کمتره است) حالا آخرش چک میکنیم اگه خونه 2 دورقمی بود یعنی یه دونه رقم باید به خونه 1 اضافه شه(انتقال میدیم و از این 10 تا کم میکنیم). که در if اینو گفتیم. حالا آخر if داشتیم else، یعنی اگه خونه 2 دورقمی نبود، که در این صورت عدد ما 100 رقمیه(چون چیزی به خونه 1 اضافه نمیشه) یعنی ما عدد 100 رقمی داریم که بالاترین ارزش آن در خونه 2 است! پس خونه یک چی؟ مگه نباید تو اون باشه؟ به همین خاطر همه رو یه دونه میندازیم اینور(خونه های آرایه بقلی بگیر بازی میکنن! همه ارقام رو یه دونه میدن اونور) یا در اصطلاح شیفت میدیم. حالا با این کار ما خونه 1 بالاترین ارزش رو داره و خونه 101 بی مصرفه و حالا مقدار توش فرقی نداره، برای احتیاط در این حات میتونیم مقدار 101 رو منفی بزاریم تا وقتی چکش میکنیم اگه منفی بود یعنی الکیه و عدد ما 100 رقمیه. حالا فهمیدی؟(دوستان اگه شما هم نمیفهمید بگید، شاید من بد توضیح میدم، درحالیکه شاید به اشتباه فکر کنم سطح مطالب بالائه) راستی، کامپایلری که گفتم freepascal رو گفتم! استاندارده دیگه! تو لینوکس هم فقط اونه، از موقعی که دیگه دوره پاسکال تموم شد(برای کار حرفه ای، نه آموزش اولیه برنامه نویسی) تنها کامپایلری درست حسابی ایه که داره آپدیت میشه(اگه تو این دو سه سال متوقف نشده باشه) اینجا جاش نیست ولی اینم میگم به همین دلیله که خیلی کارای خفن و دلفی ای رو میشه توش انجام داد(مثلا بازی سه بعدی خیلی خفن با openGL نوشت، جدی میگم خودم نوشتم) zed 208-07-2008, 07:09 PMزرد رو درست فهمیدی. درباره سبز: ببین، ما یه قرار دادی داشتیم که یکان خونه آخر باشه و دهگان خونه یکی مونده به آخر و... و بالاترین ارزش مکانی در خونه اول. خوب اینو داشته باش تا بعد ...(تا آخر پست میفهمی) از طرفی a و b هردو 100 رقمی اند، همونطور که ممکنه بدونی(میدونی) جمع دو عدد n رقمی میتونه n رقمی شه میتونه n+1 رقمی شه.(در اینکه یکان ها از 9 بزرگتر شن 10 تا ازشون کم شه و یه دونه به بعدی اضافه شه نه بیشتر از این قانون استفاده کردیم) پس با توجه با این نکته k یا 100 رقمیه یا 101 رقمی. برای احتیاط(درسّش همینه، اگه 100 رقمی بگیریم 101 رقمی شه چی؟) k رو میگیرم 101 خونه. و جمع رو شروع میکنیم ... . یکان میافته تو خونه 101(برای احتیاط دیگه و... ، پرانتز بالا!) و همینطور دهگان و ...(به خاطر همین اندیس k همیشه i+1 و اندیس دو آرایه دیگه i که یه دونه کمتره است) حالا آخرش چک میکنیم اگه خونه 2 دورقمی بود یعنی یه دونه رقم باید به خونه 1 اضافه شه(انتقال میدیم و از این 10 تا کم میکنیم). که در if اینو گفتیم. حالا آخر if داشتیم else، یعنی اگه خونه 2 دورقمی نبود، که در این صورت عدد ما 100 رقمیه(چون چیزی به خونه 1 اضافه نمیشه) یعنی ما عدد 100 رقمی داریم که بالاترین ارزش آن در خونه 2 است! پس خونه یک چی؟ مگه نباید تو اون باشه؟ به همین خاطر همه رو یه دونه میندازیم اینور(خونه های آرایه بقلی بگیر بازی میکنن! همه ارقام رو یه دونه میدن اونور) یا در اصطلاح شیفت میدیم. حالا با این کار ما خونه 1 بالاترین ارزش رو داره و خونه 101 بی مصرفه و حالا مقدار توش فرقی نداره، برای احتیاط در این حات میتونیم مقدار 101 رو منفی بزاریم تا وقتی چکش میکنیم اگه منفی بود یعنی الکیه و عدد ما 100 رقمیه. حالا فهمیدی؟(دوستان اگه شما هم نمیفهمید بگید، شاید من بد توضیح میدم، درحالیکه شاید به اشتباه فکر کنم سطح مطالب بالائه) راستی، کامپایلری که گفتم freepascal رو گفتم! استاندارده دیگه! تو لینوکس هم فقط اونه، از موقعی که دیگه دوره پاسکال تموم شد(برای کار حرفه ای، نه آموزش اولیه برنامه نویسی) تنها کامپایلری درست حسابی ایه که داره آپدیت میشه(اگه تو این دو سه سال متوقف نشده باشه) اینجا جاش نیست ولی اینم میگم به همین دلیله که خیلی کارای خفن و دلفی ای رو میشه توش انجام داد(مثلا بازی سه بعدی خیلی خفن با openGL نوشت، جدی میگم خودم نوشتم) همه را فهمیدم حالا تو ضرب چجوری ارایه را می نویسیم Mehrdad-bx08-07-2008, 07:57 PMدیگه آسونه، به تعداد ضرب ها باید با خودش جمع شه.یعنی آرایه a به اضافه خودش میشه ضرب در 2. به اضافه خودش دوباره میشه ضرب در 3 و... از for استفاده میشه ولی میتونی(بهتره، اگه زیاد ضرب میکنی) یه تابع بنویسی که به مقدار q بار این عدد رو به اضافه خودش کنه(for). خوب مسلما q ورودی است. واینکه این کار برای اینه که هر بار میخوای ضرب کنی 1 خط کد بنویسی. این رو هم فهمیدی zed 2 جان؟ خوشحالم موفق شدی(جمع رو چون حداقل فهمیدی، اصلش اون بود) روشش همین بود، مثلا برای نوشتن 100! مسئله معروفی برای تازه کار هاست از این روش استفاده میشه و کلا رقم ها که از یه حدی بره بالاتر از این کار استفاده میکنن. راستی یه چیزی: چون ما در هر خونه فقط یه عدد 1 رقمی مینویسیم به صرفه نیست integer رو تعریف کنیم برای هر خونه، چون زیاد جا میگیره! البته اینی که گفتم مال زمانیه که پاسکال تازه اومده بود و دیگه آخرش بود و یکی اگه میگفت رم کامپیوترم 8 ه میلت میگفتن ی صدا : چی میگی؟!. فکر میکردن قاطی داره! برای صرفه جویی از این کارا میکردن که رم استفاده نشه. ولی تو هم سعی کن با این که 1 گیگ رم حداقل داری اینارو رعایت کنی. چون در بیشتر مسئله ها محدودیت استفاده از رم وجود داره و از این چیزایی کوچولو خودتو عادت بده ولخرجی نکنی! Mehrdad-bx08-07-2008, 07:58 PMیه نکته دیگه: اگه میخوای از کاربر عدد رو بگیری چون یکم تابلوئه دونه دونه اینتر بزنه و درآخر مثلا یه عدد منفی بزنه!! میتونی(بهتره) از string استفاده کنی. اگه میخوای تو تاپیک جداگانه بزن منم تا جایی که بلدم کمکت میکنم zed 208-07-2008, 08:11 PMدیگه آسونه، به تعداد ضرب ها باید با خودش جمع شه.یعنی آرایه a به اضافه خودش میشه ضرب در 2. به اضافه خودش دوباره میشه ضرب در 3 و... از for استفاده میشه ولی میتونی(بهتره، اگه زیاد ضرب میکنی) یه تابع بنویسی که به مقدار q بار این عدد رو به اضافه خودش کنه(for). خوب مسلما q ورودی است. واینکه این کار برای اینه که هر بار میخوای ضرب کنی 1 خط کد بنویسی. این رو هم فهمیدی zed 2 جان؟ خوشحالم موفق شدی(جمع رو چون حداقل فهمیدی، اصلش اون بود) روشش همین بود، مثلا برای نوشتن 100! مسئله معروفی برای تازه کار هاست از این روش استفاده میشه و کلا رقم ها که از یه حدی بره بالاتر از این کار استفاده میکنن. راستی یه چیزی: چون ما در هر خونه فقط یه عدد 1 رقمی مینویسیم به صرفه نیست integer رو تعریف کنیم برای هر خونه، چون زیاد جا میگیره! البته اینی که گفتم مال زمانیه که پاسکال تازه اومده بود و دیگه آخرش بود و یکی اگه میگفت رم کامپیوترم 8 ه میلت میگفتن ی صدا : چی میگی؟!. فکر میکردن قاطی داره! برای صرفه جویی از این کارا میکردن که رم استفاده نشه. ولی تو هم سعی کن با این که 1 گیگ رم حداقل داری اینارو رعایت کنی. چون در بیشتر مسئله ها محدودیت استفاده از رم وجود داره و از این چیزایی کوچولو خودتو عادت بده ولخرجی نکنی! یعنی اگر می خوایم 20! بگیریم می گیم که یک ارایه مثلا 100 تایی تعریف می کنیم و مقدار 1 رو تو خونه اول می زاریم و می گیم 1 ضرب شه یعنی یک بار ارایه با خودش ضرب میشه اگر بزرگتر از 9 بود تو خونه بعد یک واحد اضافه میشه و غیر این صورت خودش میره تو خونه .بعد می گیم اگر خونه 100 دورقمی بود یک واحد میده قبل خودش تقسیم بر 10 باقیمانده اش را می نویسیم اگر نبود می گم که کلا یک خونه بیاد عقب تا برسه خونه یک مثلا 5 فاکتوریل تا 24 حساب کردیم 4 تو خونه 100 و 2 تو خونه 99 بعد میگیم به تعداد د بار با خودش جمع می کنیم و هر با اتفاق بالا تا ضرب 5 تمام بشه. بعد قانون بالا رو استفاده می کنیم( برای جابه جایی تک تک) این درسته یه نکته دیگه: اگه میخوای از کاربر عدد رو بگیری چون یکم تابلوئه دونه دونه اینتر بزنه و درآخر مثلا یه عدد منفی بزنه!! میتونی(بهتره) از string استفاده کنی. اگه میخوای تو تاپیک جداگانه بزن منم تا جایی که بلدم کمکت میکنم فعلا بزار بالایی رو درست کنم وقت کنم بیام برای راحتی کاربر. گرچه فکر نکن بیشتر از دو بار اینتر بزنه طرف (دیگر دیوانه گی است برای شروع بیشتر از 99 بخواد) شب هم هستید برنامه را برای چک بفرستم. zed 208-07-2008, 08:25 PMیک سوال k[i+1]:= a[i] + b[i]; مقدار a i و b i رو قبل از شروع کار procedure باید وارد کنیم که مقدار ش a i مقدار اولیه ان خانه است و مقدار b i مقداری است که از حاصل جمع قبلی بدست امده . تو ! این دو مقدار رو چجوری بنویسیم میشه راهنمایی کنید؟ Mehrdad-bx08-07-2008, 08:46 PMنه نه نه ... آرایه های a و b جهانی اند و پروسیجر ما آنها رو میبینه، جمع یکان های آن دو آرایه میشه یکان k. نوشتن تابع هم به این درد میخوره که هی for و... نزاری و بزنی جمع این دو تا و جواب رو بریزه تو آرایه ی k. zed 208-07-2008, 08:51 PMیعنی فقط k : array [ 1..100 ] of Byte ; رو تعریف می کنیم و ان دوتا رو نمی خواد؟ Mehrdad-bx09-07-2008, 11:42 AMنه، گفتم بهتره(اصلا مهم نیست) که تمامی اون سه آرایه رو byte یا shortint تعریف کنی. مساوی جا میگیرن و ما فقط 1 تا 9 رو میخوایم. پس فرقی ندارن zed 209-07-2008, 05:28 PMنه، گفتم بهتره(اصلا مهم نیست) که تمامی اون سه آرایه رو byte یا shortint تعریف کنی. مساوی جا میگیرن و ما فقط 1 تا 9 رو میخوایم. پس فرقی ندارن ????? باز نفهمیدم. Mehrdad-bx09-07-2008, 05:31 PMهمه آرایه هارو a:array[1..100] of integer تعریف کردیم دیگه. خوب به جای integer میتونیم هر چیزی بزاریم دیگه، میشه byte گذاشت. همه آرایه ها رو بزار byte. البته مهم نیست همینجوری گفتم سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 1739]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن