نمایش نتایج 1 تا 9 از 9

نام تاپیک: برج هانوی

  1. #1
    کاربر دائمی آواتار mahtab_18
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    مشهد
    پست
    114

    برج هانوی

    سلام
    اگر کسی می تواند توضیحی در رابطه به عملکرد برج هانوی بدهد.

    با تشکر

  2. #2
    کاربر جدید آواتار ms_zandy
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    11


    این مسئله شامل سه میله و 10 دیسک است که دیسک ها دارای شماره واندازه اند که نسبت به هم نسبت عکس دارند (هرچه شماره دیسک بیشتر اندازه کوچکتر می شود )
    کاری که باید کرد آن است که با کمترین حرکت دیسک ها را از بزرگ به کوچک چیند


    اگر درگروه زبانهای خانواده C سرچ کنی می توانی سرس آن رابیابی

  3. #3
    http://www.planet-source-code.com/
    ت. این سایت همه چی هست

  4. #4
    کاربر تازه وارد آواتار daneshjoye_azad
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    روستای امیرآباد - مازندران
    پست
    39
    سلام امیدوارم این توضیح کافی باشه.
    ابتدا دیسک 1 رو به میله سوم منتقل مکنیم بعد دیسک 2 رو روی دیسک اول در میله سوم میبریم حالا دیسک 3 رو به میله دوم منتقل میکنیم وبعد به ترتیب دیسکهای 2و1 رو به میله دوم منتقل میکنیم . بعد دیسکهای موجود در میله دوم را به ترتیب1و2و3 به میله سوم منتقل میکنیم. وسپس دیسک 4 رو به میله دوم منتقل کنی و سپس دیسکهای موجود در میله سوم را به میله دوم منتقل کنی

  5. #5
    کاربر دائمی آواتار mahtab_18
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    مشهد
    پست
    114
    سلام
    خیلی ممنون از جوابها من به ÷اسخ سوالم رسیدم

    متشکرم

  6. #6

    برج هانوی

    سلام برای برنامه نویسی برج هانوی ما چطور میتونیم عمل کنیم؟

  7. #7
    به شیوه بازگشتی .
    اگه درست یادم باشه کدش توی همین فروم بود
    نوشتن خیلی ساده هست

  8. #8
    کاربر دائمی آواتار the Dead
    تاریخ عضویت
    خرداد 1385
    محل زندگی
    iN Hell
    پست
    127
    const max=40;
    type
    elem=integer;
    stack=record
    mytop:integer;
    items:array[0..max-1] of elem;
    end;

    function empty(s:stack):boolean;
    begin
    if s.mytop=-1 then
    empty:=true
    else
    empty:=false
    end;

    function full(s:stack):boolean;
    begin
    if s.mytop=max-1 then
    full:=true
    else
    full:=false;
    end;
    procedure clear(var s:stack);
    begin
    s.mytop:=-1;
    end;

    procedure push(var s:stack;x:elem);
    begin
    s.mytop:=s.mytop+1;
    s.items[s.mytop]:=x;
    end;

    procedure pop(var s:stack;var x:elem);
    begin
    x:=s.items[s.mytop];
    s.items[s.mytop]:=0;
    s.mytop:=s.mytop-1;
    end;
    procedure scopy(s1:stack;s2:stack;s3:stack;tn:integer);
    var t,i:integer;
    begin
    writeln;
    for i:=1 to tn do
    begin
    t:=0;
    if not empty(s1) then
    pop(s1,t);
    write('s1 :');
    write(t,',');
    end;
    writeln;
    for i:=1 to tn do
    begin
    t:=0;
    if not empty(s2) then
    pop(s2,t);
    write('s2 :');
    write(t,',');
    end;
    writeln;

    for i:=1 to tn do
    begin
    t:=0;
    if not empty(s3) then
    pop(s3,t);
    write('s3 :');
    write(t,',');
    end;
    writeln;
    writeln('*********');
    end;
    procedure tower(topn:integer;var s1:stack;var s2:stack;var s3:stack;src:char;aux:char;dest:char);
    var t:integer;

    begin
    if topn=1 then
    begin
    writeln;
    write('Disk 1 from ',src,' to ',dest);
    pop(s1,t);
    push(s3,t);
    end
    else begin
    tower(topn-1,s1,s3,s2,src,dest,aux);
    writeln;
    write('Disk ',topn,' from ',src,' to ',dest);
    pop(s1,t);
    push(s3,t);
    tower(topn-1,s2,s1,s3,aux,src,dest);

    end;
    end;

    var
    a:array[1..8,1..8] of integer;
    i,j,n1,fl,n2,n3,n4:integer;
    c:char;
    st1:string;
    s1,s2,s3:stack;
    begin
    clear(s1);
    clear(s2);
    clear(s3);
    write('Enter Num of the disks :');
    readln(i);

    for j:=i downto 1 do
    push(s1,j);
    tower(i,s1,s2,s3,'A','B','C');
    readln;
    end.

  9. #9
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: برج هانوی

    والا یک سرچ کوچیک بزنی تو انجمن های همین بخش رو وبلاگا روی زمین و زمان سورس این برج هانوی هست این به روش بازگشتیشه :


    #include <iostream>

    typedef char tower;

    void move(int n, tower x, tower y, tower z) {
    if (n > 0) {
    move(n - 1, x, z, y);
    std::cout << "Move #" << n << " from " << x << " to " << y << '\n';
    move(n - 1, z, y, x);
    }
    }
    void main() {
    std::cout << "How many disks? ";
    int n;
    std::cin >> n;
    move(n, 'A', 'B', 'C');
    }

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •