Προς το περιεχόμενο

Pascal.... Plz Help!!!


Just_Jim

Προτεινόμενες αναρτήσεις

Δημοσ.

Στο καινουριο πανελληνιο διαγωνισμο πληροφορικης ζητητε να δημιουργηθει ενα προγραμμα που να μετρα απλος ποσα γραμματα υπαρχουν σε ενα κοιμενο και να τα ταξινομει με αυξουσα σειρα... Στι Pascal πως μετατρεπεις ενα γραμμα σε μεταβλητη?? Εδω μιλαει για κωδικοποιηση ASCII και οτι οι χαρακτηρες πρεπει να μετατραπουν σε αριθμους καπως ετσι Β=129 , Γ=130, .... Ω=151... πως γινεται αυτη η μετατροπη? Αν δεν καταλαβατε ακριβως τι ζηταω δειτε εδω http://www.pdp.gr ...

 

 

Βασικα το παραθετω ολοκληρο... (για να μην μπαινεται στο κοπο να ανοιξεται το Link)

 

 

 

 

" Πρόβλημα: Να αναπτύξετε ένα πρόγραμμα σε μια από τις γλώσσες του ΙΟΙ το οποίο: Θα λαμβάνει κείμενα στην Ελληνική και αφού μετρήσει πόσες φορές εμφανίζεται κάθε χαρακτήρας (Κεφαλαία Ελληνικά & κενό) θα τους εμφανίζει με σειρά φθίνουσας εμφάνισης, εμφανίζοντας και την αντίστοιχη συχνότητα εμφάνισης ώστε να τύχουν καλλίτερης κωδικοποίησης.

 

Αρχεία Εισόδου:

Τα αρχεία εισόδου με όνομα friktories.in είναι αρχεία κειμένου με την εξής δομή: Έχουν τουλάχιστον μία γραμμή με ένα Ελληνικό κείμενο (64 – 1000000 χαρακτήρες). Κάθε χαρακτήρας αντιστοιχεί ακριβώς σε ένα byte.

 

Αρχεία Εξόδου:

Τα αρχεία εξόδου με όνομα friktories.out είναι αρχεία κειμένου με την εξής δομή: Έχουν 25 ακριβώς γραμμές και σε κάθε μία υπάρχει ένας χαρακτήρας από τον συχνότερα εμφανιζόμενο (1η) μέχρι τον λιγότερο συχνά εμφανιζόμενο (25η). Μετά από κάθε χαρακτήρα παρεμβάλλεται ο χαρακτήρας διάστημα (space) και αμέσως μετά η συχνότητα εμφάνισης του. (Πόσες φορές δηλαδή εμφανίστηκε στο κείμενο). Αν δύο χαρακτήρες έχουν την ίδια συχνότητα εμφάνισης τότε ταξινομούνται με την αλφαβητική τους σειρά. (Ο χαρακτήρας διάστημα θεωρείται 25ος).

 

Σημείωση 1: Οι μαθητές θα πρέπει να γνωρίζουν ότι τα αρχεία input & output αποτελούνται μόνο από χαρακτήρες με ASCII κωδικοποίηση. Σύμφωνα με αυτήν: space_character: 32, Α: 128, Β: 129, …, Ω: 151. Καμία άλλη κωδικοποίηση όπως UTF 7, UTF 8 κλπ δεν μπορεί να χρησιμοποιηθεί. Τα σημεία στίξης (, ʼ . ) αλλά και κάθε άλλος χαρακτήρας (πχ EOL κλπ.) αγνοούνται.

 

Σημείωση 2: Επειδή δεν δίδεται ο αριθμός των γραμμών του αρχείου θα πρέπει να γίνει έλεγχος τερματισμού. Παρακάτω φαίνεται πως μπορεί να διαβαστεί το αρχείο (μέχρι το τέλος του) στις διάφορες γλώσσες.""

Δημοσ.

Εισαι αναγκασμενος να το κανεις σε pascal η εσυ το αποφασισες?

 

Ο καθε χαρακτηρας που βλεπεις στην οθονη αντιστοιχει σε εναν αριθμο. Στην pascal οπως και στις περισσοτερες γλωσσες υπαρχει τροπος να βρεις την αντιστοιχια. Ψαξε πως δουλευει η function για ordinal values

http://www.thinkage.ca/english/gcos/expl/pasc/lib/ord.html

 

Δεν ξερω ομως πως θα αντιδρασει η pascal με τα ελληνικα και κατα ποσο η αντιστοιχια που σου ζηταει με το A = 128 ανταποκρινεται στην πραγματικοτητα. Παντως το σιγουρο ειναι οτι ολα τα κεφαλαια θα ειναι με τη σειρα οποτε ακομα και αν η pascal σου επιστρεψει για το ελληνικο A πχ 193, θα ξερεις οτι το B ειναι 194 κοκ οποτε θα κανεις μια αφαιρεση να φτασεις εκει που σου ζηταει.

 

Ελπιζω να ξερεις πως θα διαβασεις και θα γραψεις αρχεια κειμενου καθως και το πως θα απομονωνεις τον καθε χαρακτηρα της γραμμης για να παρεις τελικα τον αριθμο και να κανεις συγκρισεις.

 

Εχω πολλα χρονια να πιασω την pascal και καμια διαθεση να τη θυμηθω. Αν εχεις τη δυνατοτητα καντο σε μια πιο μοντερνα γλωσσα που αυτες οι διαδικασιες ειναι πολυ πιο ευκολες

Δημοσ.

Χωρίς να διαβάσω όλο το κείμενο,

με Writeln(Ord('Α')) στην Pascal σε DOS θα σου γράψει 128,

και με Writeln(Chr(128)) πάλι σε DOS θα σου γράψει Α.

 

Αυτό επειδή το DOS χρησιμοποιεί κωδικοσελίδα 737 και το Α βρίσκεται στη θέση 128.

 

Αν το τρέξεις σε περιβάλλον Windows, το Ord('Α') θα σου επιστρέψει 192 αφού τα Windows χρησιμοποιούν κωδικοσελίδα Windows-1253.

 

Για να τα δεις γραφικά όλα αυτά, κάνε έναρξη > εκτέλεση > charmap και σύγκρινε το που βρίσκονται οι θέσεις των χαρακτήρων στις γραμματοσειρές System (=windows 1253) και Terminal (=cp737).

 

Επομένως απ' ότι καταλαβαίνω το πρόγραμμα το θέλουν σε DOS.

Αρχειοθετημένο

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

  • Δημιουργία νέου...