Αποστολέας Θέμα: Πρόβλημα με μονοδιάστατο πίνακα  (Αναγνώστηκε 5450 φορές)

topgun

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

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

Καμιά ιδέα?

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

anasta

  • Βετεράνος
  • ****
  • Μηνύματα: 59
  • Ok, yes... Ok, yes...
Απ: Πρόβλημα με μονοδιάστατο πίνακα
« Απάντηση #1 στις: 21 Μαΐ 2006, 02:31:00 μμ »
ΠΡΟΓΡΑΜΜΑ PROVLIMA

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

ΑΡΧΗ

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

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

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

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

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

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

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

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

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

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

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

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

topgun

  • Επισκέπτης
Απ: Πρόβλημα με μονοδιάστατο πίνακα
« Απάντηση #2 στις: 21 Μαΐ 2006, 03:21:53 μμ »
thanx , πολύ καλή λύση.

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

episkeptis

  • Επισκέπτης
Απ: Πρόβλημα με μονοδιάστατο πίνακα
« Απάντηση #3 στις: 21 Μαΐ 2006, 08:06:06 μμ »
Πιστεύετε πραγματικά ότι είναι ... της στιγμής τέτοιες ασκήσεις;

andreas_p

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1087
Απ: Πρόβλημα με μονοδιάστατο πίνακα
« Απάντηση #4 στις: 22 Μαΐ 2006, 09:01:34 πμ »
topgun,

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

nikosx

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 375
  • ___
Απ: Πρόβλημα με μονοδιάστατο πίνακα
« Απάντηση #5 στις: 22 Μαΐ 2006, 02:59:09 μμ »
Καλησπέρα σε όλους,

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

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

filippos

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 139
Απ: Πρόβλημα με μονοδιάστατο πίνακα
« Απάντηση #6 στις: 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

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 708
Απ: Πρόβλημα με μονοδιάστατο πίνακα
« Απάντηση #7 στις: 23 Μαΐ 2006, 12:05:36 πμ »
Νομίζω ότι και εγώ δεν θα δοκίμαζα τέτοια άσκηση τώρα. Το μόνο που θα κατάφερω είναι να δημιουργήσω ανασφάλεια στα παιδιά με μια άσκηση που για τα δεδομένα Πανελληνίων είναι τραβηγμένη.
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

topgun

  • Επισκέπτης
Απ: Πρόβλημα με μονοδιάστατο πίνακα
« Απάντηση #8 στις: 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

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

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

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

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

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

Duck

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

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

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