αλφαβητική αναζήτηση

Ξεκίνησε από xx, 01 Μαρ 2006, 08:31:21 ΜΜ

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

xx

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

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

Ευχαριστώ

evry


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

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

Με τη βοήθεια της παραπάνω συνάρτησης μπορεί ο μαθητής να λύσει την παραπάνω άσκηση.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

alkisg

Το βιβλίο ορίζει την διάταξη μεταξύ χαρακτήρων.
Έτσι αρκεί να πεις
ΑΝ Α[ι] >= 'Σ' και Α[ι] < 'Τ'
για να σιγουρευτείς ότι ένα αλφαριθμητικό αρχίζει από Σ, όσα γράμματα κι αν περιέχει.
Π.χ. 'Σάκης' >= 'Σ' και 'Σάκης' < 'Τ'.

χχ

Ευχαριστώ πολύ,

με εκτίμηση

veni

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

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

Γιώργος
Βενιέρης Γεώργιος
Καθηγητής Πληροφορικής
Πιλοτικό (R.I.P.)  Γυμνάσιο

nikosx

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

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

alkisg

#6
ΑΝ όνομα >= 'Α' και όνομα < 'Β'
αυτό βρίσκει τα ονόματα που ξεκινάνε ΜΟΝΟ από Α.

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

Η σύγκριση με βάση το κενό είναι μεν σωστή, αλλά είναι λίγο αμφιλεγόμενο το ποια κωδικοποίηση χαρακτήρων υποννοείται. Υπάρχουν αρκετές κωδικοσελίδες (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' < 'Α' < 'α'
αλλά ας μην το προχωρήσουμε παραπέρα...

Λάμπρος Μπουκουβάλας

υπάρχει συγκριτική ιεραρχία και μεταξύ χαρακτήρων.
έτσι Α<Β. επίσης Α<ΑΑ και ΑΑ<ΑΒ κ.λπ.
επομένως πρόκειται για άσκηση που λύνεται, όπως μια αντίστοιχη μεταξύ αριθμών.
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται...

Χάρης Τσιαΐρης

Στο βιβλίο υπάρχει το παράρτημα με τον πίνακα ASCII, οπότε και νομίζω ότι αποσαφινίζει τη σχέση μεταξύ των χαρακτήρων.

Χάρης Τσιαΐρης

alkisg

Ο ASCII είναι 7-bit κώδικας, εκφράζει μόνο τα πρώτα 128 γράμματα, δεν έχει ελληνικά.
http://en.wikipedia.org/wiki/ASCII
Το παράρτημα του βιβλίου είναι λάθος, θα έπρεπε να γράφει ότι δείχνει την κωδικοσελίδα του DOS (cp737).

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


Και είναι και ένα ζήτημα το ότι η κωδικοσελίδα του DOS σπάνια χρησιμοποιείται πια, συνήθως χρησιμοποιούνται είτε των Windows (cp1253), είτε του οργανισμού τυποποίησης ISO (iso-8859-7) είτε ο Unicode...

Χάρης Τσιαΐρης

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

Χάρης Τσιαΐρης

alkisg

Παράθεση από: Χάρης Τσιαΐρης στις 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 καταργήθηκε πριν βγει το βιβλίο), αρκεί να το έλεγε σωστά και να το σεβόταν και στα παραδείγματα που έχει.