Αποστολέας Θέμα: Πίνακες με συχνότητες ή ταξινόμηση;  (Αναγνώστηκε 2989 φορές)

nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 534
  • There can be only one...may it be AEPP.
Πίνακες με συχνότητες ή ταξινόμηση;
« στις: 16 Φεβ 2014, 10:03:24 πμ »
Καλημέρα σε όλους. Συνάντησα μια άσκηση προχτές για την οποία δεν γνωρίζω την προέλευσή της. Θέλω πάνω στην εκφώνηση να κάνω κάποιες ερωτήσεις. Αν υπάρχει κάποιο πρόβλημα που την ανέβασα ευχαρίστως να διαγράψω το θέμα.
Λοιπόν
"Να αναπτύξετε αλγόριθμο ο οποίος:
1. θα εισάγει σε μονοδιάστατο πίνακα Α[200], 200 πραγματικούς αριθμούς κάνοντας έλεγχο εισόδου ώστε οι αριθμοί να ανήκουν στο διάστημα [-100,100]
2. Θα εμφανίζει το πλήθος των άρτιων που υπάρχουν στον πίνακα Α
3. θα εμφανίζει τα διαφορετικά στοιχεία που υπάρχουν στον Α καθώς και το πλήθος τους
4. θα εμφανίζει το μήνυμα "αραιός" σε περίπτωση που είναι ....."

Τώρα οι απορίες - ερωτήσεις μου.
α) θα μπορούσε να σταθεί το ερώτημα 2 με αυτή την εκφώνηση; Καθώς στον πίνακα αποθηκεύονται πραγματικές τιμές; Και αν ναι πως θα μπορούσα να το επιλύσω;
β) Σχετικά με το 3ο ερώτημα και αν ο πίνακας περιείχε ακέραια στοιχεία, θα μπορούσα να κάνω έναν πίνακα μετρητών - μέτρησης συχνοτήτων - με 201 θέσεις, πράγμα λίγο δυσνόητο για τα παιδιά (όπως το κατάλαβα με τα μάτια μου) ή θα μπορούσα να κάνω ταξινόμηση τις θερμοκρασίες.  Δε μπορώ να σκεφτώ κάποιο άλλο τρόπο επίλυσης αυτή τη στιγμή. Τί όμως θα ήταν παιδαγωγικά πιο σωστό για τα παιδιά. Ένας πίνακας με μετρητές ή μια ταξινόμηση; Τί έπειτα θα ήταν προγραμματιστικά σωστότερο;
Ευχαριστώ.
Απ' τα τσακάλια δεν γλυτώνεις μ'ευχές ή παρακάλια
(Κ. Βάρναλης)

Μερεντίτης Νικόλαος
Καθηγητής Πληροφορικής - Φροντιστής

apoldem

  • Βετεράνος
  • ****
  • Μηνύματα: 86
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #1 στις: 16 Φεβ 2014, 11:14:28 πμ »
Προφανώς αυτός που έγραψε την άσκηση έκανε λάθος και ζήτησε πραγματικούς αριθμούς. Με ακέραιους αριθμούς έχει νόημα, αλλά με πραγματικούς τα ερωτήματα (β) και (γ) είναι λάθος. Στο (β) δεν υπάρχουν άρτιοι και περιττοί πραγματικοί και στο (γ) καλούμαστε να ελέγξουμε ισότητα μεταξύ πραγματικών, κάτι το οποίο απαγορεύεται προγραμματιστικά.

Dinos

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 86
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #2 στις: 16 Φεβ 2014, 01:54:53 μμ »
Η άσκηση προφανώς αφορά πίνακα ακεραίων.
Επειδή έχει αρκετό ενδιαφέρον (το γ' ερώτημα), όσον αφορά γενικότερη μεθοδολογία επίλυσης παραθέτω μερικές λύσεις-προσεγγίσεις, που αναφέρονται και από τους προηγούμενους.

Π1: Με δημιουργία πίνακα, που περιέχει τα διαφορετικά στοιχεία
Κώδικας: [Επιλογή]
κ ← 0
Για ι από 1 μέχρι 200
  fl ← Ψευδής
  j ← 1
  Όσο fl = Ψευδής και j ≤ κ επανάλαβε
    Αν Β[j] = Α[ι] τότε
      fl ← Αληθής
    αλλιώς
      j ← j + 1
    Τέλος_αν
  Τέλος_επανάληψης
  Αν fl = Ψευδής τότε
    κ ← κ + 1
    Β[κ] ← Α[ι]
  Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε κ


Π2: με δημιουργία πίνακα-flag (τσεκάρει μόνο τα διαφορετικά στοιχεία)
Κώδικας: [Επιλογή]
Για ι από 1 μέχρι 200
  Μ[ι] ← Ψευδής
Τέλος_επανάληψης

Για ι από 1 μέχρι 200
  fl ← Ψευδής
  j ← 1
  Όσο fl = Ψευδής και j ≤ ι επανάλαβε
    Αν Μ[ι] = Αληθής και Α[j] = Α[ι] τότε
      fl ← Αληθής
    αλλιώς
      j ← j + 1
    Τέλος_αν
  Τέλος_επανάληψης
  Αν fl = Ψευδής τότε
    Μ[ι] ← Αληθής
  Τέλος_αν
Τέλος_επανάληψης

πλ ← 0
Για ι από 1 μέχρι 200
  Αν Μ[ι] = Αληθής τότε
    πλ ← πλ + 1
  Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε πλ

Π3: Με ταξινόμηση
Κώδικας: [Επιλογή]
Για ι από 2 μέχρι 200
  Για j από 200 μέχρι ι με_βήμα -1
     !κατά φθίνουσα σειρά, χωρίς να έχει σημασία
    Αν Α[j - 1] < Α[j] τότε
      Αντιμετάθεσε Α[j - 1], Α[j]
    Τέλος_αν
  Τέλος_επανάληψης
Τέλος_επανάληψης

πλ ← 1
ι ← 1
Όσο ι ≤ 190 επανάλαβε
  Αν Α[ι + 1] ≠ Α[ι] τότε
    πλ ← πλ + 1
    ι ← ι + 1
  αλλιώς
    fl ← Αληθής
    Όσο fl = Αληθής επανάλαβε
      Αν Α[ι + 1] ≠ Α[ι] ή ι = 200 τότε
        fl ← Ψευδής
      αλλιώς
        ι ← ι + 1
      Τέλος_αν
    Τέλος_επανάληψης
  Τέλος_αν
Τέλος_επανάληψης

Εμφάνισε πλ

Π4: με πίνακα συχνοτήτων (α)
Κώδικας: [Επιλογή]
Για ι από 1 μέχρι 201
  ΠΛ[ι] ← 0
Τέλος_επανάληψης


Για ι από 1 μέχρι 200
  ΠΛ[Α[ι] + 101] ← ΠΛ[Α[ι] + 101] + 1
Τέλος_επανάληψης

π ← 0
Για ι από 1 μέχρι 201
  Αν ΠΛ[ι] ≠ 0 τότε
    π ← π + 1
  Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε π

Π5: με πίνακα συχνοτήτων (β)
Κώδικας: [Επιλογή]
σ_πλ ← 0
Για αρ από -100 μέχρι 100
  πλ ← 0
  Για ι από 1 μέχρι 200
    Αν Α[ι] = αρ τότε
      πλ ← πλ + 1
    Τέλος_αν
  Τέλος_επανάληψης
  Αν πλ ≠ 0 τότε
    σ_πλ ← σ_πλ + 1
  Τέλος_αν
Τέλος_επανάληψης

Εμφάνισε σ_πλ


Κατά τη γνώμη μου, πιο κατανοήσιμος και παιδαγωγικά ορθότερος είναι ο 1ος τρόπος.

nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 534
  • There can be only one...may it be AEPP.
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #3 στις: 16 Φεβ 2014, 02:29:25 μμ »
Πολύ κατατοπιστικός ο user Dinos.
Ωραιότατες όλες οι μεθοδολογίες. :o
Ευχαριστώ πάρα πολύ όλους.
Απ' τα τσακάλια δεν γλυτώνεις μ'ευχές ή παρακάλια
(Κ. Βάρναλης)

Μερεντίτης Νικόλαος
Καθηγητής Πληροφορικής - Φροντιστής

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2167
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #4 στις: 16 Φεβ 2014, 07:42:39 μμ »
Οι ασκήσεις συχνοτήτων δεν αναφέρονται αποκλειστικά σε ακεραίους
Απλά, αυξάνεται αρκετά η δυσκολία αν οι αριθμοί δεν είναι ακέραιοι
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2444
  • I 'm not young enough to know everything
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #5 στις: 17 Φεβ 2014, 08:45:00 πμ »
Aν οι αριθμοί είναι πραγματικοί ή αν είναι ακέραιοι χωρίς περιορισμό τότε η λύση δε διαφέρει... πρέπει να βρεις τους διαφορετικούς και να κάνεις πίνακα συχνοτήτων. Υπάρχει τέτοια άσκηση στο τετράδιο μαθητή (κεφ 10 ΔΣ3) και είναι φυσικά εντός ύλης. Η έννοια του αρτίου και του περιττού ορίζεται μόνο στους ακεραίους.

apoldem

  • Βετεράνος
  • ****
  • Μηνύματα: 86
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #6 στις: 17 Φεβ 2014, 02:00:05 μμ »
Τι λέει η στατιστική: πίνακα συχνοτήτων μπορούμε να κάνουμε μόνο σε μετρήσιμα σύνολα. Το σύνολο των πραγματικών δεν είναι μετρήσιμο, συνεπώς δεν μπορούμε να κάνουμε πίνακα συχνοτήτων.
Τι ισχύει στον προγραμματισμό: στην πράξη μπορούμε να χρησιμοποιήσουμε την ισότητα ως συνθήκη μεταξύ δύο πραγματικών αριθμών, αλλά η πιθανότητα να είναι δύο πραγματικοί ίσοι είναι 10-19 (αν θυμάμαι καλά). Γι' αυτό απαγορεύεται η χρήση της ισότητας ως συνθήκη σε πραγματικούς, σε όλες τις γλώσσες προγραμματισμού.

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2167
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #7 στις: 17 Φεβ 2014, 02:06:30 μμ »
Τι λέει η στατιστική: πίνακα συχνοτήτων μπορούμε να κάνουμε μόνο σε μετρήσιμα σύνολα. Το σύνολο των πραγματικών δεν είναι μετρήσιμο, συνεπώς δεν μπορούμε να κάνουμε πίνακα συχνοτήτων.

Μήπως εννοείς ότι πίνακα συχνοτήτων μπορούμε να κάνουμε μόνο σε διακριτές μεταβλητές;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

apoldem

  • Βετεράνος
  • ****
  • Μηνύματα: 86
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #8 στις: 17 Φεβ 2014, 02:20:16 μμ »
Θα μπορούσαμε να το πούμε κι έτσι διακριτή μεταβλητή εναντίον συνεχούς.

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2444
  • I 'm not young enough to know everything
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #9 στις: 17 Φεβ 2014, 03:16:36 μμ »
Στη στατιστική όταν έχουμε συνεχή μεταβλητή φτιάχνουμε διαστήματα, αυτό είναι λογικό για διάφορους λόγους. Πχ αν πάρεις στην τύχη με ομοιόμορφη κατανομή ένα αριθμό από το 0 ως το 1, η πιθανότητα να είναι πχ ο 0.7 είναι ακριβώς 0 (γιατί τόσο είναι το εμβαδό κάτω από 0.7). Ωστόσο νομίζω ότι δεν πρέπει να αφήσουμε την ορολογία της στατιστικής να μας "πνίξει". Μπορώ κάλλιστα αν έχω ένα πίνακα με τιμές 0.2, 0.5, 0.6, 0.2, 0.7, 0.2, 0.6 κλπ και να ρωτήσω ποιοι είναι οι διαφορετικοί αριθμοί που εμφανίζονται και πόσες φορές εμφανίζεται ο καθένας. Ας μην το ονομάσουμε πίνακα συχνοτήτων αν είναι να μας δημιουργηθεί πρόβλημα με την ορολογία της στατιστικής.
Αυτό με τις ισότητες των πραγματικών, όντως είναι θέμα, απλά έχουμε την τάση μια που μας νοιάζει κυρίως το αλγοριθμικό κομμάτι και όχι οι λεπτομέρειες υλοποίησης του περιβάλλοντος να κάνουμε που και που τα στραβά μάτια (πιθανόν και κακώς). Πχ στη ΓΛΩΣΣΑ αν έχεις το 4/2 που κάνει 2 δεν μπορείς να το βάλεις σε ακέραιο, αλλά είναι κάτι που δε θα ήθελα να το πω στο μαθητή. Όπως επίσης και τα div/mod δεν μπορείς να τα χρησιμοποιήσεις με το 3.0 παρά το ότι είναι ακέραιοι σαν αξία λόγω του ότι είναι πραγματικοί ως προς το χώρο αποθήκευσης. Για το συγκεκριμένο ζήτημα δεν έχω ξεκάθαρη άποψη ως προς αν πρέπει να το θίξουμε.

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 426
  • Real stupidity beats ΑΙ any time
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #10 στις: 17 Φεβ 2014, 03:17:43 μμ »
Τι ισχύει στον προγραμματισμό: στην πράξη μπορούμε να χρησιμοποιήσουμε την ισότητα ως συνθήκη μεταξύ δύο πραγματικών αριθμών, αλλά η πιθανότητα να είναι δύο πραγματικοί ίσοι είναι 10-19 (αν θυμάμαι καλά). Γι' αυτό απαγορεύεται η χρήση της ισότητας ως συνθήκη σε πραγματικούς, σε όλες τις γλώσσες προγραμματισμού.

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

Γενικά μπορείς να κάνεις fuzzy σύγκριση αλλά υπερβαίνει τους στόχους του μαθήματος.

apoldem

  • Βετεράνος
  • ****
  • Μηνύματα: 86
Απ: Πίνακες με συχνότητες ή ταξινόμηση;
« Απάντηση #11 στις: 17 Φεβ 2014, 09:01:02 μμ »
Πολύ σωστά, αν έχουμε πραγματικούς αριθμούς μέχρι κάποια ακρίβεια τότε το πρόβλημα λύνεται. Να μην ξεχνάμε ποτέ ότι η επιστήμη της πληροφορικής είναι παρακλάδι των εφαρμοσμένων μαθηματικών, οπότε τα μαθηματικά πρέπει να τα έχουμε παρά πόδας συνεχώς. Οι μαθηματικοί τα έχουν λύσει αυτά τα προβλήματα εδώ και 200 χρόνια. Το σύνολο των πραγματικών αν το περιορίσουμε μέχρι μια επιτρεπόμενη ακρίβεια γίνεται μετρήσιμο, οπότε μπορούμε να κατασκευάσουμε πίνακα συχνοτήτων. Αν ε είναι η επιτρεπόμενη ακρίβεια τότε η ισότητα δύο πραγματικών α και β ελέγχεται με την συνθήκη |α - β| < ε, και η ανισότητα α + ε < β.