Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Μονοδιάστατοι πίνακες => Γ΄ Λυκείου => Εισαγωγή στοιχείων, εμφάνιση και υπολογισμοί => Μήνυμα ξεκίνησε από: topgun στις 21 Μαΐ 2006, 01:17:53 πμ

Τίτλος: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: topgun στις 21 Μαΐ 2006, 01:17:53 πμ
Ήθελα να μου προτείνετε μια λύση για το εξής πρόβλημα:

Έχω έναν μονοδιάστατο πίνακα αλφαριθμητικών και θέλω να βρω πόσα διαφορετικα αλφαριθμητικά εμφανίζονται σε αυτόν (ξέρω οτι κάποια εμφανίζονται περισσότερες από μια φορές) και να τα εμφανίσω στην οθόνη.

Καμιά ιδέα?

Ευχαριστώ εκ των προτέρων
Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: anasta στις 21 Μαΐ 2006, 02:31:00 μμ
ΠΡΟΓΡΑΜΜΑ PROVLIMA

ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: Ι, J, K
   ΧΑΡΑΚΤΗΡΕΣ: Α[10], Β[10]
   ΛΟΓΙΚΕΣ:ΕΙΣΑΓΩΓΗ

ΑΡΧΗ

   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
      ΔΙΑΒΑΣΕ Α[Ι]
      Β[Ι]<--' '
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

   Κ<--1
   Β[1]<--Α[1]

   ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 10

      ΕΙΣΑΓΩΓΗ<--ΑΛΗΘΗΣ

      ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ Κ

         ΑΝ Α[Ι]=Β[J] ΤΟΤΕ
            ΕΙΣΑΓΩΓΗ<--ΨΕΥΔΗΣ
         ΤΕΛΟΣ_ΑΝ

      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

      ΑΝ ΕΙΣΑΓΩΓΗ=ΑΛΗΘΗΣ ΤΟΤΕ
         Κ<--Κ+1
         Β[Κ]<--Α[Ι]
      ΤΕΛΟΣ_ΑΝ

   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

   ΓΡΑΨΕ 'ΠΛΗΘΟΣ=',Κ

   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Κ
      ΓΡΑΨΕ Β[Ι]
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: topgun στις 21 Μαΐ 2006, 03:21:53 μμ
thanx , πολύ καλή λύση.

Σαν ερώτημα άσκησης που σου φαίνεται? Νομίζω είναι καλό, θα το δώσω στους μαθητές μου.
Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: episkeptis στις 21 Μαΐ 2006, 08:06:06 μμ
Πιστεύετε πραγματικά ότι είναι ... της στιγμής τέτοιες ασκήσεις;
Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: andreas_p στις 22 Μαΐ 2006, 09:01:34 πμ
topgun,

1. φυσαλίδα  αύξουσα (αλφαβητική) και
2.  ... (είναι τώρα απλό)   Βρες το !
Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: nikosx στις 22 Μαΐ 2006, 02:59:09 μμ
Καλησπέρα σε όλους,

πράγματι είναι ωραία η λύση που έγραψε ο/η anasta, απλώς αναρωτιέμαι αν είναι απαραίτητη η αρχικοποίηση του πίνακα Β με το χαρακτήρα του κενού σε όλες τις θέσεις.

Νίκος Ξ.
Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: filippos στις 22 Μαΐ 2006, 10:29:49 μμ
Ενδιαφέρουσα άσκηση η οποία αφήνει πολλά περιθώρεια για εναλλακτικές υλοποιήσεις και επομένως αρκετό χώρο για σκέψη και συζήτηση.  Πιστεύω θα μπορούσε να χρησιμοποιηθεί αποτελεσματικά στην τάξη ως άσκηση εμπέδωσης βασικών μηχανισμών.

Μετά την ταξινόμηση που προτείνει ο Ανδρέας (που όμως δε βλέπω το λόγο να είναι απαραίτητα αύξουσα, θα μπορούσε να είναι και φθίνουσα), πιστεύω το παρακάτω κομμάτι αλγόριθμου κάνει τη "δουλειά".

Κώδικας: ΓΛΩΣΣΑ
  1. ΓΡΑΨΕ Π[1]
  2.   Πλήθος <- 1
  3.   Ι <- 1
  4.   ΟΣΟ Ι < Ν ΕΠΑΝΑΛΑΒΕ
  5.     ΑΝ Π[Ι] <> Π[Ι+1] ΤΟΤΕ
  6.       ΓΡΑΨΕ Π[Ι+1]
  7.       Πλήθος <- Πλήθος + 1
  8.     ΤΕΛΟΣ_ΑΝ
  9.     Ι <- Ι + 1
  10.   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  11.   ΓΡΑΨΕ Πλήθος, " μοναδικές λέξεις "

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

Μία κωδικοποίηση, με παραλλαγμένη (σημασιολογικά) χρήση της λογικής μεταβλητής διακοπής θα μπορούσε να είναι:

Κώδικας: ΓΛΩΣΣΑ
  1. ΠΡΟΓΡΑΜΜΑ Μοναδικά_Αλφαριθμητικά
  2. ΣΤΑΘΕΡΕΣ
  3.   Ν = 10
  4. ΜΕΤΑΒΛΗΤΕΣ
  5.   ΧΑΡΑΚΤΗΡΕΣ: Π[Ν]
  6.   ΑΚΕΡΑΙΕΣ: Ι, J, Πλήθος
  7.   ΛΟΓΙΚΕΣ: Μοναδικό
  8. ΑΡΧΗ
  9.   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
  10.     ΔΙΑΒΑΣΕ Π[Ι]
  11.   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  12.  
  13.   Πλήθος <- 0
  14.   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
  15.     Μοναδικό <- ΑΛΗΘΗΣ
  16.     J <- 1
  17.     ΟΣΟ J < Ι ΚΑΙ Μοναδικό = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
  18.       ΑΝ Π[J] = Π[Ι] ΤΟΤΕ
  19.         Μοναδικό <- ΨΕΥΔΗΣ
  20.       ΤΕΛΟΣ_ΑΝ
  21.       J <- J + 1
  22.     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  23.     ΑΝ Μοναδικό = ΑΛΗΘΗΣ ΤΟΤΕ
  24.       Πλήθος <- Πλήθος + 1
  25.       ΓΡΑΨΕ Π[Ι]
  26.     ΤΕΛΟΣ_ΑΝ
  27.   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  28.   ΓΡΑΨΕ Πλήθος, " μοναδικές λέξεις "
  29. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Πάντως δεν ξέρω αν θα τη δοκίμαζα παραμονές εξετάσεων.  Δεν ξέρω, οι υπόλοιποι τι λέτε;  Πώς θα σας φαινόταν ένα θέμα σε αυτό το επίπεδο;  Εμένα μου φαίνεται λίγο extreme.
Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: EleniK στις 23 Μαΐ 2006, 12:05:36 πμ
Νομίζω ότι και εγώ δεν θα δοκίμαζα τέτοια άσκηση τώρα. Το μόνο που θα κατάφερω είναι να δημιουργήσω ανασφάλεια στα παιδιά με μια άσκηση που για τα δεδομένα Πανελληνίων είναι τραβηγμένη.
Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: topgun στις 23 Μαΐ 2006, 11:55:25 μμ

Μετά την ταξινόμηση που προτείνει ο Ανδρέας (που όμως δε βλέπω το λόγο να είναι απαραίτητα αύξουσα, θα μπορούσε να είναι και φθίνουσα), πιστεύω το παρακάτω κομμάτι αλγόριθμου κάνει τη "δουλειά".

Κώδικας: ΓΛΩΣΣΑ
  1. ΓΡΑΨΕ Π[1]
  2.   Πλήθος <- 1
  3.   Ι <- 1
  4.   ΟΣΟ Ι < Ν ΕΠΑΝΑΛΑΒΕ
  5.     ΑΝ Π[Ι] <> Π[Ι+1] ΤΟΤΕ
  6.       ΓΡΑΨΕ Π[Ι+1]
  7.       Πλήθος <- Πλήθος + 1
  8.     ΤΕΛΟΣ_ΑΝ
  9.     Ι <- Ι + 1
  10.   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  11.   ΓΡΑΨΕ Πλήθος, " μοναδικές λέξεις "

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

Kαι εμένα σε ταξινόμηση πήγε το μυαλό μου όταν είδα την άσκηση άλλα δεν πολυσκέφτηκα τη λύση και έκανα post για να δω την πολυπλοκότητα των λύσεων που θα προτείνατε ώστε να αποφασίσω αν θα τους τη δώσω (όπως και έκανα τελικά). Ελπίζω να μην τους απογοήτευσα. Είναι όντως δίκοπο μαχαίρι η δύσκολες ασκήσεις τις τελευταίες μέρες, απο τη μια μπορεί να απογητευτεί ένα μαθητής ενώ από την άλλη πιστεύω οτι χρειάζεται μια γερη τελευταία προπόνηση.

Τίτλος: Απ: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: filippos στις 24 Μαΐ 2006, 10:09:28 μμ
Εγώ πάλι, αν και αρχικά πήγε το μυαλό μου στη λύση με ταξινόμηση, πιστεύω οτι διδακτικά προτιμότερη είναι δεύτερη λύση που προτείνω, δηλαδή αυτή της σειριακής αναζήτησης για κάθε στοιχείο του πίνακα.

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

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

Θεωρώ ότι ο χρόνος που διατίθεται για το μάθημα, η φυσιογνωμία του όπως προσδιορίζεται από ΑΠΣ, ΕΠΠΣ και ΔΠ αλλά και ο ρόλος του στο πλαίσιο του εγκύκλιου προγράμματος σπουδών πρέπει να μας περιορίζει (κατ' αρχήν) στο πρώτο επίπεδο.

Οι εμπειρίες όλων μας στην τάξη αλλά και οι επιδόσεις των μαθητών πιστεύω θα πρέπει να μας πείθουν ότι αυτό είναι ένα ενδεδειγμένο πλαίσιο για να κινείται η διδασκαλία μας ώστε να λειτουργούμε με όρους εφικτού και παιδαγωγικά επαρκούς.  Και βέβαια αναφέρομαι στο μέσο μαθητή και όχι στις εξαιρέσεις. 
Τίτλος: Πρόβλημα με μονοδιάστατο πίνακα
Αποστολή από: Duck στις 19 Νοε 2007, 02:19:57 πμ
Αν και καθόλου πρόσφατο το θέμα, έκανα μια περιήγηση στις ενότητες του site και κόλλησα σ' αυτό.
Μου φάνηκε πολύ ωραία η άσκηση αλλά δεν κατάλαβα πως δουλεύει η παρακάτω λύση. Υποτίθεται ότι προηγείται μια ταξινόμηση,
έστω κατά αύξουσα σειρά και έστω τα αποτελέσματά της είναι ο παρακάτω πίνακας:
aabbbccd
. Θυμίζω ότι πρέπει να εμφανίζονται οι μοναδικοί χαρακτήρες και το πλήθος αυτών. Σύμφωνα με την παρακάτω λύση θα εμφανιστούν οι χαρακτήρες: a b c d και πλήθος=4

ΓΡΑΨΕ Π[1]
  Πλήθος <- 1
  Ι <- 1
  ΟΣΟ Ι < Ν ΕΠΑΝΑΛΑΒΕ
    ΑΝ Π[Ι] <> Π[Ι+1] ΤΟΤΕ
      ΓΡΑΨΕ Π[Ι+1]
      Πλήθος <- Πλήθος + 1
    ΤΕΛΟΣ_ΑΝ
    Ι <- Ι + 1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ Πλήθος, " μοναδικές λέξεις "

Είμαι κάπου λάθος? Υπάρχει κάτι που δεν κατάλαβα εγώ σωστά? Αν μπορεί κάποιος να μου απαντήσει θα το εκτιμούσα!
Ευχαριστώ εκ των προτέρων!  :)