αντιμεταθεση τιμων σε μεταβλητες

Ξεκίνησε από maria.k., 08 Σεπ 2009, 09:35:10 ΠΜ

« προηγούμενο - επόμενο »

maria.k.

Καλημερα!!!
Είναι γνωστη ότι η αντιμετάθεση με χρήση μιασ επιπλέον προσωρινής μεταβλητής....
Αλλά χωρίς τη χρήση μεταβλητής???
Έχω βρεί κάτι που μου φαίνεται σωστό αλλά είναι???

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

Πώς σας φαίνεται?

gpapargi

Έστω χ, ψ οι αρχικές τιμές των μεταβλητών α, β. Κάνε πίνακα τιμών συναρτήσει των χ, ψ και απέδειξε ότι όντως έτσι είναι. Μόνο που ισχύει για αριθμητικές μεταβλητές εφόσον οι τελεστές είναι αριθμητικοί.

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

Το να βρεθούν όλοι οι τρόποι θυμίζει θεωρία ομάδων που παίζει με ιδιότητες πράξεων.

Σπύρος Δουκάκης

Να επισημάνουμε ότι ο τρόπος αυτός μπορεί να αξιοποηθεί μόνο σε αριθμητικές μεταβλητές.

ΣΔ

za√‘ag

Το γνωστό swap γίνεται και με 2 εντολές αλλά σε assembly .... Θα το βρω και θα το γράψω (δεν είμαι σίγουρος αν τις θυμάμαι σωστά)
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

Παράθεση από: zavag στις 08 Σεπ 2009, 01:46:22 ΜΜ
Το γνωστό swap γίνεται και με 2 εντολές αλλά σε assembly .... Θα το βρω και θα το γράψω (δεν είμαι σίγουρος αν τις θυμάμαι σωστά)

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

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

Το βασικό είναι ότι σε επίπεδο μηχανής (όχι assembly) πάλι η εναλλαγή δεδομένων περιλαμβάνει 3 θέσεις (βασικά πολύ περισσότερες, αλλά τέλος πάντων). Ας μείνουμε στη θεωρία, γιατί στην πράξη γίνεται χαμός... :D

za√‘ag

Σε 80286 μιλούσα ...   

XOR AX, BX
XOR BX, AX

τέλος πάντων ...  :)
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

Ναι η xchg υπάρχει από εποχής 8086/8088, απλά παρέθεσα το πρώτο link που βρήκα στο google. Να ένα άλλο για 8086: http://www.packetstormsecurity.org/programming-tutorials/Assembly/opcode.html

Δεν νομίζω όμως ότι έχει σημασία η assembly... κάποιος μπορεί κάλλιστα να φτιάξει έναν επεξεργαστή που να έχει ενσωματωμένη εντολή bubblesort! :P :D

P.Tsiotakis

Ναι, Μαρία πρόσεξε αυτό που έγραψε ο Σπύρος