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

تبلیغات

بلومبارد

تبلیغات متنی

تریدینگ ویو

خرید اکانت اسپاتیفای

کاشت ابرو

لمینت دندان

ونداد کولر

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

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

صرافی rkchange

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

دانلود فیلم

ناب مووی

تعمیر کاتالیزور

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

دیزل ژنراتور موتور سازان

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

سایت ایمالز

تور دبی

سایبان ماشین

جملات زیبا

دزدگیر منزل

ماربل شیت

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

آموزش آرایشگری رایگان

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

آموزشگاه زبان

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

ترازوی آزمایشگاهی

رنگ استخری

فروش اقساطی کوییک

راهبند تبریز

ترازوی آزمایشگاهی

قطعات لیفتراک

وکیل تبریز

خرید اجاق گاز رومیزی

آموزش ارز دیجیتال در تهران

شاپیفای چیست

فروش اقساطی ایران خودرو

واردات از چین

قیمت نردبان تاشو

وکیل کرج

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

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

سیسمونی نوزاد

پراپ تریدینگ معتبر ایرانی

نهال گردو

صنعت نواز

پیچ و مهره

خرید اکانت اسپاتیفای

صنعت نواز

لوله پلی اتیلن

کرم ضد آفتاب لاکچری کوین SPF50

دانلود آهنگ

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

واردات از چین

اجاره کولر

دفتر شکرگزاری

تسکین فوری درد بواسیر

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

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

 






آمار وبسایت

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




هواشناسی

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

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
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]
[تعداد بازديد از اين مطلب: 544]

bt

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







-


گوناگون

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


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