Γεια σας φίλοι του ΣτΠ. Στο βιβλίο σελ.44 ξεκινάει το θέμα "Πολλαπλασιασμός αλά Ρώσικα" και λέει (σελ.45) : "Ωστόσο, η πράξη του πολλαπλασιασμού δεν εκτελείται από τον υπολογιστή με τον τρόπο αυτό. Πιο συγκεκριμένα, ο χρησιμοποιούμενος τρόπος είναι ο λεγόμενος πολλαπλασιασμός αλά ρωσικά. Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί (μεγαλύτεροι του μηδενός), αλλά η μέθοδος μπορεί εύκολα να μετατραπεί, ώστε να περιγράψει και την περίπτωση των αρνητικών ακεραίων."
Αν γίνεται αυτή η μετατροπη να εκφραστεί σε αλγόριθμο για να καλύψουμε και αυτή τη περίπτωση .
Εκ προοιμίου σας ευχαριστώ
Υποθέτω εφαρμόζεις τον αλγόριθμο κανονικά (για τις απόλυτες τιμές των αριθμών) και στο τέλος, ανάλογα με τα πρόσημα των αριθμών που πολ/σιάζεις καθορίζεις και το πρόσημο του αποτελέσματος.
Ο αλγόριθμος του σχ. βιβλίου αναφέρεται σε θετικούς ακέραιους. Τι συνθήκες πρεπει να έχουμε στην γενικότερη περίπτωση ακεραίων; (μαζί και αρνητκών δηλαδή).
Θα προσθέσεις τις εξής εντολές:
Διάβασε χ, ψ ! που μπορεί να είναι και ομόσημοι και ετερόσημοι.
α <- Α_Τ(χ)
β <- Α_Τ(ψ)
! κάνεις πολ/σμό Αλά Ρώσικα με τις α και β μεταβλητές και στο τέλος
Αν χ * ψ >0 τότε ! ομόσημοι
Εμφάνισε αποτέλεσμα
Αλλιώς ! ετερόσημοι
Εμφάνισε - αποτέλεσμα
Τέλος_αν
ε, εντάξει, επειδή είναι λίγο ειρωνεία να παλεύουμε τόση ώρα για να βρούμε το γινόμενο χ*ψ με πολ/σμό αλά ρωσικά και στο τέλος να λέμε
"Αν χ*ψ >0 " (δηλ. να χρησιμοποιούμε έτοιμο το γινόμενο για να βρούμε το πρόσημό του)
θα προτιμούσα τις στοιχειώδεις συγκρίσεις με το μηδέν
Αν (χ<0 και ψ>0) ή (χ>0 και ψ<0) τότε
αποτέλεσμα <- - αποτέλεσμα
τέλος_αν
Ναι έχεις απόλυτο δίκαιο. Δε μου πέρασε καθόλου από το μυαλό.
Διορθώνω
Παράθεση από: gthal στις 31 Ιαν 2013, 02:51:58 ΠΜ
Αν (χ<0 και ψ>0) ή (χ>0 και ψ<0) τότε
αποτέλεσμα <- - αποτέλεσμα
τέλος_αν
Παράθεση από: gthal στις 31 Ιαν 2013, 02:51:58 ΠΜ
ε, εντάξει, επειδή είναι λίγο ειρωνεία να παλεύουμε τόση ώρα για να βρούμε το γινόμενο χ*ψ με πολ/σμό αλά ρωσικά και στο τέλος να λέμε
"Αν χ*ψ >0 " (δηλ. να χρησιμοποιούμε έτοιμο το γινόμενο για να βρούμε το πρόσημό του)
θα προτιμούσα τις στοιχειώδεις συγκρίσεις με το μηδέν
Αν (χ<0 και ψ>0) ή (χ>0 και ψ<0) τότε
αποτέλεσμα <- - αποτέλεσμα
τέλος_αν
και γιατι να μην το ελεγξεις ως εξης?
ΑΝ X/Y>0 ...κτλ κτλ (δεν χρησιμοποιεις το γινομενο αλλα διαιρεση) ;) ;) ;)
Αν και το σχολικό αναφέρει ότι "Χωρίς βλάβη της γενικότητας θεωρούμε ότι οι ακέραιοι είναι θετικοί", ωστόσο η μέθοδος του πολ/σμού αλά ρωσικά δουλεύει και για Υ = 0, ενώ η διαίρεση Χ/Υ όχι. Μια άλλη λύση θα ήταν
ΑΝ Χ < 0 ΤΟΤΕ
αποτέλεσμα <- - αποτέλεσμα
ΤΕΛΟΣ_ΑΝ
ΑΝ Υ < 0 ΤΟΤΕ
αποτέλεσμα <- - αποτέλεσμα
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ αποτέλεσμα