Τώρα είναι Πέμ 28 Μαρ 2024 11:55 am

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 5 Δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
 Θέμα δημοσίευσης: Μαγική Αντιμετάθεση
ΔημοσίευσηΔημοσιεύτηκε: Σάβ 08 Οκτ 2005 09:05 pm 
Χωρίς σύνδεση
Διαχειριστής

Εγγραφή: Παρ 28 Φεβ 2003 06:10 pm
Δημοσιεύσεις: 84
Syntax: [ Download ] [ Hide ]
! ------------------------------------------------
! Σπαζοκεφαλιά: Να γίνει πρόγραμμα το οποίο θα
! αντιμεταθέτει τις τιμές 2 αριθμητικών μεταβλητών
! χωρίς να χρησιμοποιεί τρίτη βοηθητική μεταβλητή!
! ------------------------------------------------


ΠΡΟΓΡΑΜΜΑ Μαγική_αντιμετάθεση

ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β

ΑΡΧΗ

  ΓΡΑΨΕ 'Δώσε τιμή στη μεταβλητή Α:'
  ΔΙΑΒΑΣΕ Α

  ΓΡΑΨΕ 'Δώσε τιμή στη μεταβλητή Β:'
  ΔΙΑΒΑΣΕ Β

  ΓΡΑΨΕ '...Αντιμετάθεση...'

  Α <-- Α + Β
  Β <-- Α - Β
  Α <-- Α - Β

  ΓΡΑΨΕ 'Η μεταβλητή Α περιέχει τώρα την τιμή:', Α
  ΓΡΑΨΕ 'Η μεταβλητή Β περιέχει τώρα την τιμή:', Β

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Μαγική_αντιμετάθεση

 


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης:
ΔημοσίευσηΔημοσιεύτηκε: Σάβ 14 Οκτ 2006 12:46 pm 
Πολυ καλο,δεν ειδα την απαντηση και με παιδεψε πολυ.


Κορυφή
  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης:
ΔημοσίευσηΔημοσιεύτηκε: Παρ 19 Ιαν 2007 11:46 pm 
Χωρίς σύνδεση

Εγγραφή: Κυρ 14 Ιαν 2007 03:43 pm
Δημοσιεύσεις: 18
Τοποθεσία: Κομοτηνή
Βέβαια, να πούμε ότι υπάρχει πρόβλημα με υπερχύλιση. Είναι μία ενδιαφέρουσα λύση, αλλά το κοινό swap είναι καλύτερο:) Επειδή είναι προχωρημένο θέμα δεν θα πω κάτι για την υπερχύλιση (εκτός κι αν ενδιαφέρεται κάποιος).

Και μία ακόμα λύση χωρίς προσωρινή μεταβλητή:

Syntax: [ Download ] [ Hide ]
α <-- β*α;
β <-- α/β;
α <-- α/β;
 


Βέβαια, εδώ η πιθανότητα υπερχύλισης είναι ακόμα μεγαλύτερη και υπάρχει και το επιπλέον πρόβλημα του ότι τα α και β δεν μπορούν να είναι 0. Για το β είναι προφανές. Για το α γιατί δεν πρέπει; :)


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης:
ΔημοσίευσηΔημοσιεύτηκε: Σάβ 20 Ιαν 2007 02:10 pm 
Χωρίς σύνδεση

Εγγραφή: Κυρ 24 Δεκ 2006 05:34 pm
Δημοσιεύσεις: 10
Τοποθεσία: Πειραιας
Το α δεν πρεπει να είναι 0 διοτι στο
Syntax: [ Download ] [ Hide ]
α <-- α/β
το β το εχει γινει 0. Επισής μπορεις να πεις γιατι εχει πρόβλημα με υπερχείληση, διότι στο σχόλειο μάθαμε οτι υπερχείληση συμυβαίνει σε στοίβα ή ουρά και δεν βλέπω ούτε καν πίνακα ,οχι στοίβα ή ουρά. :?:


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης:
ΔημοσίευσηΔημοσιεύτηκε: Κυρ 21 Ιαν 2007 01:29 am 
Χωρίς σύνδεση

Εγγραφή: Κυρ 14 Ιαν 2007 03:43 pm
Δημοσιεύσεις: 18
Τοποθεσία: Κομοτηνή
buluba89 πολύ σωστή η απάντηση σου για το 0!!

Για την υπερχείληση:

Όπως, σωστά, είπες η υπερχείληση συμβαίνει (και) σε πίνακες. Εκεί έχουμε υπερχείληση όταν προσθέτεις παραπάνω στοιχεία από αυτά που χωράει ο πίνακας. Κάτι ανάλογο συμβαίνει και στους ακεραίους.

Για να αποθηκευτεί ένας ακέραιος (όπως και κάθε άλλη μεταβλητή), χρησιμοποιούνται κάποια bytes. Σε αρκετές γλώσσες αυτά είναι 4, δηλαδή 32 bits. Για απλότητα θα θεωρήσω ότι χρησιμοποιούνται 3 bits. Αυτό σημαίνει ότι μπορεί να αναπαραστήσει 2^3 αριθμούς, δηλαδή 8 αριθμούς, από το 0 μέχρι το 7.

Τώρα σχεφτείτε ότι όταν γίνεται πρόσθεση στον υπολογιστή, είναι σαν να έκανες πρόσθεση σε ένα ρολόι. (Δείτε εδώ: http://www.csd.uoc.gr/~hy120/03f/fig06/1.wrap.gif) Δηλαδή, αν σε ένα κανονικό αναλογικό ρολόι προσθέσεις δύο ώρες στις 11 η ώρα, τότε θα πας στη 1. Έτσι, και τους υπολογιστές, αν στο 7 προσθέσεις 1 τότε θα πας στο 0. Σε αυτή την περίπτωση έχουμε υπερχείληση.

Δείτε και το θέμα "Μαγική πρόσθεση" στην κατηγορία "Γενικά"


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
Τελευταίες δημοσιεύσεις:  Ταξινόμηση ανά  
Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 5 Δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 5 επισκέπτες


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επισυνάπτετε αρχεία σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
cron
Προβολές: