xakerdo7 Δημοσ. 3 Απριλίου 2009 Δημοσ. 3 Απριλίου 2009 πως μπορω να φτιαξω το προγραμμα της φυσαλιδας με ενεργειες που δεν χρειαζονται???δηλ. οταν εχει γινει η ταξινομηση απο το 4ο ,5ο περασμα να σταματαει και να μην κανει την ιδια διαδικασια μεχρι το τελος. και πως μπορω επισης να ανταλλαξω τις τιμες 2 μεταβλητων χωρις την χρησιμοποιηση τριτης,πως μπορω να αλλαξω το παρακατω δηλ. { int temp=b; b=b[i+1]; b[i+1]=temp; }
chex Δημοσ. 3 Απριλίου 2009 Δημοσ. 3 Απριλίου 2009 καταρχην σε τι γλωσσα προγρμματισμου χρησιμοποιεις.(αν και δε παιζει ρολο). απλα για να εχω μια εικονα. δευτερον γιατι δεν 8ες να χρεισιμοποιησεις τριτη μεταβλητη. Αυτη η μεθοδος ειναι η βασικη μεθοδος μεταφορας. αν δεν κανω λαθος δεν παιζει αλλη. δεν καταλαβαινω για ποιο λογο μπορει να θες να σταματαει η διαδικασι πριν τελειωσει ολοτον ελεγχο. anyway με break δοκιμασες? βοηθησε με λιγο και τα ξαναλεμε!
bxenos Δημοσ. 3 Απριλίου 2009 Δημοσ. 3 Απριλίου 2009 πως μπορω επισης να ανταλλαξω τις τιμες 2 μεταβλητων χωρις την χρησιμοποιηση τριτης αν και δεν βλέπω το λόγο... η 1η λύση είναι: > void swap(int *x,int *y){ *x ^= *y; *y ^= *x; *x ^= *y; }
parsifal Δημοσ. 3 Απριλίου 2009 Δημοσ. 3 Απριλίου 2009 ...και πως μπορω επισης να ανταλλαξω τις τιμες 2 μεταβλητων χωρις την χρησιμοποιηση τριτης Γίνεται, αλλά πλην της μνήμης που δεσμεύει η temp μεταβλητή δεν έχεις κάποιο κέρδος σε αριθμό εντολών. Πάλι 3 εντολές χρειάζεσαι: >a -= b; b += a; a = b - a;
bxenos Δημοσ. 3 Απριλίου 2009 Δημοσ. 3 Απριλίου 2009 2η λύση > void swap(int *x,int *y){ *x=*x+*y; *y=*x-*y; *x=*x-*y; } ---------- Το μήνυμα προστέθηκε στις 02:16 ---------- πως μπορω να φτιαξω το προγραμμα της φυσαλιδας με ενεργειες που δεν χρειαζονται???δηλ. οταν εχει γινει η ταξινομηση απο το 4ο ,5ο περασμα να σταματαει και να μην κανει την ιδια διαδικασια μεχρι το τελος. μέτρα πόσες αντιμεταθέσεις έκανες. Αν ήταν 0, τελείωσες.
ippo00 Δημοσ. 3 Απριλίου 2009 Δημοσ. 3 Απριλίου 2009 Πάντως άμα οι δυο μεταβλητές είναι κάτω από maxint/2 μπορείς να το λύσεις με 16 bit shifts. Τέσπα το xor swap είναι το μόνο που δουλεύει κανονικά. (αλά και πάλι είναι χειρότερο από temp μεταβλητή) αν π.χ το a == minint και το b == maxint έχει πρόβλημα η λύση με την αφαίρεση
parsifal Δημοσ. 3 Απριλίου 2009 Δημοσ. 3 Απριλίου 2009 Ναι, καλή επισήμανση. Η 1η λύση που έδωσε ο bxenos θα παίξει σε όλες τις περιπτώσεις.
GrandGamer Δημοσ. 3 Απριλίου 2009 Δημοσ. 3 Απριλίου 2009 Ναι η xor είναι σίγουρα σωστή αλλά και η προσθαφαίρεση δεν μου φένεται να έχει πρόβλημα. Καλή η προσθαφαίρεση, δεν το είχα σκεφτεί ποτέ.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.