PDA

View Full Version : data type برای اعداد گویا



google
شنبه 21 آذر 1383, 11:12 صبح
میدونیم که تو هیچ زبان برنامه سازی data type برای اعداد گویا وجود ندارد
چطوری اینdata type رو تعریف کنیم و عملیات مختلف بر روی اعداد گویا رو پشتیبانی کنیم.

phantasm
شنبه 21 آذر 1383, 15:20 عصر
اگه منظورت از اعداد گویا مجموعه اعداد :


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)

google
شنبه 21 آذر 1383, 18:09 عصر
سلام
منظورم از اعداد گویا همون اعداد کسری هستش .
منظورم اینه که مثلا فرض کنید تو زبان پاسکال می خواهیم با اعداد گویا کار کنیم.مثلا دو عدد گویا رو با هم جمع کنیم یا تفریق کنیم یا ضرب و...
اولا:یک data type برای اعداد گویا تعریف کنیم.
ثانیا:توابعی برای جمع -تفریق-ضرب و تقسیم اعداد گویا بنویسیم و در برنامه از این توابع استفاده کنیم.

phantasm
شنبه 21 آذر 1383, 23:40 عصر
پس جواب همون بالاییه :mrgreen:

google
یک شنبه 22 آذر 1383, 13:58 عصر
سلام
ببخشید إقای phantasm که من از اسمتون خیلی میترسم شما تو جوابتون فقط دو عدد کسری روبصورت ریاضی با هم جمع کردین. :mad:
از شما که یک کاربر نقره ای هستین بعیده(البته ببخشید ها :موفق: )
منظورم اینه که اگه من تو برنامه اصلی بخوام دو عدد کسری رو با هم جمع کنم برنامه های فرعی رو چطوری صدا بزنم.یا بخوام عددها رو منها یا ضرب کنم .
یعنی تو function من برای هر عدد گویا دو تا آرگومان یکی برای صورت کسر و یکی برای مخرج کسر میخوام.
اما من دقیقا نمیتونم کد functionها رو بنویسم.
اگه میتونید کد function ها رو بنویسید. :wink:

phantasm
دوشنبه 23 آذر 1383, 02:06 صبح
جواب بالایی رو یخورده اصلاح کردم!

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]);
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:

google
دوشنبه 23 آذر 1383, 13:35 عصر
سلام
از کمکتون ممنونم گرفتم
ولی فکر کنم تو اونprocedure که نوشتین یه جا اشتباه کردین تو خط سوم و چهارم بجای MوN باید ازaوb استفاده کنی نه؟ :kaf:
در ضمن اون یه سری اصول که فعلا باید بی خیال شم چیه؟
******************************************
((موفقیت یک درصد از کاری است که 99٪ آن شکست بوده است.))

چیرو هوندا

phantasm
چهارشنبه 25 آذر 1383, 15:50 عصر
ولی فکر کنم تو اونprocedure که نوشتین یه جا اشتباه کردین تو خط سوم و چهارم بجای MوN باید ازaوb استفاده کنی نه؟
آره :wink:


در ضمن اون یه سری اصول که فعلا باید بی خیال شم چیه؟

در ریاضیات سیستم های ریاضی رو به شکلهای مختلفی تعریف و گاها میسازن ٬ بدیهیات یا اصول در اونجا مطرحه و به سوال شما ربطی نداره.

MSK
سه شنبه 01 دی 1383, 16:56 عصر
آیا صورت و مخرج اعداد گویا باید حتما صحیح باشن؟ یعنی مثلا 5/3.5 گویا نیست؟
بهر حال استفاده از رکورد خیلی منطقی تر بنظر میاد:


type adadgooya=record soorat,makhraj:real; end;

:موفق: :sad2:

google
سه شنبه 01 دی 1383, 17:31 عصر
سلام
خب فرقی نداره بازم میشه ازیک آرایه اعشاری استفاده کنیم.
******************************************
اگر برای یک اشتباه هزار دلیل بیاوریم میشود هزار و یک اشتباه.
((ابو علی سینا))

_alish_
چهارشنبه 02 دی 1383, 14:50 عصر
فرق نداره ولی رکورد خبلی خواناتر است
بهتر است از رکورد استفاده کنی
MSK :موفق:

Sepidar
چهارشنبه 02 دی 1383, 18:39 عصر
اولا که این مباحث ربطی به الگوریتم نداشت.

فرق نداره ولی رکورد خبلی خواناتر است
بهتر است از رکورد استفاده کنی
ثانیا که خداوند - جل و علی- سالهاست که OOP رو خلق کرده
ثالثا هم که تو اینجور موارد تجربه حقیرمیگه <span dir=ltr>C++</span> به خاطر امکان تعریف دوباره عملگر بهترین زبونه.

google
شنبه 05 دی 1383, 18:41 عصر
اولا که این مباحث ربطی به الگوریتم نداشت
به نظر شما به چی ربط داشت؟ :mrgreen:

ثانیا که خداوند - جل و علی- سالهاست که OOP رو خلق کرده
نخیر عزیز من چرا کفر میگی خدا که oop رو خلق نکرده. :strange:

ثالثا هم که تو اینجور موارد تجربه حقیرمیگه C++ به خاطر امکان تعریف دوباره عملگر بهترین زبونه
ما هم میدونیم کهc++ بهتره ولی میخواستیم با پاسکال یا c این کارو انجام بدیم. :wink:
:sorry:

phantasm
سه شنبه 08 دی 1383, 23:35 عصر
ثانیا که خداوند - جل و علی- سالهاست که OOP رو خلق کرده

سپیدار جان , برای اینکه مفهوم OOP رو کسی درک کنه(سپس اون رو بکار بگیره) ابتدا لازمه با جدا سازی مفهوم تعریف(Declaration) و پیاده سازی(ّImplementation) ساختارها آشنا بشه.هدف یادگیری مفاهیم بود و مسلمه که در عمل سیستم های جامع تری وجود داره.


ثالثا هم که تو اینجور موارد تجربه حقیرمیگه C++ به خاطر امکان تعریف دوباره عملگر بهترین زبونه.
کدوم موارد؟

Sepidar
چهارشنبه 09 دی 1383, 01:49 صبح
سپیدار جان , برای اینکه مفهوم OOP رو کسی درک کنه(سپس اون رو بکار بگیره) ابتدا لازمه با جدا سازی مفهوم تعریف(Declaration) و پیاده سازی(ّImplementation) ساختارها آشنا بشه.هدف یادگیری مفاهیم بود و مسلمه که در عمل سیستم های جامع تری وجود داره.
در مورد تعریف (شامل شبه کدهایی برای مشخص کردن کلی توابعی که روی نوع داده جدید عمل میکنند) موافقم؛
اما پیاده سازی یه مساله کاملا تکنیکیه که با محیطی که داریم در اون عمل پیاده سازی رو انجام میدیم، ارتباط مستقیم داره.


کدوم موارد؟
در مورد برنامه سازی در مواردی که با انواع ریاضی مختلف سر و کار داریم (شامل کار با ماتریسها، اعداد مختلط، بردارها، همین مثال و مثالهای متعدد دیگر)،‌ <span dir=ltr>C++</span> با فراهم آوردن ویژگی «تعریف مجدد عملگر» دو محسنه بزرگ برای برنامه نویسان به ارمغان آوردهاولا (بر خلاف اونچه که گفته میشه) خوانایی برنامه ها واقعا اضافه میشه. ثانیا (بالاخص در محاسات ریاضی) استفاده کننده از شئ، از سر و کله زدن بیخود با پشته، راحت میشه.

Sepidar
چهارشنبه 09 دی 1383, 01:55 صبح
نخیر عزیز من چرا کفر میگی خدا که oop رو خلق نکرده.
یه کم بیشتر فکر کن.


به نظر شما به چی ربط داشت؟
چون مربوط به پیاده سازی بود به:

ما هم میدونیم کهc++ بهتره ولی میخواستیم با پاسکال یا c این کارو انجام بدیم.

***

در ضمن دیگه هم از این پستا نکن. چون آف تاپیک به حساب میاد.

google
چهارشنبه 09 دی 1383, 13:55 عصر
سلام آقای سپیدار
به خدا من شرمنده ام :sorry: من منظور خاصی نداشتم خواستم شوخی کنم ولی فکر میکنم که شما از دست من ناراحت شدید ببخشید :گیج:
چند تا سوال دارم اگه ممکنه جواب بدبن
1-منظورتون از (یه کم بیشتر فکر کن) چیه؟یعنی چه جوری خدا oop رو خلق کرده؟
2-اونجا که نوشتین( چون مربوط به پیاده سازی بود) جملتون ناقصه.
3-منظورتون از *** چی بوده؟
4-آف تاپیک چیه؟
اینم تقدیم میکنم به شما :flower:
***************************************
برای پیروزی و موفقیت در زندگی سه چیز لازم است:
اول پشتکار دوم پشتکار سوم پشتکار
((لرد آویبوری))

Sepidar
چهارشنبه 09 دی 1383, 18:41 عصر
<span dir=ltr>Never mind!</span>
:موفق:

seyedof
یک شنبه 04 بهمن 1383, 00:59 صبح
سلام
دوستی که گفتن مثلا ۳/۵.۵ گویا هست یا نه : دوست عزیز As a matter of definition عدد گویا به صورت کسری که صورت و مخرجش عدد صحیح هستن تعریف شده ۳/۵.۵ رو اگر بخواین به شکل گویا بنویسید کاری نداره میشه ۶/۱۱ .

ضمنا جناب سپیدار درست میگن در این مواقع استفاده از Operator Overloading که از امکانات قوی C++ است خیلی کمک میکنه.

در ضمن در زبان کفار! به عدد گویا Rational Number میگن اگر خواستین سرچ کنید این کلمه رو سرچ کنید.

اتفاقا کاربردهای زیادی داره. به عنوان یه مسابقه کوچیک آیا کسی میتونه یه مثال از کاربرد اعداد گویا و اینکه یه کلاس براش بنویسیم بگه ؟؟

ممنون علی

رضا جاسبی
یک شنبه 25 بهمن 1383, 09:31 صبح
آیا صورت و مخرج اعداد گویا باید حتما صحیح باشن؟ یعنی مثلا 5/3.5 گویا نیست؟
خیر ! تعریف اعداد گویا این است که حتما صورت و مخرج صحیح باشند. 5/3.5 برابر 10/7 است.


نقل قول:
ولی فکر کنم تو اونprocedure که نوشتین یه جا اشتباه کردین تو خط سوم و چهارم بجای MوN باید ازaوb استفاده کنی نه؟

آره
من این مورد رو تو جواب ایشون ندیدم ! اصلاحش کردین یا چشم من مشکل داره ؟
تو Procedure Add که همه چیز درسته و تو فراخوانی هم که M و N مشکلی نداره !

ضمنا من فکر می کنم اگر ساده کردن کسر رو بتونیم تعریف کنیم خوب باشه ! توجه به بزرگ شدن صورت و مخرج حاصل جمع چند کسر دلیل این تعریف است.

1158677009
چهارشنبه 07 اسفند 1387, 12:23 عصر
سلام
میخواستم درباره ی تکنیک raid5 ,انواع داده ها در sql serverبرام توضیح بدید \mer30