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

تبلیغات

تبلیغات متنی

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

صرافی rkchange

سایبان ماشین

دزدگیر منزل

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

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

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

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

آراد برندینگ

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

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

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

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

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

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

اوزمپیک چیست

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

نگهداری از سالمند شبانه روزی در منزل

بی متال زیمنس

ساختمان پزشکان

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

 






آمار وبسایت

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




هواشناسی

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

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



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

بررسي مسئله :برج هانوي -


واضح آرشیو وب فارسی:سایت ریسک: t=42491">بررسي مسئله :برج هانوي aira 23 آبان 1384, 18:57سلام من برنامه برج هانوي رو نوشتم ميخواستم بدونم درسته يا نه؟؟ #include <stdio.h> maim() { void transfer(int,char,char,char); int n; printf("how many disks?"); scanf("%d",&n); /*disks*/ printf(" "); transfer(n,`L`,`R`,`C`); /*L=Left,R=Right,C=Center*/ } void transfer(int n,char from,fromchar to,char temp) { if (n>0) { transfer(n-1,from,temp,to); printf("move disk %d from %c to %c ",n,from,to); transfer(n-1,temp,to,from); } return 0; } stranger_in_rain 24 آبان 1384, 21:14به نظرم کد شما تنها یکی از حلقه ها را جابه جا میکند! aira 24 آبان 1384, 22:28ميتونيد يه ذره راهنماييم كنيد تا بتونم برنامشو بنويسم باc++هم اينجوري نوشتم اين چطوره؛اگه ميتونيد راهنماييم كنيد تا برنامشو بنويسم::wink: void Hanoi(int x,int h, int d) { if(x==1) cout<<"move disk from"<<s<<"to"<<d; else{ Hanoi(x-1,s,d,h); cout<<"move disk from"<<s<<"to"<<d; Hanoi(x-1,h,s,d); ‌‌ } توضيح: s:ميله اول h=ميله دوم به عنوان ميله كمكي d=ميله سوم به عنوان ميله مقصد stranger_in_rain 01 آذر 1384, 09:05سلام. ببخشید یه ذره دیر میشه پاسخ های من. 2 مسئله در این جریان دخیل هستش ، سرم خیلی شلوغه !!!! و می ایستم ببینم کسی جواب میده یا نه ... :( خوب یکی از چیزهایی که من در رابطه با برج هانوی میدونم اینه که برای n حلقه، میتوانیم با استفاده از فرمول زیر تعداد مراحلی را که طول میکشد تا کل حلقه ها به میله ی مقصد منتقل شود را پیدا کنیم : H(n)=(2^n)-1 ولی خوب مسئله به این سادگی هم نیست چون این طور که شما نوشتید برنامه رو، همه ی حلقه ها یکسان فرض شده، در حالی که حلقه ها size های گوناگون دارند. پس به این سادگی هم نیست ;) من هنوز رو این مسئله فکر نکردم اما با این نکته هر دو فکر کنیم و حلش کنیم. aira 02 آذر 1384, 06:40ولي تا اونجايي كه به ما گفتن اين مسئله سه حلقه يكسان داره . الگوريتمي كه من نوشتم از يك حاقه به عنوان كمك استفاده كرده و ديسك ها رو بع صورت n-1جابجا ميكنه. جوابشو بزود ميزارم stranger_in_rain 02 آذر 1384, 09:47سلام در مسئله ی کلی هانوی حلقه ها از بزرگ به کوچک روی هم چیده میشوند. به طوری که بزرگترین زیر همه و کوچکترین روی همه قرار دارد ... و هیچ حلقه ی بزرگتری نمیتواند روی حلقه ی کوچک تر از خود قرار بگیرد ... به این عکس نگاه کنید : aira 02 آذر 1384, 11:38بله.اصلاً خود مسئله به همين صورت هست.اينم جوابش:D #include <iostream> #include <cstdlib> #include <conio.h> #include <cmath> typedef char* Peg; void move(Peg A, Peg B); void transfer(size_t N, Peg A, Peg B, Peg C); void get_disk_num(int &iNum); int main() { while(1) { std::cout << " Hanoi Towers Puzzle Solver" << std::endl << std::endl; std::cout << "Enter number of disc on the first peg (enter -1 to quit): "; int iDiskNum, iStepNum; get_disk_num(iDiskNum); if(iDiskNum == -1) { std::cout << "hope you enjoyed using these program!" << std::endl; break; } else { iStepNum = pow(2, iDiskNum) - 1; std::cout << "the shortest solution can be reach in " << iStepNum << " steps" << std::endl; std::cout << "press any key to show the solution..."; getch(); std::cout << std::endl; transfer(iDiskNum, "Peg1", "Peg2", "Peg3"); system("pause"); system("cls"); } } return 0; } // tedade jabejayi diskha void move(Peg A, Peg B) { std::cout << "move top most disc from " << A << " to " << B << std::endl; } // chegonegiye harekate diskhara namayesh midahad void transfer(size_t N, Peg A, Peg B, Peg C) { if(N > 0) { // enteghale avalin N - 1 disk be "B" transfer(N - 1, A, C, B); // enteghale akharin disk be "C" move(A, C); // enteghale dickhaye "B" be"C", transfer(N - 1, B, A, C); } } void get_disk_num(int &iNum) { std::cin >> iNum; if(iNum != -1 && iNum < 1) { std::cout << "please notice that the number of disc needs to be an integer bigger than 0" << std::endl; std::cout << "number of disc on the first peg: "; get_disk_num(iNum); } } بروبچ بياين كپي كنيد حالشو ببريد.يه دعايي هم براي بنده بخونيد J4vad 03 آذر 1385, 14:14دوست عزيز برنامه مشكل داره اصلا اجرا نمي شه ؟!!! maryam1385 22 مهر 1386, 10:16برج هانوي




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

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

bt

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







-


گوناگون

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


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