میدونیم که تو هیچ زبان برنامه سازی data type برای اعداد گویا وجود ندارد
چطوری اینdata type رو تعریف کنیم و عملیات مختلف بر روی اعداد گویا رو پشتیبانی کنیم.
Printable View
میدونیم که تو هیچ زبان برنامه سازی data type برای اعداد گویا وجود ندارد
چطوری اینdata type رو تعریف کنیم و عملیات مختلف بر روی اعداد گویا رو پشتیبانی کنیم.
اگه منظورت از اعداد گویا مجموعه اعداد :
a/b={(a,b) | a e IN , b e IN}
میتونی با یه آرایه دوعنصری از مقادیر Integer به مقصودت برسی و در مورد پیاده سازی اعمال هم فرمولهای ریاضی وجود داره:
(a/b) + (c/d)=(ad+cb)/(bd)
(a/b) - (c/d)=(ad-cb)/(bd)
(a/b) * (c/d)=(ac/bd)
(a/b) / (c/d)=(ad)/(bc)
سلام
منظورم از اعداد گویا همون اعداد کسری هستش .
منظورم اینه که مثلا فرض کنید تو زبان پاسکال می خواهیم با اعداد گویا کار کنیم.مثلا دو عدد گویا رو با هم جمع کنیم یا تفریق کنیم یا ضرب و...
اولا:یک data type برای اعداد گویا تعریف کنیم.
ثانیا:توابعی برای جمع -تفریق-ضرب و تقسیم اعداد گویا بنویسیم و در برنامه از این توابع استفاده کنیم.
پس جواب همون بالاییه :mrgreen:
سلام
ببخشید إقای phantasm که من از اسمتون خیلی میترسم شما تو جوابتون فقط دو عدد کسری روبصورت ریاضی با هم جمع کردین. :mad:
از شما که یک کاربر نقره ای هستین بعیده(البته ببخشید ها :موفق: )
منظورم اینه که اگه من تو برنامه اصلی بخوام دو عدد کسری رو با هم جمع کنم برنامه های فرعی رو چطوری صدا بزنم.یا بخوام عددها رو منها یا ضرب کنم .
یعنی تو function من برای هر عدد گویا دو تا آرگومان یکی برای صورت کسر و یکی برای مخرج کسر میخوام.
اما من دقیقا نمیتونم کد functionها رو بنویسم.
اگه میتونید کد function ها رو بنویسید. :wink:
جواب بالایی رو یخورده اصلاح کردم!
data type تشکیل شده از یه مجموعه داده و یه مجموعه از عملگرها (البته یسری اصول هم داره که فعلا بی خیال) ?خوب با این دید به نوع داده همونطور که خودت هم میدونی تنها لازمه مجموعه داده و عملگر ها رو معرفی کنی یعنی همون چیزی که در بالا نوشتم.
مجموعه داده :
a/b={(a,b) | a e IN , b e IN}
که مجموعه داده تعریف شده در بالا میگه ما با اعدادی سر و کار داریم که از دو جزء a و b تشکیل شدند که هر دو تاشون هم مقدار صحیح میگیرن .حالا شما میتونی توی برنامت این دو جزء رو مثلا توی دوتا خونه یه آرایه ذخیره کنی مثلا:
Type AdaDGooya=array[1..2] of integer;
در مورد کد function یا همون عملگرها هم که توضیح دادم . مثلا یه پیاده سازی از function جمع میتونه به این صورت باشه:
Procedure ADD(a,b:AdaDGooya,var c:AdaDGooya);
BEGIN
c[1]:=(a[1]*b[2]+b [1]*a[2]);
c[2]:=(a[2]*b[2]&# 41;;
END;
و در مورد فراخوانی اول دوتا متغیر از نوع AdaDGooya رو تعریف میکنی:
Var M,N,P:AdaDGooya;
و در نهایت :
M[1]:=2; { مقداردهی M و N }
M[2]:=7;
N[1]:=6;
N[2]:=13;
ADD(M,N,P);
توی کد بالا فرض کردم که قسمت صحیح رو توی عنصر اول آرایه میریزی و مخرج رو توی عنصر دوم.
امیدوارم خوب توضیح داده باشم :)
در مورد ID ایم هم از عمد اینو گذاشتم که دیگرانو بترسونم :evil2:
سلام
از کمکتون ممنونم گرفتم
ولی فکر کنم تو اونprocedure که نوشتین یه جا اشتباه کردین تو خط سوم و چهارم بجای MوN باید ازaوb استفاده کنی نه؟ :kaf:
در ضمن اون یه سری اصول که فعلا باید بی خیال شم چیه؟
******************************************
[b]((موفقیت یک درصد از کاری است که 99٪ آن شکست بوده است.))
چیرو هوندا[/b]
آره :wink:نقل قول:
ولی فکر کنم تو اونprocedure که نوشتین یه جا اشتباه کردین تو خط سوم و چهارم بجای MوN باید ازaوb استفاده کنی نه؟
در ریاضیات سیستم های ریاضی رو به شکلهای مختلفی تعریف و گاها میسازن ٬ بدیهیات یا اصول در اونجا مطرحه و به سوال شما ربطی نداره.نقل قول:
در ضمن اون یه سری اصول که فعلا باید بی خیال شم چیه؟
آیا صورت و مخرج اعداد گویا باید حتما صحیح باشن؟ یعنی مثلا 5/3.5 گویا نیست؟
بهر حال استفاده از رکورد خیلی منطقی تر بنظر میاد:
type adadgooya=record soorat,makhraj:real; end;
:موفق: :sad2:
سلام
خب فرقی نداره بازم میشه ازیک آرایه اعشاری استفاده کنیم.
******************************************
اگر برای یک اشتباه هزار دلیل بیاوریم میشود هزار و یک اشتباه.
((ابو علی سینا))
فرق نداره ولی رکورد خبلی خواناتر است
بهتر است از رکورد استفاده کنی
MSK :موفق:
اولا که این مباحث ربطی به الگوریتم نداشت.
ثانیا که خداوند - جل و علی- سالهاست که OOP رو خلق کردهنقل قول:
فرق نداره ولی رکورد خبلی خواناتر است
بهتر است از رکورد استفاده کنی
ثالثا هم که تو اینجور موارد تجربه حقیرمیگه <span dir=ltr>C++</span> به خاطر امکان تعریف دوباره عملگر بهترین زبونه.
به نظر شما به چی ربط داشت؟ :mrgreen:نقل قول:
اولا که این مباحث ربطی به الگوریتم نداشت
نخیر عزیز من چرا کفر میگی خدا که oop رو خلق نکرده. :strange:نقل قول:
ثانیا که خداوند - جل و علی- سالهاست که OOP رو خلق کرده
ما هم میدونیم کهC++ بهتره ولی میخواستیم با پاسکال یا c این کارو انجام بدیم. :wink:نقل قول:
ثالثا هم که تو اینجور موارد تجربه حقیرمیگه C++ به خاطر امکان تعریف دوباره عملگر بهترین زبونه
:sorry:
سپیدار جان , برای اینکه مفهوم OOP رو کسی درک کنه(سپس اون رو بکار بگیره) ابتدا لازمه با جدا سازی مفهوم تعریف(Declaration) و پیاده سازی(ّImplementation) ساختارها آشنا بشه.هدف یادگیری مفاهیم بود و مسلمه که در عمل سیستم های جامع تری وجود داره.نقل قول:
ثانیا که خداوند - جل و علی- سالهاست که OOP رو خلق کرده
کدوم موارد؟نقل قول:
ثالثا هم که تو اینجور موارد تجربه حقیرمیگه C++ به خاطر امکان تعریف دوباره عملگر بهترین زبونه.
در مورد تعریف (شامل شبه کدهایی برای مشخص کردن کلی توابعی که روی نوع داده جدید عمل میکنند) موافقم؛نقل قول:
سپیدار جان , برای اینکه مفهوم OOP رو کسی درک کنه(سپس اون رو بکار بگیره) ابتدا لازمه با جدا سازی مفهوم تعریف(Declaration) و پیاده سازی(ّImplementation) ساختارها آشنا بشه.هدف یادگیری مفاهیم بود و مسلمه که در عمل سیستم های جامع تری وجود داره.
اما پیاده سازی یه مساله کاملا تکنیکیه که با محیطی که داریم در اون عمل پیاده سازی رو انجام میدیم، ارتباط مستقیم داره.
در مورد برنامه سازی در مواردی که با انواع ریاضی مختلف سر و کار داریم (شامل کار با ماتریسها، اعداد مختلط، بردارها، همین مثال و مثالهای متعدد دیگر)، <span dir=ltr>C++</span> با فراهم آوردن ویژگی «تعریف مجدد عملگر» دو محسنه بزرگ برای برنامه نویسان به ارمغان آوردهاولا (بر خلاف اونچه که گفته میشه) خوانایی برنامه ها واقعا اضافه میشه. ثانیا (بالاخص در محاسات ریاضی) استفاده کننده از شئ، از سر و کله زدن بیخود با پشته، راحت میشه.نقل قول:
کدوم موارد؟
یه کم بیشتر فکر کن.نقل قول:
نخیر عزیز من چرا کفر میگی خدا که oop رو خلق نکرده.
چون مربوط به پیاده سازی بود به:نقل قول:
به نظر شما به چی ربط داشت؟
***نقل قول:
ما هم میدونیم کهC++ بهتره ولی میخواستیم با پاسکال یا c این کارو انجام بدیم.
در ضمن دیگه هم از این پستا نکن. چون آف تاپیک به حساب میاد.
سلام آقای سپیدار
به خدا من شرمنده ام :sorry: من منظور خاصی نداشتم خواستم شوخی کنم ولی فکر میکنم که شما از دست من ناراحت شدید ببخشید :گیج:
چند تا سوال دارم اگه ممکنه جواب بدبن
1-منظورتون از (یه کم بیشتر فکر کن) چیه؟یعنی چه جوری خدا oop رو خلق کرده؟
2-اونجا که نوشتین( چون مربوط به پیاده سازی بود) جملتون ناقصه.
3-منظورتون از *** چی بوده؟
4-آف تاپیک چیه؟
اینم تقدیم میکنم به شما :flower:
***************************************
برای پیروزی و موفقیت در زندگی سه چیز لازم است:
اول پشتکار دوم پشتکار سوم پشتکار
((لرد آویبوری))
<span dir=ltr>Never mind!</span>
:موفق:
سلام
دوستی که گفتن مثلا ۳/۵.۵ گویا هست یا نه : دوست عزیز As a matter of definition عدد گویا به صورت کسری که صورت و مخرجش عدد صحیح هستن تعریف شده ۳/۵.۵ رو اگر بخواین به شکل گویا بنویسید کاری نداره میشه ۶/۱۱ .
ضمنا جناب سپیدار درست میگن در این مواقع استفاده از Operator Overloading که از امکانات قوی C++ است خیلی کمک میکنه.
در ضمن در زبان کفار! به عدد گویا Rational Number میگن اگر خواستین سرچ کنید این کلمه رو سرچ کنید.
اتفاقا کاربردهای زیادی داره. به عنوان یه مسابقه کوچیک آیا کسی میتونه یه مثال از کاربرد اعداد گویا و اینکه یه کلاس براش بنویسیم بگه ؟؟
ممنون علی
خیر ! تعریف اعداد گویا این است که حتما صورت و مخرج صحیح باشند. 5/3.5 برابر 10/7 است.نقل قول:
آیا صورت و مخرج اعداد گویا باید حتما صحیح باشن؟ یعنی مثلا 5/3.5 گویا نیست؟
من این مورد رو تو جواب ایشون ندیدم ! اصلاحش کردین یا چشم من مشکل داره ؟نقل قول:
نقل قول:
ولی فکر کنم تو اونprocedure که نوشتین یه جا اشتباه کردین تو خط سوم و چهارم بجای MوN باید ازaوb استفاده کنی نه؟
آره
تو Procedure Add که همه چیز درسته و تو فراخوانی هم که M و N مشکلی نداره !
ضمنا من فکر می کنم اگر ساده کردن کسر رو بتونیم تعریف کنیم خوب باشه ! توجه به بزرگ شدن صورت و مخرج حاصل جمع چند کسر دلیل این تعریف است.
سلام
میخواستم درباره ی تکنیک raid5 ,انواع داده ها در sql serverبرام توضیح بدید \mer30