PDA

نسخه کامل مشاهده نسخه کامل : دو سوال برنامه نویسی c++



reza0707
16-05-2014, 19:47
سلام
من تا یکی دو روز دیگه جواب اینا رو لازم دارم لطفا کمکم کنید چون هرکاری کردم به جواب نرسیدم:

اولی این که در آرایه یک بعدی و دو بعدی(ماتریس) تعداد اعداد اول موجود در آرایه رو شمارش کنه و به خروجی ببره.
دومی این که اصلا نفهیدم منظورش چیه.ضرب دو تا ماتریس 2*3و3*2 رو میخواد که در نهایت یه ماتریس 2*2 میشه.ولی قضیه اون سیگما رو نفهمیدم چیه.نمیدونم ضرب میکنم چیو باید سیگما کنم.یه عکس گرفتم ازش که واستون آپلود کردم:
اینم لینکش:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

محض اطمینان اگه باز نشد عکس:
بالای علامت سیگما: n-1 پایینش k=0
راستی سوالامو با تابع مینویسم اگه فرقی نمیکنه به صورت معمولی بگید.چون تو سوال عدد اول باید cin بکنم داخل حلقه میگم شاید جور درنیاد.
لطفا کمکم کنید خیلی گیر این سوالام.
دستتون درد نکنه
بدرود.

reza0707
18-05-2014, 13:16
آقا کمکم نمیکنید؟خیلی محتاجشم...

N1ma
18-05-2014, 13:59
درود
در مورد تعداد اعداد اول بگم.
باید دامنه اعداد در این ارایه ها رو بدونید. اگر بازه ای اعداد در ان هستند کوچیک باشه مثلا فرض کنیم اعداد 1 تا 10 رقمی در این ارایه ها هستند. در این صورت شما می تونید از غربال اراتستن استفاده کنید.
اگر نه اعداد شما حتی به 15 رقم یا بیشتر هم برسند، در این صورت غربال دیگه راه حل بهینه ای نیست. اینجا می تونید از الگوریتم های دیگه ای استفاده کنید. میتونید از تقسیم اعداد استفاده کنید و به کوچک ترین مقسوم علیه ای که از اون هست رسیدید بگید عدد اول نیست و اگر چنین مقسوم علیه ای پیدا نشد بگید اوله. (چی گفتم؟!) و یا نه از الگوریتم احتمالاتی استفاده کنید.
من 2-3 مورد از این الگوریتم ها رو دارم ولی اول باید بدونم خودتون به چه نتایجی می رسید و تلاش هاتون به کجا می رسه بعد میام الگوریتم ها رو توضیح میدم. لقمه رو حاضر و اماده نمیشه گذاشت که ... :|

reza0707
18-05-2014, 15:18
این چیزی که خودم نوشتم برای آرایه یه بعدی ولی جواب نمیده:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

reza0707
18-05-2014, 16:15
برای آرایه دو بعدی وقتی اعداد رو وارد میکنم این ارور رو میده:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

بعد اینطوری میشه:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

reza0707
18-05-2014, 16:17
البته برای یک بعدی هم اینطوری میشه

reza0707
18-05-2014, 16:37
ببخشید دو تا پست آخر مربوط به اینجا نبود!!!!!
حواسم نبود لطفا پاک کنید...

N1ma
18-05-2014, 21:46
درود
چند پیشنهاد
مرتب نویسی رو هیچوقت فراموش نکنید. هیچوقت سعی نکنید الکی کدتون رو شلوغ بکنید. در کل وقتی بعدا وارد پروژه های گروهی میشید، خوانا بودن کد شما خیلی اهمیتش بیشتر از اینه که کدتون به هم ریخته و ناخوانا باشه در عین این که کوتاه و بهینه تر باشه.
دوم اینکه برای پروژه های کوچیک (به نظر من) بهترین IDE در ویندوز Codeblocks هست. البته این به هیچ وجه به این معنای ضعفش در کار های بزرگ نیست. نسخه همراه با کامپلیرش هم موجوده که به طور خودکار نصب می کنه. (GNU GCC)

در مورد کدتون
خوب واضحه که از شیوه تقسیم استفاده می کنید.

اشکالات
این کد تصحیح شده است.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(جانم فونت)
جای i , j رو با هم عوض کردی. در ضمن i رو هم صفر تعریف کردی در صورتی که تقسیم یک عدد بر صفر مبهم ه و برنامه شما به احتمال زیاد پس از رسیدن به اون نقطه کرش میشه.

بهینه سازی
لارم نیست تمام اعداد 1 تا n رو تقیسم کنی. تا رادیکال n کافیه.
من خواستم در بهینه سازی از وکتور استفاده کنم ولی از اونجا که بازه و ترتیب اعداد مشخص نیست پس بیخیالش.
یک مورد دیگه می تونه این باشه که اگر عدد زوج بود، همون اول بیخیالش بشی.

نتیجه
این هم کدی که بهش رسیدم. تستش نکردم پس ممکنه باگ بخوره.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


غربال اراتستن هم به دلایلی که گفته شد ازش رد میشیم. اگر این کد بالا کافی نبود بگو الگورتیم Miller-Rabin رو که مدل Deterministic اش هست رو بذارم که البته به دلیل پیچیدگی زیاد توصیه نمیشه و شما فقط کپی پیست انجام می دید!
بدرود

reza0707
19-05-2014, 15:38
نیما خان من چون دانشگاه سی ++ میخونم و تازه ترم 2 هستم خیلی از این چیزایی که میگی رو نخوندم.من برای اعداد اول فقط روش تقسیم رو خوندم و در محیط borland کار میکنم نه ویژوال برای همین هم نمیتونم از این کد استفاده کنم.
دستت درد نکنه بابت کمک فکر کنم جواب رو پیدا کردم قسمتی از یک تابع هست:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دستت درد نکنه بابت کمک.

جواب سوال دیگه رو هم بدست آوردم.
بابت نکاتی که بهم گفتین هم ممنونم.
بدرود

N1ma
19-05-2014, 17:05
درود
خواهش می کنم. برلند متاسفانه نواقص زیادی داره که البته جاش نیست اینجا بحث کنیم. در کل اگر مشکلی داشتید می تونید در سایت های خارجی مثل cplusplus یا stackoverflow جستجو کنید که خیلی سریع تر به نتیجه می رسید.
کد شما همچنان بهینه نیست (به دلایلی که گفتم)
تابع IsPrime فکر کنم باید تو برلند هم جواب بده. همون رو کپی کنید کفایت می کنه.
حالا که اسم الگوریتم رو اوردم بد نیست اینجا هم قرار بدم. (Implementation اش خودمه!:دی)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


Order این الگورتیم باید لاگ n به 4 باشه که تا 2 به نمای 64، با Base های تعریف شده ساپورت می کنه. Base دیگه هم هست ولی ادرس سایت رو یادم نیست.
یک مثال با Base های موجود اینه.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.