![]() |
![]() |
|
|||||||
| ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ansi C,C++,Java,ASP,PHP,VB,.NET και οποιαδήποτε άλλη τεχνολογία σας ενδιαφέρει. Για αρχάριους αλλά και προχωρημένους... |
![]() |
|
|
Thread Tools |
|
|
#1 |
|
Junior Member
Join Date: Feb 2006
Age: 25
Posts: 16
|
ΠΥΡΓΟΙ ΤΟΥ ΑΝΟΙ
Hi! Μπορει καποιος να μου εξηγησει πωσ δουλευουν αυτα τα προγραμμα σχετικα με τους πυργους του ανόι?
/* Start post is post 0. */ /* If # posts even, then final post is post 1, else is post 2 */ #include <stdio.h> #include <stdlib.h> void main(void) { int n, x; printf( "How many disks? " ); scanf( "%d", &n ); puts( "\n\n" ); for (x=1; x < (1 << n); x++) printf( "move from pole %i to pole %i.\n", (x&x-1)%3, ((x|x-1)+1)%3 ); } Πρόγραμμα 2: /* Start post is post 0. */ /* If # posts even, then final post is post 1, else is post 2 */ #include <stdio.h> #include <stdlib.h> int main(void) { int n, x, to, fr; unsigned int i, j; printf( "How many disks? " ); scanf( "%d", &n ); puts( "\n\n" ); for (x=1; x < (1 << n); x++) { i=x&x-1; fr=(i+i/3)&3; i=(x|x-1)+1; to=(i+i/3)&3; for(i=x, j=1; ; i>>=1, j++) { if(i&1) break; } printf( "move disc %i from %i to %i\n", j, fr, to ); } } please αν ξερει καποιος ας βοηθησει μια ασχετη φοιτητρια! |
|
|
|
|
|
#2 |
|
Technical Administrator
Join Date: Apr 2004
Location: 127.0.0.1
Age: 32
Posts: 2,307
|
Ρίξε μια ματια εδω http://en.wikipedia.org/wiki/Towers_of_Hanoi εχει και animations Που θα σε βοηθησουν να το καταλαβεις.
|
|
|
|
|
|
#3 |
|
Junior Member
Join Date: Feb 2006
Age: 25
Posts: 16
|
Hi!και ευχάριστο για την απάντηση αλλα δεν με βοηθησε ιδιαιτερα γιατί εγώ θέλω να καταλάβω πως δουλεύουν τα προγράμματα και ιδιαιτερα στο τέλος και ποια είναι η διαφορα τους!λίγο καθυστερημένα η απάντηση αλλα είχα διάβασμα sorry!εξεταστική βλέπεις!!!και πάλι ευχάριστο!
|
|
|
|
|
|
#4 | |
|
Eminent Member
Join Date: Jan 2005
Location: Athens
Age: 37
Posts: 925
|
Quote:
__________________
I love deadlines. I like the whooshing sound they make as they fly by.
-- Douglas Adams |
|
|
|
|
|
|
#5 |
|
Junior Member
Join Date: Feb 2006
Age: 25
Posts: 16
|
στις δυο τελευταίες γραμμές του προτού που κάνει πράξεις με bit και στις 5 τελευταίες του δευτερου!!
|
|
|
|
|
|
#6 |
|
Eminent Member
Join Date: Jan 2005
Location: Athens
Age: 37
Posts: 925
|
Code:
for (x=1; x < (1 << n); x++)
printf( "move from pole %i to pole %i.\n", (x&x-1)%3, ((x|x-1)+1)%3 );
x&x-1 σημαίνει bitwise AND μεταξύ του x και του x-1 (πχ αν x=3 (ή 11(b)) τότε x&x-1 = 3&2(ή 11(b)&10(b)) = 2 (ή 10(b))) x|x-1 σημαίνει bitwise OR μεταξύ του x και του x-1 (πχ αν x=3 (ή 11(b)) τότε x|x-1 = 3 (ή 11(b))) ομοίως με παραπάνω. Στο δεύτερο πρόγραμμα τα ίδια ακριβώς γίνονται με άλλη σειρά (πρώτα ο υπολογισμός και μετά η εκτύπωση). Αυτή η γραμμή υπολογίζει ποιος δίσκος μετακινείται: Code:
for(i=x, j=1; ; i>>=1, j++) { if(i&1) break; }
__________________
I love deadlines. I like the whooshing sound they make as they fly by.
-- Douglas Adams |
|
|
|
|
|
#7 |
|
Junior Member
Join Date: Feb 2006
Age: 25
Posts: 16
|
ευχάριστο πολύ για την βοήθεια!η καλύτερα χίλια ευχάριστο γιατί ήταν ακριβώς αυτά που ήθελα για την εργασία μου!
|
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
|
|