Αποστολέας Θέμα: αντιμεταθεση τιμων σε μεταβλητες  (Αναγνώστηκε 3364 φορές)

maria.k.

  • Θαμώνας
  • ***
  • Μηνύματα: 34
αντιμεταθεση τιμων σε μεταβλητες
« στις: 08 Σεπ 2009, 09:35:10 πμ »
Καλημερα!!!
Είναι γνωστη ότι η αντιμετάθεση με χρήση μιασ επιπλέον προσωρινής μεταβλητής....
Αλλά χωρίς τη χρήση μεταβλητής???
Έχω βρεί κάτι που μου φαίνεται σωστό αλλά είναι???

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

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

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2457
  • I 'm not young enough to know everything
Απ: αντιμεταθεση τιμων σε μεταβλητες
« Απάντηση #1 στις: 08 Σεπ 2009, 10:55:07 πμ »
Έστω χ, ψ οι αρχικές τιμές των μεταβλητών α, β. Κάνε πίνακα τιμών συναρτήσει των χ, ψ και απέδειξε ότι όντως έτσι είναι. Μόνο που ισχύει για αριθμητικές μεταβλητές εφόσον οι τελεστές είναι αριθμητικοί.

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

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

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

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 831
  • Έτερος εξ ετέρου σοφός, το τε πάλαι το τε νυν
    • http://sdoukakis.wordpress.com/
Απ: αντιμεταθεση τιμων σε μεταβλητες
« Απάντηση #2 στις: 08 Σεπ 2009, 11:39:52 πμ »
Να επισημάνουμε ότι ο τρόπος αυτός μπορεί να αξιοποηθεί μόνο σε αριθμητικές μεταβλητές.

ΣΔ

za√‘ag

  • Μάχιμος ... ΟΧΙ ... κοπρίτης
  • Δεινόσαυρος
  • *****
  • Μηνύματα: 850
  • Παλιά λεγόμασταν ΔΟΥΛΟΙ. Σήμερα ... ΕΡΓΑΖΟΜΕΝΟΙ
    • Το Blog μου
Απ: αντιμεταθεση τιμων σε μεταβλητες
« Απάντηση #3 στις: 08 Σεπ 2009, 01:46:22 μμ »
Το γνωστό swap γίνεται και με 2 εντολές αλλά σε assembly .... Θα το βρω και θα το γράψω (δεν είμαι σίγουρος αν τις θυμάμαι σωστά)
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5796
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: αντιμεταθεση τιμων σε μεταβλητες
« Απάντηση #4 στις: 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

  • Μάχιμος ... ΟΧΙ ... κοπρίτης
  • Δεινόσαυρος
  • *****
  • Μηνύματα: 850
  • Παλιά λεγόμασταν ΔΟΥΛΟΙ. Σήμερα ... ΕΡΓΑΖΟΜΕΝΟΙ
    • Το Blog μου
Απ: αντιμεταθεση τιμων σε μεταβλητες
« Απάντηση #5 στις: 08 Σεπ 2009, 03:22:43 μμ »
Σε 80286 μιλούσα ...   

XOR AX, BX
XOR BX, AX

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

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5796
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: αντιμεταθεση τιμων σε μεταβλητες
« Απάντηση #6 στις: 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

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3310
  • agent romanoff you miss me?
    • P.Tsiotakis
Απ: αντιμεταθεση τιμων σε μεταβλητες
« Απάντηση #7 στις: 08 Σεπ 2009, 03:43:28 μμ »
Ναι, Μαρία πρόσεξε αυτό που έγραψε ο Σπύρος