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

Γενικό Λύκειο => Μονοδιάστατοι πίνακες => Γ΄ Λυκείου => Αναζήτηση => Μήνυμα ξεκίνησε από: xx στις 01 Μαρ 2006, 08:31:21 ΜΜ

Τίτλος: αλφαβητική αναζήτηση
Αποστολή από: xx στις 01 Μαρ 2006, 08:31:21 ΜΜ
Καλησπέρα σε όλους,

θα ήθελα να μου πείτε τη γνώμη σας για το εξής:
Δίνεται ένας μονοδιάστατος πίνακας που περιέχει ονόματα και ζητείται να βρεθούν τα ονόματα που αρχίζουν από Σ και το πλήθος αυτών.
Μπορούμε να δημιουργήσουμε αλγόριθμο για την επίλυση αυτού του προβλήματος; Και αν ναι πώς θα είναι αυτός;

Ευχαριστώ
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: evry στις 01 Μαρ 2006, 09:29:05 ΜΜ

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

Δίνεται η συνάρτηση   isPrefix(prefix, word) : ΛΟΓΙΚΕΣ
η οποία επιστρέφει ΑΛΗΘΗΣ αν η μεταβλητή χαρακτήρων prefix είναι πρόθεμα της μεταβλητής χαρακτήρων word. Σε αντίθετη περίπτωση επιστρέφει ψευδής.

Με τη βοήθεια της παραπάνω συνάρτησης μπορεί ο μαθητής να λύσει την παραπάνω άσκηση.
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: alkisg στις 01 Μαρ 2006, 10:36:17 ΜΜ
Το βιβλίο ορίζει την διάταξη μεταξύ χαρακτήρων.
Έτσι αρκεί να πεις
ΑΝ Α[ι] >= 'Σ' και Α[ι] < 'Τ'
για να σιγουρευτείς ότι ένα αλφαριθμητικό αρχίζει από Σ, όσα γράμματα κι αν περιέχει.
Π.χ. 'Σάκης' >= 'Σ' και 'Σάκης' < 'Τ'.
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: χχ στις 01 Μαρ 2006, 10:49:38 ΜΜ
Ευχαριστώ πολύ,

με εκτίμηση
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: veni στις 03 Μαρ 2006, 10:51:42 ΠΜ
Παράθεση από: alkisg στις 01 Μαρ 2006, 10:36:17 ΜΜ
Το βιβλίο ορίζει την διάταξη μεταξύ χαρακτήρων.
Έτσι αρκεί να πεις
ΑΝ Α[ι] >= 'Σ' και Α[ι] < 'Τ'
για να σιγουρευτείς ότι ένα αλφαριθμητικό αρχίζει από Σ, όσα γράμματα κι αν περιέχει.
Π.χ. 'Σάκης' >= 'Σ' και 'Σάκης' < 'Τ'.

Κι αν ζητούσε τα ονόματα που αρχίζουν από Α, το θα γράφαμε στην Αν ?
(ή αναγκαστικά σε αυτή τη περίπτωση θα προχωρούσαμε σε ταξινόμηση;)

Γιώργος
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: nikosx στις 03 Μαρ 2006, 12:20:58 ΜΜ
Αν όνομα < 'Β'τότε
Νομίζω ότι αυτό θα έβρισκε τα ονόματα από Α.
Τώρα που το ανέφερες πιστέυετε ότι η σύγκριση με το χαρακτήρα του κενού είναι σωστή;
Δηλαδή για παράδειγμα:
Αν όνομα>' '  και  όνομα<'Β'

Με εκτίμηση
Νίκος Ξ
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: alkisg στις 03 Μαρ 2006, 03:27:40 ΜΜ
ΑΝ όνομα >= 'Α' και όνομα < 'Β'
αυτό βρίσκει τα ονόματα που ξεκινάνε ΜΟΝΟ από Α.

Αν όνομα < 'Β'
αυτό βρίσκει ΚΑΙ τα ονόματα που ξεκινάνε με ψηφία, με κάποια σύμβολα, με το κενό ή με αγγλικό γράμμα.

Η σύγκριση με βάση το κενό είναι μεν σωστή, αλλά είναι λίγο αμφιλεγόμενο το ποια κωδικοποίηση χαρακτήρων υποννοείται. Υπάρχουν αρκετές κωδικοσελίδες (windows-1253, iso-8859-7, dos 737, unicode κτλ) και δε νομίζω ότι το βιβλίο αναφέρει ρητά κάποια από αυτές. Πληροφορίες για τις κωδικοσελίδες μπορείτε να βρείτε στο unicode.org (π.χ. η iso-8859-7:2003 ορίζεται στο http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-7.TXT).

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

Είναι νομίζω ασφαλές να υποθέσουμε ότι ισχύει το παρακάτω,
' ' < '0' < '9' < 'A' < 'a' < 'Α' < 'α'
αλλά ας μην το προχωρήσουμε παραπέρα...
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: Λάμπρος Μπουκουβάλας στις 31 Ιαν 2008, 09:07:26 ΜΜ
υπάρχει συγκριτική ιεραρχία και μεταξύ χαρακτήρων.
έτσι Α<Β. επίσης Α<ΑΑ και ΑΑ<ΑΒ κ.λπ.
επομένως πρόκειται για άσκηση που λύνεται, όπως μια αντίστοιχη μεταξύ αριθμών.
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: Χάρης Τσιαΐρης στις 05 Φεβ 2008, 04:28:45 ΠΜ
Στο βιβλίο υπάρχει το παράρτημα με τον πίνακα ASCII, οπότε και νομίζω ότι αποσαφινίζει τη σχέση μεταξύ των χαρακτήρων.

Χάρης Τσιαΐρης
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: alkisg στις 05 Φεβ 2008, 09:30:45 ΠΜ
Ο ASCII είναι 7-bit κώδικας, εκφράζει μόνο τα πρώτα 128 γράμματα, δεν έχει ελληνικά.
http://en.wikipedia.org/wiki/ASCII
Το παράρτημα του βιβλίου είναι λάθος, θα έπρεπε να γράφει ότι δείχνει την κωδικοσελίδα του DOS (cp737).

Αν θεωρήσουμε ότι το παράρτημα αναφέρεται στη ΓΛΩΣΣΑ, τότε βγαίνουν λάθος όλα τα παραδείγματα του βιβλίου που έχουν το σύμβολο του ευρώ, αφού το € δεν υπάρχει στην κωδικοσελίδα cp737. Το ίδιο και για το ΐ (ιώτα με διαλυτικά).
Επίσης δεν μπορεί να αναφέρεται στην ψευδογλώσσα γιατί δεν εμπεριέχει το βελάκι.


Και είναι και ένα ζήτημα το ότι η κωδικοσελίδα του DOS σπάνια χρησιμοποιείται πια, συνήθως χρησιμοποιούνται είτε των Windows (cp1253), είτε του οργανισμού τυποποίησης ISO (iso-8859-7) είτε ο Unicode...
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: Χάρης Τσιαΐρης στις 28 Μαΐου 2008, 11:23:46 ΜΜ
Ο ASCII ήταν αρχικά 7-bit με το bit-8 σαν bit ισοτιμίας, αλλά στη συνέχεια επεκτάθηκε και χρησιμοποιήθηκε και το bit-8 για αυτό και τα Ελληνικά ξεκινούν από τον χαρακτήρα 128. Τώρα βέβαια εγώ χρησιμοποίησα το όνομα που υπάρχει σε πάρα πολλά βιβλία όπως και στο σχολικό που δεν λένε πχ. cp737, (ΕΛΟΤ-928) στην περίπτωση του παραρτήματος αλλά ASCII καθώς από εκεί προήλθε.
Το σύμβολο του ευρώ προέκυψε στην πορεία, καθώς όταν γράφτηκε το βιβλίο δεν υπήρχε, ενώ το ΐ (με τόνο και διαλυτικά) και το βελάκι απλά ... το αγνοούμε.
Αυτό που θέλω να πω (με το αγνοούμε) είναι ότι στην ύλη το πολύ να έχουν να κάνουν κάποια σύγκριση μεταξύ χαρακτήρων, πχ. "ΠΑΟΚ">"ΠΑΝΑΘΗΝΑΪΚΟΣ" Α ή Ψ. Άρα για τις ανάγκες αυτές μας καλύπτει. Ε, δεν πιστεύω ότι θα μπορούσε να ζητηθεί να συγκρίνουν το ευρώ και το βελάκι.
Τώρα βέβαια για την υλοποίηση του Διερμηνευτή σίγουρα το βρήκες μπροστά σου, (που είναι και αξιόλογο βοήθημα για το μάθημα), αλλά για την διδασκαλία του μαθήματος νομίζω ότι το παράρτημα μας καλύπτει. 

Χάρης Τσιαΐρης
Τίτλος: Απ: αλφαβητική αναζήτηση
Αποστολή από: alkisg στις 29 Μαΐου 2008, 08:17:24 ΠΜ
Παράθεση από: Χάρης Τσιαΐρης στις 28 Μαΐου 2008, 11:23:46 ΜΜ
Ο ASCII ήταν αρχικά 7-bit με το bit-8 σαν bit ισοτιμίας, αλλά στη συνέχεια επεκτάθηκε και χρησιμοποιήθηκε και το bit-8 για αυτό και τα Ελληνικά ξεκινούν από τον χαρακτήρα 128. Τώρα βέβαια εγώ χρησιμοποίησα το όνομα που υπάρχει σε πάρα πολλά βιβλία όπως και στο σχολικό που δεν λένε πχ. cp737, (ΕΛΟΤ-928) στην περίπτωση του παραρτήματος αλλά ASCII καθώς από εκεί προήλθε.

Χάρη μπορείς να αναφέρεις κάποιο επίσημο link γι' αυτό;

Γιατί απ' όσο ξέρω,
άλλο ASCII (http://en.wikipedia.org/wiki/ASCII),
άλλο cp737 (http://en.wikipedia.org/wiki/Code_page_737),
άλλο ΕΛΟΤ-928 (http://en.wikipedia.org/wiki/ISO_8859-7) και
άλλο Windows-1253 (http://en.wikipedia.org/wiki/Windows-1253).

Γιατί αν με το "ASCII" εννοούμε και τα ελληνικά, ποια ακριβώς κωδικοσελίδα εννοούμε από τις ...δεν ξέρω ακριβώς πόσες, καμιά δεκαριά, που περιέχουν ελληνικά; Στη cp737 το Α βρίσκεται στη θέση 128, στην ΕΛΟΤ-928 και στην Windows-1253 βρίσκεται σε άλλη θέση, στη θέση 193, ενώ στα καθημερινά μας Windows 2000, XP και Vista βρίσκεται στη θέση 913 (Unicode). Έναρξη » εκτέλεση » charmap.

Και μη μου πεις ότι αυτά τα πρότυπα δεν υπήρχαν όταν γράφηκε το βιβλίο, ο ΕΛΟΤ-928 είναι από το 1986. Γνώμη μου είναι ότι αν κάποιο βιβλίο το λέει λάθος, οφείλουμε να το εντοπίζουμε και να ζητάμε τη διόρθωσή του, όχι να το υιοθετούμε. Αν το βιβλίο ήθελε ντε και καλά να χρησιμοποιούμε στη ΓΛΩΣΣΑ κωδικοσελίδα DOS δεν θα είχα κανένα πρόβλημα (πέρα από ότι το DOS καταργήθηκε πριν βγει το βιβλίο), αρκεί να το έλεγε σωστά και να το σεβόταν και στα παραδείγματα που έχει.