• مقالات آموزشی
    • آموزش برنامه نویسی
    • آموزش الگوریتم
    • آموزش شبکه های کامپیوتری
    • آموزش های عمومی
  • ترجمه مقاله
    • لیست ترجمه کامل مقالات
    • لیست ترجمه مفهومی مقالات
  • تحقیق و پژوهش
    • لیست داکیومنت پایان‌نامه
    • لیست داکیومنت سمینار
  • پیاده سازی
    • سی پلاس پلاس ++C
    • برنامه نویسی OpenGL
    • سی شارپ #C
    • پایتون Python
    • اندروید Android
    • پی اچ پی PHP
    • متلب Matlab
  • پاورپوینت
    • پاورپوینت الگوریتم های بهینه سازی
    • پاورپوینت شبکه‌های کامپیوتری
    • پاورپوینت مهندسی کامپیوتر
    • پاورپوینت یادگیری ماشین
    • پاورپوینت درس و تحقیق
    • قالب آماده پاورپوینت
  • فیلم آموزشی
    • لیست فیلم های آموزشی
  • قالب آماده
    • لیست قالب آماده HTML
  • دانلود رایگان
  • مجله پی استور
  • ابزارهای آنلاین
    • برنامه نویسی آنلاین
    • تبدیل مبنای آنلاین
  • سفارش تدریس آنلاین
  • آموزش برنامه نویسی
  • آموزش الگوریتم
  • آموزش شبکه
  • آموزش عمومی

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت
  • درباره ما
  • تماس با ما
  • سفارش تدریس آنلاین
پی استور
0

ورود و ثبت نام

مقالات آموزشی
  • ترجمه مقاله
    • لیست ترجمه کامل مقالات
    • لیست ترجمه مفهومی مقالات
  • تحقیق و پژوهش
    • لیست داکیومنت پایان‌نامه
    • لیست داکیومنت سمینار
  • پیاده سازی
    • سی پلاس پلاس ++C
    • برنامه نویسی OpenGL
    • سی شارپ #C
    • پایتون Python
    • اندروید Android
    • پی اچ پی PHP
    • متلب Matlab
  • پاورپوینت
    • پاورپوینت الگوریتم های بهینه سازی
    • پاورپوینت شبکه‌های کامپیوتری
    • پاورپونت مهندسی کامپیوتر
    • پاورپوینت یادگیری ماشین
    • پاورپوینت درس و تحقیق
      • عمومی
      • مشاهیر و اشخاص
      • واقعیت مجازی
      • طراحی سایت
      • برنامه نویسی
      • علوم کامپیوتر
      • اینترنت اشیاء
      • سیستم عامل
      • ارز دیجیتال
      • کسب و کار
      • تکنولوژی
      • علوم
    • قالب آماده پاورپوینت
  • فیلم آموزشی
    • لیست فیلم های آموزشی
  • قالب آماده
    • قالب آماده HTML
  • مجله پی استور
  • ابزارهای آنلاین
    • برنامه نویسی آنلاین
    • تبدیل مبنای آنلاین

سورس کد برج هانوی در سی شارپ Hanoi Tower به صورت گرافیکی

خانهفروشگاهبرنامه نویسیسی شارپسورس کد برج هانوی در سی شارپ Hanoi Tower به صورت گرافیکی
https://dl.programstore.ir/files/Uploades/Previews/c-sharp/toh.mp4

در این بخش سورس کد برج هانوی در سی شارپ قرار داده شده است. برج هانوی (Tower of Hanoi) یکی از مسائل تاریخی مشهور است که در مباحث طراحی الگوریتم به آن پرداخته می‌شود.

cropped-fav2.png

برنامه‌نویس: تیم برنامه نویسی پی استور

متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی

تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.

نمونه‌ای از برج هانوی

در سال های دور در محوطه معبدی سه میله الماسی قرار داشت که یکی از آن‌ها حاوی تعدادی دیسک طلایی بود. کاهنان معبد در تلاش بودند تا دیسک های طلائی را از آن میله به یکی دیگر از میله‌ها تحت شرایطی انتقال دهند، و باور داشتند که با تمام شدن انتقال دیسک هاعمر جهان نیز به پایان خواهد رسید!

میله اولیه ۶۴ قرص داشت، که بر روی هم به‌طور نزولی بر اساس اندازه‌شان چیده شده‌بودند.همانند شکل زیر سه میله داریم. یکی از میله‌ها میله مبدأ (A)، دیگری میله کمکی (B) و دیگری میله مقصد (C) است. هدف انتقال تمام دیسک‌ها از میله مبدأ به میله مقصد با رعایت شرایط زیر است:

  • در هر زمان فقط یک دیسک را می‌توان جابجا نمود.
  • نباید در هیچ زمانی دیسکی بر روی دیسک با اندازه کوچکتر قرار بگیرد.

 

برج هانوی Towers of Hanoi

حل مسئله برج هانوی

هدف ارائه الگوریتمی است که کمترین توالی حرکت‌ها را برای انتقال دیسک‌ها به ما بدهد. مثلاً اگر n=۲ باشد، توالی حرکت به صورت زیر است:

دیسک ۱ را به میله B منتقل می‌کنیم.
دیسک ۲ را به میله C منتقل می‌کنیم.
دیسک ۱ را به میله C منتقل می‌کنیم.

توجه داشته باشید که بر اساس قانون اول نمی‌توان به غیر از بالاترین دیسک هر میله، به دیسک دیگری از آن دسترسی پیدا کرد.

برای اینکه مسئله‌ای بتواند با روش بازگشتی حل شود باید یک ویژگی اساسی داشته باشد. مسئله اصلی قابل خرد شدن به زیر مسئله‌هایی از همان نوع مسئله اصلی باشد، به شرطی که اندازه زیر مسئله‌های ایجاد شده کمتر باشد. آنگاه می‌توان امیدوار بود که آن را به‌طور بازگشتی حل کرد! این ویژگی در مورد مسئله برج هانوی صدق می‌کند. ایده اصلی این است که توجهمان را به جای حرکت بالاترین دیسک، روی پایین‌ترین دیسک میله متمرکز کرده، و مراحل زیر را طی می‌کنیم:

n – ۱ دیسک بالایی را با شرایط ذکر شده و به کمک میله C به میله B منتقل می‌کنیم. بزرگترین دیسک را از میله مبدأ به میله مقصد حرکت می‌دهیم. n – ۱ دیسک را که هم اکنون در میله B هستند با شرایط داده شده به میله مقصد انتقال می‌دهیم. می‌بینیم که توانستیم عملیات جابجا کردن n دیسک را به دو عملیات مشابه ولی با اندازه کمتر و یک عملیات ساده تقسیم کنیم. واضح است که جابجا کردن n – ۱ دیسک راحتتر از جابجا نمودن n دیسک است.

تحلیل پیچیدگی زمانی مسئله‌ی برج هانوی

در حالت کلی می‌خواهیم بدانیم اگر تعداد دیسک‌ها n باشد، کمترین تعداد حرکت برای جابجا نمودن دیسک‌ها چقدر است؟

فرض کنید (T(n تعداد حرکت‌های لازم جهت انتقال n دیسک به مقصد باشد. بر اساس توضیحات فوق، تعداد (T(n−1 حرکت برای انتقال n−1 دیسک به میله‌ی کمکی، یک حرکت برای انتقال بزرگترین دیسک به میله‌ی مقصد و مجددا (T(n−1 حرکت برای انتقال n−1 دیسک موجود در میله‌ی کمکی به میله‌ی مقصد نیاز است. پس:

T(n)=2T(n−1)+1

با حل این رابطه‌ی بازگشتی به روش‌های ریاضی، به نتیجه‌ی زیر می‌رسیم:

T(n)=2n−1

مرتبه‌ی اجرایی این الگوریتم (O(2n است که چندان مرتبه‌ی مطلوبی به نظر نمی‌رسد. اما همانگونه که بحث شد، این روش حداقل تعداد حرکت‌های ممکن را می‌دهد؛ و هرگز نمی‌توان روش دیگری با مرتبه‌ی پایین‌تر برای حل آن یافت.

پیاده سازی مسئله برج هانوی بصورت بازگشتی در سی شارپ

برای پیاده سازی مسئله برج هانوی در #C از چندین کلاس استفاده شده است. که وظایف هر کلاس به ترتیب بصورت زیر است:

کلاس MoveCalculator : این کلاس با هدف تنها کار بر روی راه حل ایجاد شده است. حل مسئله بصورت بازگشتی است.

public static class MoveCalculator
{         
    private static void Calculate(int n, int fromPole, int toPole)
    {
        if (n == -1)
        {
            return; // We are done
        }
        int intermediatePole = GetIntermediatePole(fromPole, toPole);
        
        Calculate(n - 1, fromPole, intermediatePole);
        moves.Add(new Move(fromPole, toPole));
        Calculate(n - 1, intermediatePole, toPole);
    }    
    ... 
}

کلاس GameState : کلاس بالا لیستی از حرکت ها را باز می کند و GameState آنها را می سازد.

public static class GameState
    {
        public static List<Pole> Poles = new List<Pole>();
        public static List<Bitmap> ImageList = new List<Bitmap>();
        public static int MoveCount { get; set; }
        public static int NumberOfDisks { get; set; }
        
        // Start the game
        static GameState()
        {
            LoadImagesFromFile();
            RestartGame(3);
        }
 
        public static int Move(Move move)
        {
         if (move.AffectCount())
            {
                MoveCount++;
            }
            
            if (move.IsValid())
            {
                Disk disk = move.FromPole.getTopDisk();
                Poles[move.FromPole.Number].RemoveDisk();
                Poles[move.ToPole.Number].AddDisk(disk);
                return MoveCount;
            }
 
            else //Invalid move
            {
                return -1;
            }  
        }
 
        public static bool IsSolved()
        {
            return (Poles[Properties.Settings.Default.EndPole].Disks.Count == NumberOfDisks);
        } 
}

کلاس Move: این کلاس برای تعریف حرکت دیسک ها ایجاد شده است.

public class Move 
{
    public Pole FromPole { get; set; }
    public Pole ToPole { get; set; }
    
    public bool AffectCount()
    {
        //If the poles don't change the move should not be counted
        if (ToPole.Equals(FromPole))
        {
            return false;
        }
        return IsValid();
    }            

    public bool IsValid()
    {
        //Allow a move where the pole dont change
        if (ToPole.Equals(FromPole))
        {
            return true;
        }
        return ToPole.AllowDisk(FromPole.getTopDisk());
    }    
    ...
}

فرم GameForm: فرم اصلی برنامه می باشد که توابع و کلاس ها در آن ایجاد می شود.

نمایش خروجی محصول

برج هانوی Towers of Hanoi

معرفی ویدئوی محصول

Your browser does not support the video tag.

این ویدیو یک پیشنمایش از اجرای سورس کد می‌باشد.

درباره سورس کد برج هانوی در سی شارپ

سورس کد برج هانوی بصورت در سی شارپ دارای دو قسمت حل به روش دستی و حل خود کار با استفاده از روش بازگشتی بصورت گرافیکی می باشد. این سورس کد به زبان سی شارپ #C در Microsoft Visual Studio 2013 نوشته شده است. این سورس کد توسط کارشناسان پی استور تست و اجرا شده است و مورد تایید پی استور می باشد. محصول دارای نشان ضمانت پی استور می باشد. برای دانلود سورس کد برج هانوی در سی شارپ Hanoi Tower به صورت گرافیگی، محصول را خریداری کنید. به محض خرید لینک دانلود در دسترس خواهد بود.

گارنتی 7 روزه بازگشت هزینه

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

  • ۱۰۰ درصد مبلغ پرداختی در حساب کاربری شما شارژ می‌شود.
  • و یا 80 درصد مبلغ پرداختی به حساب بانکی شما عودت داده می‌شود.

تاکنون 270 نفر این محصول را تهیه کرده اند و 3 نظر برای آن ثبت شده است.

نظرات و دیدگاه ها
  • نینا
    9 آذر 1401
    امتیاز 3 از 5
    پاسخ

    برنامه اجرا شد ولی فرمی که میله ها و دیسک و… روش طراحی شده نداره، فرم درحالت دیزاین نداره

    • مدیریت و پشتیبانی
      9 آذر 1401
      پاسخ

      سلام و وقت بخیر
      تصاویر و حرکت اون ها با کد انجام میشه و هر جایی از برنامه که لازم هست نشون داده می شه. به عنوان نمونه کلاس Move برای حرکت دیسک ها هست که یک object از اون ساخته میشه و در ameForm.cs از اون استفاده میشه.

  • پیر محمدی
    13 مرداد 1401
    امتیاز 4 از 5
    پاسخ

    برنامه اجرا شد و مشکلی نداشت فقط حیف گزارش کار نداشت.

  • مدیریت و پشتیبانی
    28 اسفند 1397
    امتیاز 5 از 5
    پاسخ

    نظرات و دیدگاه های خود را با ما درمیان بگذارید.

قوانین ثبت دیدگاه

  • لطفاً دیدگاه های خود را فارسی تایپ کنید.
  • دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
  • از درج دیدگاه های تکراری پرهیز نمایید.
  • سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.

لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دسته‌بندی موضوعی: برنامه نویسی ساختمان داده سی شارپ

قیمت 49,000 تومان

افزودن به علاقه مندی ها
امتیاز
4.00 از 3 رأی
4.00 3 رای
49,000 تومان

تاریخ انتشار: 28 فروردین 1398
تاریخ بروزرسانی: 3 مرداد 1399
حجم فایل: 1.9 مگابایت
فرمت فایل sln. در قالب ویژوال استودیو
نسخه: 1.0
هماهنگی با: Microsoft Visual Studio 2013 و بالاتر
دانلود شده توسط: 270 نفر

3 بازخورد (مشاهده نظرات)

قیمت: 49,000 تومان

تماس با ما
  • دفتر پشتیبانی: 04144225175 (ساعت کاری 8:00 الی 16:00)
  • آی دی تلگرام: programerPstore
درباره پی استور

تیم توسعه پی استور با هدف ارائه مطالب مفید علمی در گرایش های مختلف پروژه های علمی مختلف را جمع آوری می کند و در قالب یک محصول تست شده و قابل اجرا همراه با توضیحات و نحوه اجرا، انتشار می دهد. امید است با عنایت الهی و کوشش اساتید و دانشجویان همراهمان بتوانیم قدم کوچکی در تولید محتوای علمی کشور داشته باشیم.

مجوز های اخذ شده
اینماد نشان ملی   پروانه نشر دیجیتال
  • حساب کاربری من
  • سوالات متداول
  • راهنمای خرید و دانلود
پی استور
  • همکاری با ما
  • قوانین و مقررات
  • حریم خصوصی
تمامی حقوق برای پی استور محفوظ است.
keyboard_arrow_up