Ακρίβεια δεκαδικών ψηφιων

Ξεκίνησε από DimisLz, 24 Απρ 2020, 10:17:40 ΠΜ

« προηγούμενο - επόμενο »

DimisLz

Καλημέρα παιδια
Έχω συναντήσει σε ασκήσεις όπου κατά την εισαγωγή των δεδομένων αναφέρεται κάτι του στυλ : θα εισάγεται από το πληκτρολόγιο ένα αριθμός πχ το ύψος με ακρίβεια 2 δεκαδικών αριθμών και το βάρος με ακρίβεια 3 δεκαδικών.
Αυτό πως μπορούμε να το ελέγξουμε, δηλαδή ο χρήστης να βάζει τιμές με την επιθυμητή ακρίβεια. Θα είναι κάτι με DIV MOV ή μήπως θεωρείται δεδομένη η ακρίβεια των δεκαδικών ψηφίων και δεν χρειάζεται έλεγχο εγκυρότητας
Ευχαριστώ

P.Tsiotakis

Οι τελεστές div/mod δεν ορίζονται για πραγματικούς αλλά μόνο για ακεραίους.

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

DimisLz

Ευχαριστώ πολύ για την απάντηση. Δηλαδή σε έλεγχο εγκυρότητας θα μπορούσε να ζητηθεί κάτι τέτοιο ; Δηλαδή να διαβάζει μια τιμή μέχρις ότου αυτή η τιμή να έχει ακρίβεια x δεκαδικών; Το έχω δει σε άσκηση για αυτό ρωτάω

alkisg

Προτείνω να μην χρησιμοποιούμε ασκήσεις με ψηφία πραγματικών αριθμών στην μέση εκπαίδευση.
Για παράδειγμα, το 3.14 μπορεί εσωτερικά να αναπαριστάται ως 3.1399999999999999
και το 1.00 μπορεί να είναι η στρογγυλοποίηση του 0.99999999999999.

Έτσι το ακέραιο μέρος, ο υπολογισμός του πλήθος των ψηφίων κλπ μπορεί να βγει εντελώς λάθος.

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

P.Tsiotakis

Παράθεση από: DimisLz στις 24 Απρ 2020, 11:40:13 ΠΜ
Ευχαριστώ πολύ για την απάντηση. Δηλαδή σε έλεγχο εγκυρότητας θα μπορούσε να ζητηθεί κάτι τέτοιο ; Δηλαδή να διαβάζει μια τιμή μέχρις ότου αυτή η τιμή να έχει ακρίβεια x δεκαδικών; Το έχω δει σε άσκηση για αυτό ρωτάω

προσωπικά δεν θεωρώ αυτό το ερώτημα ως ένα καλό παράδειγμα αλγοριθμικής σκέψης ή ως ερώτημα στο θέμα Γ.
προφανώς μετά από 20 έτη εξέτασης μπορεί να προκύψει σε μία διαδικασία εισόδου και ελέγχου δεδομένων.

θα το προτιμούσα σε μία άσκηση συμπλήρωσης κενού

Καρκαμάνης Γεώργιος

Παράθεση από: DimisLz στις 24 Απρ 2020, 10:17:40 ΠΜ
Καλημέρα παιδια
Έχω συναντήσει σε ασκήσεις όπου κατά την εισαγωγή των δεδομένων αναφέρεται κάτι του στυλ : θα εισάγεται από το πληκτρολόγιο ένα αριθμός πχ το ύψος με ακρίβεια 2 δεκαδικών αριθμών και το βάρος με ακρίβεια 3 δεκαδικών.
Ευχαριστώ

Η πληροφορία αυτή δίνεται για να καταλάβει αυτός που θα λύσει την άσκηση (μαθήτης καθηγητής) τον τύπο της μεταβλητής που θα χρησιμοποιήσει για να αποθηκεύσει  πχ στο παραδεγιμά σου, η μεταβλητή ύψος που αναφέρεις πρέπει να δηλωθεί ως πραγματική.


Παράθεση από: DimisLz στις 24 Απρ 2020, 10:17:40 ΠΜ

Αυτό πως μπορούμε να το ελέγξουμε, δηλαδή ο χρήστης να βάζει τιμές με την επιθυμητή ακρίβεια. Θα είναι κάτι με DIV MOV ή μήπως θεωρείται δεδομένη η ακρίβεια των δεκαδικών ψηφίων και δεν χρειάζεται έλεγχο εγκυρότητας
Ευχαριστώ
Αυτό δεν χρειάζεται να ελεγχθεί κατά την αποψή μου, Ο οποιοσδήποτε έλεγχος δεδομένων εισόδου ΄όταν θα ζητείται θα περιγράφεται αναλυτικά σε κάθε εκφώνηση


George Eco

Παράθεση από: DimisLz στις 24 Απρ 2020, 10:17:40 ΠΜ
Καλημέρα παιδια
Έχω συναντήσει σε ασκήσεις όπου κατά την εισαγωγή των δεδομένων αναφέρεται κάτι του στυλ : θα εισάγεται από το πληκτρολόγιο ένα αριθμός πχ το ύψος με ακρίβεια 2 δεκαδικών αριθμών και το βάρος με ακρίβεια 3 δεκαδικών.
Αυτό πως μπορούμε να το ελέγξουμε, δηλαδή ο χρήστης να βάζει τιμές με την επιθυμητή ακρίβεια. Θα είναι κάτι με DIV MOV ή μήπως θεωρείται δεδομένη η ακρίβεια των δεκαδικών ψηφίων και δεν χρειάζεται έλεγχο εγκυρότητας
Ευχαριστώ

Δε θα ζητηθεί να το έλεγξεις αυτό. Συνήθως αυτό δίνει το πλαίσιο ακριβείας κι υπονοεί τον τύπο μεταβλητής.
Οπότε σου λέει πως έχεις το πολύ τρία δεκαδικά ψηφία να ελέγξεις. Μπορεί να πρέπει για παράδειγμα, σε άλλο σημείο της άσκησης να πρέπει να τσεκάρεις διαστήματα και να σου χρειάζεται η μεγαλύτερη ακρίβεια που πρέπει να λάβεις υπ' όψιν. Στο περιορίζει σε τρία δεκαδικά. Αλλιώς θα είχαμε χοντρά προβλήματα με άπειρη ακρίβεια.

Ωστόσο σε θέμα Γ ή Δ, αν στην ΕΙΣΟΔΟ δεδομένων σου βάλει αυτό, πόσες μονάδες θα πρέπει να σου το βαθμολογήσει; Με πόσο το βαθμολογείς εσύ αυτό; Δε μπορεί να βάλει πολλές, διότι δε θα σου μείνουν μετά αρκετές μονάδες να ζητήσει ουσιαστικά πράγματα οπότε κι αναλώνει το θέμα για να εξετάσει έναν έλεγχο εγκυρότητας στην είσοδο δεδομένων, αντί να εξετάσεις πιο ουσιώδη πράγματα;
Δύσκολο το βρίσκω να πέσει, σε Γ ή Δ, συμφωνώ με τους προλαλήσαντες, διότι αν βαθμολογηθεί δίκαια με πολλές μονάδες, διαλύει το θέμα ή θα βαθμολογηθούν αδίκως χαμηλά, δυσκολότερα κομμάτια του στη συνέχεια. Ο έλεγχος εγκυρότητας συν τα όσα εξετάζονται σε αυτόν, όπως το θέτεις, μπορούν να καλυφθούν από τα θέματα Α και Β. Η δεύτερη περίπτωση είναι να το βαθμολογήσεις άδικα με 2 ή 1 μονάδες μόνο. Ε οκ, σκασίλα των μαθητών κιόλας σε αυτή τη περίπτωση! Για ΜΟΝΟ 2 μονάδες τόσος ντόρος, να χάσω πολύτιμο χρόνο; Δεν ασχολούμαι καν! Έτσι θα πει ένας μαθητής, δε θα ρισκάρει για 2%. Οπότε από όποια οπτική γωνία και να το δεις, δεν είναι καλό ζητούμενο σε θέμα Γ ή Δ.

Αλλά σε περίπτωση που πας για το 100/100 (γεγονός που θέλω για κάθε μαθητή και μαθήτρια) και σε περίπτωση που έτσι, επειδή μπορούν, βάλουν κάτι τέτοιο, ορίστε η απάντηση:
Έτσι, για το χαβαλέ,  αν ποτέ, λέμε τώρα, αν ποτέ σου ζητόυσε να γίνει έλεγχος εγκυρότητας, για το αν είναι θετικοί ακέραιοι και για το αν είναι αριθμοί με ορθή δεκαδική ακρίβεια, γεγονός που προκαλεί ασάφειες και θα το αποφεύγαν να το βάλουν σε εκφώνηση Πανελληνίων, αλλά λέμε τώρα πως το βάζουν  κι είχες βάρος κι ύψος ως β κι υ αντίστοιχα θα έπρεπε να έχεις έλεγχο εγκυρότητας με μία λογική μεταβλητή πες α (από το ακρίβεια):

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
  ΔΙΑΒΑΣΕ β,υ
  α <- ΨΕΥΔΗΣ
  ΑΝ  Α_Μ(β*100) = Α_Μ(β*1000) ΚΑΙ  Α_Μ(υ*1000) = Α_Μ(υ*10000) ΤΟΤΕ
    α <- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ α = ΑΛΗΘΗΣ ΚΑΙ β >= 0.0 ΚΑΙ υ >=0.0

! Αποφεύγω στο internet να γράφω πράγματα του στυλ
! ΜΕΧΡΙΣ_ΟΤΟΥ α ΚΑΙ β >= 0.0 ΚΑΙ υ >=0.0
!γιατί προκαλεί πολλές φορές σύγχιση.
   
ή θα είχες αν ήθελες:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
  ΔΙΑΒΑΣΕ β,υ
ΜΕΧΡΙΣ_ΟΤΟΥ β >= 0.0 ΚΑΙ υ >=0.0 ΚΑΙ  Α_Μ(β*100) = Α_Μ(β*1000) ΚΑΙ  Α_Μ(υ*1000) = Α_Μ(υ*10000)

γεγονός που απογειώνει λιγάκι τη δυσκολία του θέματος σε αυτό το μικρό σημείο δε νομίζεις;