PDA

View Full Version : سوال: برج هانوي (Tower of hanoi)



asadegha
شنبه 04 دی 1389, 12:12 عصر
سلام به همه دوستان.

من براي پروژه دانشگاهم بايد يه برنامه برج هانوي به صورت گرافيكي درست كنم.
فعلا توي اولش موندم.
دارم برج هانوي رو به صورت بازگشتي مي نويسم. ولي نميد.نم چرا error مي ده. كدش رو اينجا ميزارم. البته گرافيكي نيست. گرافيكش رو بعدا اضافه ميكنم.
كسي هست كه راهنماييم كنه؟ ممنون مي شم ازتون.

*** كد اشتباه رو پاك كردم. پايين تر درستش رو گذاشتم. مي تونين استفاده كنين ازش. ***

asadegha
چهارشنبه 08 دی 1389, 21:47 عصر
دوستان اين لينك هايي كه دوستمون پايين گذاشتن رو امروز ديدم. واقعا جالبه. يه بررسي اي كنين بدك نيست....

xman_1365_x
چهارشنبه 08 دی 1389, 22:38 عصر
كسي نيست راهنمايي كنه؟
پس بگين ميشه تو اسمبلي يه زيربرنامه با پارامتر نوشت؟ بله ميشه،متاسفانه فعلا وقتشو ندارم كد ها رو بررسي كنم
فعلا لينك هاي زير روببينيد تا كار با زير برنامه رو ياد بگيريد
http://www.hpkclasses.ir/Courses/Assembly/asm1100.html
http://www.hpkclasses.ir/Courses/Assembly/asm0800.html
http://www.hpkclasses.ir/Courses/DataStructure/ds0900.html
powerpoint.pnu.ac.ir/dbs/computer/.../assembly(nick%20mehr).ppt (http://barnamenevis.org/powerpoint.pnu.ac.ir/dbs/computer/.../assembly%28nick%20mehr%29.ppt)
موفق باشي

asadegha
یک شنبه 12 دی 1389, 16:15 عصر
سلام. خودم نوشتم. اينجام ميزارم. بچه هاي علوم و فنون كه با عشقم باقرجون (مهندس رحيم پور) درس دارن استفاده كنن ازش.

;--------------- stack ---------------------------
sseg segment stack 'stack'
db 64 dup (0)
sseg ends
;-------------- data ----------------------------
dseg segment 'data'
a dw 'A'
b dw 'B'
c dw 'C'
n dw 3
t db " => ",'$'
dseg ends
;------------ code ------------------------------
cseg segment 'code'
assume cs:cseg, ds:dseg, ss:sseg

;************* MAIN *******************
main proc far
mov ax,dseg
mov ds,ax

;----- clrscr -------
mov ah,06h
mov al,0
mov cx,0000h
mov dx,184fh
mov bh,71h
int 10h
mov ch,0
call h
mov ah,8
int 21h
mov ax,4c00h
int 21h
main endp
;**************************************
;---------------- hanoi --------------------------
h proc near
cmp n,1
jne else1
;if n== 1 then ....
; cout a --> c
call print
jmp exit
else1:
;------------------
push n
push a
push b
push c

;----- 1st call h ------
push b
push c
pop b
pop c
dec n
call h
;----- cout a --> c ------
pop c
pop b
pop a
pop n
call print

;----- 2st call h ------
push a
push b
pop a
pop b
dec n
call h

exit:
ret
h endp

;--------- print ---------------------------------
print proc
;---- next line ----
inc ch
mov ah,2
mov dl,1
mov dh,ch
mov bh,0
int 10h
;------------------
mov ah,2
mov dx,a
int 21h
mov ah,9
mov dx,offset t
int 21h
mov ah,2
mov dx,c
int 21h
ret
print endp

cseg ends
end main

asadegha
یک شنبه 10 بهمن 1389, 19:56 عصر
بچه ها دارم رو گرافيكش كار مي كنم. يه دمت گرمم بگين خوبه هاااااااااااا. تشكر كنين انر‍ي بگيرم سريعتر درست كنم.

*KIARASH*
سه شنبه 12 بهمن 1389, 17:16 عصر
مرسی خیلی مفید بود. گرافیکیشو کی می ذاری؟ تخصص من تو سی شارپه اگه مشکلی داشتی می تونم توی این زمینه کمکت کنم

kernel
سه شنبه 12 بهمن 1389, 18:03 عصر
مرسی برادر asadegha (http://barnamenevis.org/member.php?44212-asadegha) بابت کد

با اجازه کد شما رو تو فروم دانشگاه علوم فنون هم گذاشتم تا بچه ها درس باقرجون رو بتونن پاس کنن ;)

asadegha
پنج شنبه 14 بهمن 1389, 17:40 عصر
سلام به دوستان عزيز. كدش تقريبا تمومه. احتمال زياد جمعه همينجا آپ ميكنم.

asadegha
شنبه 16 بهمن 1389, 22:13 عصر
دوستان با عرض شرمندگي. طبق صحبت هايي كه امروز با مهندس رحيم پور داشتم، تصميم بر اين شد كه كد گرافيكي رو آپ نكنم. با صحبتاي امروز منو مجاب كرد اين كارو نكنم. بعد از تحويل پروژه كه در تاريخ 23/11 تا 28/11 انجام مي شه آپ ميكنم.

kernel
یک شنبه 17 بهمن 1389, 09:17 صبح
استاد که کد گرافیکی نمی خواست !!!!
یعنی باز حرفشو عوض کرده ؟؟؟؟؟ lol :متعجب:

xman_1365_x
یک شنبه 17 بهمن 1389, 13:02 عصر
استادتون خواسته يكمي به خودتون زحمت بدين (البته اگر ترم هاي بعد هم همين سوالو مطرح كنند ديگران لذتشو ميبرن:لبخند:)با اين كار با مباحث بيشتري آشنا ميشين كه نياز به آشنايي با مد صفحه،و وقفه هاي گرافيكي و رسم اشكال ساده و كمي پيچيده، چون فقط مي تونيد پيكسلي رو روشن و خاموش كنيد اگر براي داس نبود ميشد از opengl يا directx استفاده كرد.
اين سورس روال بازگشتي براي هانوي هست،گرافيكش هم كاري نداره كه چند تا خط راست به عنوان ميله و چند تا بيضي به عنوان حلقه رسم مي كنيد
كه بايد بدونيد توي هر قسمت چند تا حلقه داريد و توانايي انتقال خانه هاي ديگه رو داشته باشيد(اين كار با پاك كردن شكل قبل و رسم در مكان خواسته شده انجام ميشه) البته چند تا نكته داره مثلا اينكه وقتي چند تا حلقه داريم بايد بالاترين حلقه پاك و منتقل شه
http://fa.wikipedia.org/wiki/%D8%A8%D8%B1%D8%AC_%D9%87%D8%A7%D9%86%D9%88%DB%8C
http://en.wikipedia.org/wiki/Tower_of_Hanoi
http://www.labod.ir/algorithms/post.aspx?no=20

asadegha
دوشنبه 18 بهمن 1389, 13:03 عصر
استاد که کد گرافیکی نمی خواست !!!!
یعنی باز حرفشو عوض کرده ؟؟؟؟؟ lol :متعجب:

به ما كه شنبه باهاش كلاس داشتيم گفته بود گرافيكي ميخواد. واسه شما رو نميدونم.

asadegha
جمعه 22 بهمن 1389, 00:17 صبح
اصلا گرافیکو درس داد؟ سر کلاس نمیرفتم. نمیدونم. اگه درس نداد نمی خواد.

kernel
جمعه 22 بهمن 1389, 08:27 صبح
باهاش صحبت کردم گفت نمی خواد ! همون متنی نشون بده کافیه !

asadegha
شنبه 23 بهمن 1389, 10:41 صبح
خوب، بهتر. یکی به نفع شما.
اگه توضیحات خواستین واسه کد، بگین همینجا بزارم.