Μαθηματικά Προγραμματιστικά Προβλήματα

ALEX_

Πολύ δραστήριο μέλος

Ο ALEX_ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Μαθηματικός. Έχει γράψει 1,466 μηνύματα.
Λοιπόν το πρόβλημα είναι προγραμματιστικής φύσεως αλλά θεωρώ ότι ταιριάζει περισσότερο εδώ μιας και αφορά καθαρή μαθηματική σκέψη...

Ως γνωστόν για να κάνουμε ανταλλαγή τιμών (το λεγόμενο swap) ανάμεσα σε δύο μεταβλητές Α και Β,ο καθιερωμένος τρόπος είναι ο εξής:

C=A;
A=B;
B=C;

Το ερώτημα είναι...

Υπάρχει τρόπος να κάνουμε ανταλλαγή τιμών χωρίς τη χρήση βοηθητικής μεταβλητής?(της C δηλαδή)

Περιμένω τις απαντήσεις σας!:)
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Γιώργος

Τιμώμενο Μέλος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
Πρέπει να είναι σωστή η σκέψη μου.... Check it out :)
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

ALEX_

Πολύ δραστήριο μέλος

Ο ALEX_ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Μαθηματικός. Έχει γράψει 1,466 μηνύματα.

Subject to change

e-steki.gr Founder

Η Λία αυτή τη στιγμή δεν είναι συνδεδεμένη. Είναι 37 ετών και επαγγέλεται Web developer. Έχει γράψει 15,891 μηνύματα.
Έστειλα κι εγώ. :)
Άντε κάντε μια βόλτα και απο τη ΘΑ :)
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

ALEX_

Πολύ δραστήριο μέλος

Ο ALEX_ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Μαθηματικός. Έχει γράψει 1,466 μηνύματα.
Έστειλα κι εγώ. :)
Άντε κάντε μια βόλτα και απο τη ΘΑ :)

Σωστή και η Μισέλ!:clapup::clapup:

Υ.Γ.:Έβαλες κι άλλο?Πάω να δω!:)
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

ALEX_

Πολύ δραστήριο μέλος

Ο ALEX_ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Μαθηματικός. Έχει γράψει 1,466 μηνύματα.
Σωστό tralala!:clapup:
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

ALEX_

Πολύ δραστήριο μέλος

Ο ALEX_ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Μαθηματικός. Έχει γράψει 1,466 μηνύματα.
Ναι....

Σωστά μαντέψατε.....

Σωστή και η io-io....

:clapup::clapup::clapup:
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

io-io

Διάσημο μέλος

Η io-io αυτή τη στιγμή δεν είναι συνδεδεμένη. Επαγγέλεται Μαθηματικός. Έχει γράψει 2,878 μηνύματα.
:D:D:D:D


Λυσε τη θεωρια αριθμων της Μισελ τωρα!:D
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

ALEX_

Πολύ δραστήριο μέλος

Ο ALEX_ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Μαθηματικός. Έχει γράψει 1,466 μηνύματα.
:D:D:D:D


Λυσε τη θεωρια αριθμων της Μισελ τωρα!:D

Ομολογώ ότι ψιλοσκάλωσα εκεί....:(...και έχω ξαναλύσει τέτοια ρε γαμώτο...
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Bill

Επιφανές μέλος

Ο Bill αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 10,408 μηνύματα.
Λοιπόν το πρόβλημα είναι προγραμματιστικής φύσεως αλλά θεωρώ ότι ταιριάζει περισσότερο εδώ μιας και αφορά καθαρή μαθηματική σκέψη...

Ως γνωστόν για να κάνουμε ανταλλαγή τιμών (το λεγόμενο swap) ανάμεσα σε δύο μεταβλητές Α και Β,ο καθιερωμένος τρόπος είναι ο εξής:

C=A;
A=B;
B=C;

Το ερώτημα είναι...

Υπάρχει τρόπος να κάνουμε ανταλλαγή τιμών χωρίς τη χρήση βοηθητικής μεταβλητής?(της C δηλαδή)

Περιμένω τις απαντήσεις σας!:)

Καθαρά προγραμματιστικά με αυτό τον τρόπο(χωρίς χρήση του C) μπορεί να δημιουργηθούν προβλήματα πάντως.:P
Αν η λύση είναι αυτή που αφαιρούμε από το Α το Β και το αποθηκεύουμε στο Α κοκ.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Subject to change

e-steki.gr Founder

Η Λία αυτή τη στιγμή δεν είναι συνδεδεμένη. Είναι 37 ετών και επαγγέλεται Web developer. Έχει γράψει 15,891 μηνύματα.
Καθαρά προγραμματιστικά με αυτό τον τρόπο(χωρίς χρήση του C) μπορεί να δημιουργηθούν προβλήματα πάντως.:P
Αν η λύση είναι αυτή που αφαιρούμε από το Α το Β και το αποθηκεύουμε στο Α κοκ.
Ακριβώς. Διότι αν έχουμε πχ 2 μεταβλητές τύπου byte, που χωράει μέχρι 1 byte (στη Java), το να τους αθροίσουμε και να τους βάλουμε στη μια εκ των δύο, μπορεί να οδηγήσει σε overflow και να χάσουμε δεδομένα. Πχ το byte πάει μέχρι 255. Αν Α=130 και Β=150, τότε το να τους αθροίσουμε έχει αποτέλεσμα 280, που δεν "χωράει" σε μεταβλητή τύπου byte.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Archie

Νεοφερμένος

Ο Νικος αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Φοιτητής/τρια. Έχει γράψει 42 μηνύματα.
εστειλα κι εγω μια απαντηση με βαση τις γνωσεις λυκειου που εχω (δεν ειμαι φοιτητης ακομα σαν εσας:()

τελος παντων, περιμενω απαντηση
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

frappe

Νεοφερμένος

Ο frappe αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 36 μηνύματα.
Ακριβώς. Διότι αν έχουμε πχ 2 μεταβλητές τύπου byte, που χωράει μέχρι 1 byte (στη Java), το να τους αθροίσουμε και να τους βάλουμε στη μια εκ των δύο, μπορεί να οδηγήσει σε overflow και να χάσουμε δεδομένα. Πχ το byte πάει μέχρι 255. Αν Α=130 και Β=150, τότε το να τους αθροίσουμε έχει αποτέλεσμα 280, που δεν "χωράει" σε μεταβλητή τύπου byte.

Έχω την εντύπωση ότι δε χάνουμε δεδομένα εξαιτίας της υπερχείλισης.

Μάλλον εννοείς το ακόλουθο:
A = A+B
B = A-B
A = A-B

Πχ με τις αριθμητικές τιμές που δίνεις, μετά την εκτέλεση θα έχουμε
A = 130+150 = 280 => A = 24 λόγω υπερχείλισης
Β = 24-150 = -126 => Β=130 λόγω υπερχείλισης
Α = 24-130 = -106 => Α=150 λόγω υπερχείλισης

Θα προσπαθήσω να το αποδείξω χωρίς τη χρήση mod για να μην μπερδευτούμε..

Αρχικά Α=α, Β=β. Υποθέτουμε ότι α+β > 256

Α = Α+Β --> Το Α θα πάρει κανονικά την τιμή α+β αλλά λόγω υπερχείλισης γίνεται Α=α+β-256. Προς το παρόν το Β είναι ίσο με β
Β = Α-Β --> Υπολογίζω το Α-Β. Είναι ίσο με (α+β-256)-β = α-256. Αλλά λόγω υπερχείλισης το Β θα πάρει την τιμή α
Α = Α-Β --> Το Α-Β τώρα είναι ίσο με (α+β-256)-α = β-256. Λόγω υπερχείλισης το Α τελικά παίρνει την τιμή β

ΥΓ έστειλα κι εγώ μία απάντηση σε pm
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Τελευταία επεξεργασία:

Bill

Επιφανές μέλος

Ο Bill αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 10,408 μηνύματα.
Κι όμως έχεις δίκιο.Δεν το είχα προσέξει ποτέ.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

myle

Linux Geek

Ο myle αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 63 μηνύματα.
O frappe μπορεί να έχει δίκιο σε αυτό που λέει όμως δεν είναι γενική.
Μια πιο γενική λύση είναι με την χρήση xor ή με την χρήση & και | που υποκαθιστούν τις προσθαφαιρέσεις (όμως και πάλι δεν μπορείς να το εφαρμόσεις αυτό γενικά).
Τέλος, αν εφαρμοστεί η μέθοδος προσθαφαιρέσεων τότε μπορεί λόγω των στρογγυλοποιήσεων να εξαχθεί διαφορετικό αποτέλεσμα από το αναμενόμενο.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Franky5465

Νεοφερμένος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Πάτρα (Αχαΐα). Έχει γράψει 62 μηνύματα.
αν κατάλαβα καλά θέλουμε σε επίπεδο προγραμματισμού να κάνουμε swap μεταβλητών
σε python αυτό γίνεται α,β=β,α αμέσως
αν και δημιουργούνται ενδιάμεσα instances νομίζω
πάντως οι παραπάνω ιδέες είναι πράγματι πολύ ωραίες
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

myle

Linux Geek

Ο myle αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 63 μηνύματα.
Από το λίγο που έχω δει η python τα σπάει.[/off topic]
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

EpaRon

Εκκολαπτόμενο μέλος

Ο Νώντας αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Φοιτητής/τρια και μας γράφει απο Λευκάδα (Λευκάδα). Έχει γράψει 203 μηνύματα.
Στη σελίδα https://projecteuler.net/ μπορείτε να βρείτε ένα σωρό μαθηματικών προβλημάτων που υλοποιούνται σε pc με κλιμακούμενη δυσκολία. Από πολύ εύκολα, μέχρι και πολύ δύσκολα.
Επίσης στο κάθε πρόβλημα μπορείτε να δείτε και πόσα άτομα κατάφεραν να το λύσουν!
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Χρήστες Βρείτε παρόμοια

  • Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:
    Tα παρακάτω 0 μέλη διάβασαν αυτό το θέμα:
  • Φορτώνει...
Top