Πρόβλημα με μονοδιάστατο πίνακα

Ξεκίνησε από topgun, 21 Μαΐου 2006, 01:17:53 ΠΜ

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

topgun

Ήθελα να μου προτείνετε μια λύση για το εξής πρόβλημα:

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

Καμιά ιδέα?

Ευχαριστώ εκ των προτέρων

anasta

ΠΡΟΓΡΑΜΜΑ PROVLIMA

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

ΑΡΧΗ

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

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

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

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

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

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

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

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

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

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

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

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

topgun

thanx , πολύ καλή λύση.

Σαν ερώτημα άσκησης που σου φαίνεται? Νομίζω είναι καλό, θα το δώσω στους μαθητές μου.

episkeptis

Πιστεύετε πραγματικά ότι είναι ... της στιγμής τέτοιες ασκήσεις;

andreas_p

topgun,

1. φυσαλίδα  αύξουσα (αλφαβητική) και
2.  ... (είναι τώρα απλό)   Βρες το !

nikosx

Καλησπέρα σε όλους,

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

Νίκος Ξ.
Νίκος Ξένος
Καθηγητής Πληροφορικής
nxenos@sch.gr

filippos

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

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

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


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

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

Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ Μοναδικά_Αλφαριθμητικά
ΣΤΑΘΕΡΕΣ
  Ν = 10
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Π[Ν]
  ΑΚΕΡΑΙΕΣ: Ι, J, Πλήθος
  ΛΟΓΙΚΕΣ: Μοναδικό
ΑΡΧΗ
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΔΙΑΒΑΣΕ Π[Ι]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  
  Πλήθος <- 0
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
    Μοναδικό <- ΑΛΗΘΗΣ
    J <- 1
    ΟΣΟ J < Ι ΚΑΙ Μοναδικό = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
      ΑΝ Π[J] = Π[Ι] ΤΟΤΕ
        Μοναδικό <- ΨΕΥΔΗΣ
      ΤΕΛΟΣ_ΑΝ
      J <- J + 1
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΝ Μοναδικό = ΑΛΗΘΗΣ ΤΟΤΕ
      Πλήθος <- Πλήθος + 1
      ΓΡΑΨΕ Π[Ι]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ Πλήθος, " μοναδικές λέξεις "
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Πάντως δεν ξέρω αν θα τη δοκίμαζα παραμονές εξετάσεων.  Δεν ξέρω, οι υπόλοιποι τι λέτε;  Πώς θα σας φαινόταν ένα θέμα σε αυτό το επίπεδο;  Εμένα μου φαίνεται λίγο extreme.

EleniK

Νομίζω ότι και εγώ δεν θα δοκίμαζα τέτοια άσκηση τώρα. Το μόνο που θα κατάφερω είναι να δημιουργήσω ανασφάλεια στα παιδιά με μια άσκηση που για τα δεδομένα Πανελληνίων είναι τραβηγμένη.
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

topgun

Παράθεση από: filippos στις 22 Μαΐου 2006, 10:29:49 ΜΜ

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

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


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

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


filippos

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

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

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

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

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

Duck

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

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

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