Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Θεωρία => Μήνυμα ξεκίνησε από: maria.k. στις 08 Σεπ 2009, 09:35:10 πμ

Τίτλος: αντιμεταθεση τιμων σε μεταβλητες
Αποστολή από: maria.k. στις 08 Σεπ 2009, 09:35:10 πμ
Καλημερα!!!
Είναι γνωστη ότι η αντιμετάθεση με χρήση μιασ επιπλέον προσωρινής μεταβλητής....
Αλλά χωρίς τη χρήση μεταβλητής???
Έχω βρεί κάτι που μου φαίνεται σωστό αλλά είναι???

Αν α και β οι μεταβλητές που θέλω να αντιμεταθέσω, τότε:
α <-  α - β
β <-  β + α
α <-  β - α

Πώς σας φαίνεται?
Τίτλος: Απ: αντιμεταθεση τιμων σε μεταβλητες
Αποστολή από: gpapargi στις 08 Σεπ 2009, 10:55:07 πμ
Έστω χ, ψ οι αρχικές τιμές των μεταβλητών α, β. Κάνε πίνακα τιμών συναρτήσει των χ, ψ και απέδειξε ότι όντως έτσι είναι. Μόνο που ισχύει για αριθμητικές μεταβλητές εφόσον οι τελεστές είναι αριθμητικοί.

Μπορεί να γίνει και με άλλους τρόπους. Πχ για διάφορους του μηδενός μπορείς να κάνεις (αν δε μου ξέφυγε κάτι):
α<-α/β
β<-β*α
α<-β/α

Το να βρεθούν όλοι οι τρόποι θυμίζει θεωρία ομάδων που παίζει με ιδιότητες πράξεων.
Τίτλος: Απ: αντιμεταθεση τιμων σε μεταβλητες
Αποστολή από: Σπύρος Δουκάκης στις 08 Σεπ 2009, 11:39:52 πμ
Να επισημάνουμε ότι ο τρόπος αυτός μπορεί να αξιοποηθεί μόνο σε αριθμητικές μεταβλητές.

ΣΔ
Τίτλος: Απ: αντιμεταθεση τιμων σε μεταβλητες
Αποστολή από: za√‘ag στις 08 Σεπ 2009, 01:46:22 μμ
Το γνωστό swap γίνεται και με 2 εντολές αλλά σε assembly .... Θα το βρω και θα το γράψω (δεν είμαι σίγουρος αν τις θυμάμαι σωστά)
Τίτλος: Απ: αντιμεταθεση τιμων σε μεταβλητες
Αποστολή από: alkisg στις 08 Σεπ 2009, 01:59:25 μμ
Το γνωστό swap γίνεται και με 2 εντολές αλλά σε assembly .... Θα το βρω και θα το γράψω (δεν είμαι σίγουρος αν τις θυμάμαι σωστά)

http://pdos.csail.mit.edu/6.828/2008/readings/i386/XCHG.htm
π.χ. xchg ax, bx

==> μία εντολή. :)

Το βασικό είναι ότι σε επίπεδο μηχανής (όχι assembly) πάλι η εναλλαγή δεδομένων περιλαμβάνει 3 θέσεις (βασικά πολύ περισσότερες, αλλά τέλος πάντων). Ας μείνουμε στη θεωρία, γιατί στην πράξη γίνεται χαμός... :D
Τίτλος: Απ: αντιμεταθεση τιμων σε μεταβλητες
Αποστολή από: za√‘ag στις 08 Σεπ 2009, 03:22:43 μμ
Σε 80286 μιλούσα ...   

XOR AX, BX
XOR BX, AX

τέλος πάντων ...  :)
Τίτλος: Απ: αντιμεταθεση τιμων σε μεταβλητες
Αποστολή από: alkisg στις 08 Σεπ 2009, 03:38:50 μμ
Ναι η xchg υπάρχει από εποχής 8086/8088, απλά παρέθεσα το πρώτο link που βρήκα στο google. Να ένα άλλο για 8086: http://www.packetstormsecurity.org/programming-tutorials/Assembly/opcode.html

Δεν νομίζω όμως ότι έχει σημασία η assembly... κάποιος μπορεί κάλλιστα να φτιάξει έναν επεξεργαστή που να έχει ενσωματωμένη εντολή bubblesort! :P :D
Τίτλος: Απ: αντιμεταθεση τιμων σε μεταβλητες
Αποστολή από: P.Tsiotakis στις 08 Σεπ 2009, 03:43:28 μμ
Ναι, Μαρία πρόσεξε αυτό που έγραψε ο Σπύρος