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

Γ1.    Να κατασκευάσετε υποπρόγραμμα, με όνομα ΑΝΑΖΗΤΗΣΗ, το οποίο να δέχεται

  • ένα μονοδιάστατο πίνακα χαρακτήρων Π[100],
  • μια ακέραια μεταβλητή Ν,
  • μια αλφαριθμητική μεταβλητή Χ και να επιστρέφει
  • μια λογική μεταβλητή ΒΡΕΘΗΚΕ και
  • μια ακέραια μεταβλητή ΘΕΣΗ.

Το υποπρόγραμμα να αναζητά μια λέξη, την τιμή της μεταβλητής Χ στις θέσεις 1 έως Ν του πίνακα Π. Αν βρεθεί η λέξη, το υποπρόγραμμα να επιστρέφει την τιμή ΑΛΗΘΗΣ και τη θέση που βρέθηκε. Αν δεν βρεθεί, να επιστρέφει την τιμή ΨΕΥΔΗΣ και την τιμή 0.

Μονάδες 5

Στη συνέχεια να κατασκευάσετε κύριο πρόγραμμα το οποίο:

Γ2. Να ζητά 100 ναυτικές λέξεις και να τις καταχωρίζει σε πίνακα ΛΕΞΕΙΣ[100]. Κάθε λέξη που δίνεται να τη δέχεται, μόνο εφόσον ελέγξει ότι δεν έχει ήδη καταχωριστεί στον πίνακα. Ο έλεγχος να γίνεται με τη χρήση του υποπρογράμματος ΑΝΑΖΗΤΗΣΗ.

Μονάδες 5

Γ3. Να ζητά, με τη σειρά, τις λέξεις ενός νεοελληνικού κειμένου. Η εισαγωγή να τερματίζεται όταν δοθεί ως λέξη η ακολουθία χαρακτήρων «ΤΕΛΟΣ_ΚΕΙΜΕΝΟΥ».

Μονάδες 2

Γ4. Να εμφανίζει τις σπανιότερες ναυτικές λέξεις του δείγματος που υπάρχουν στο νεοελληνικό κείμενο, δηλαδή τις λέξεις με τη μικρότερη συχνότητα εμφάνισης, χρησιμοποιώντας κατάλληλα το υποπρόγραμμα ΑΝΑΖΗΤΗΣΗ.

Μονάδες 8

ΛΥΣΗ

ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ
 ΜΕΤΑΒΛΗΤΕΣ
 ΑΚΕΡΑΙΕΣ: Ι,Ν, ΘΕΣΗ, ΣΥΧΝΟΤΗΤΑ[100], Min, ΟΡΙΟ, Πλήθος_Λέξεων
 ΧΑΡΑΚΤΗΡΕΣ: ΛΕΞΕΙΣ[100], ΛΕΞΗ
 ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ, βρέθηκεMin
 ΑΡΧΗ
 ! Γ2
 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
     ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
        ΔΙΑΒΑΣΕ ΛΕΞΕΙΣ[Ι]
        ΟΡΙΟ <-- Ι - 1
        ΚΑΛΕΣΕ ΑΝΑΖΗΤΗΣΗ(ΛΕΞΕΙΣ, ΟΡΙΟ, ΛΕΞΕΙΣ[Ι], ΒΡΕΘΗΚΕ, ΘΕΣΗ)
     ΜΕΧΡΙΣ_ΟΤΟΥ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 
 ! Γ3
 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
     ΣΥΧΝΟΤΗΤΑ[Ι]  <-- 0 
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΔΙΑΒΑΣΕ ΛΕΞΗ
 Ν  <-- 100
 πλήθος_Λέξεων  <-- 0          !δεν προσμετράται το ΤΕΛΟΣ_ΚΕΙΜΕΝΟΥ
 ΟΣΟ ΛΕΞΗ <> 'ΤΕΛΟΣ_ΚΕΙΜΕΝΟΥ' ΕΠΑΝΑΛΑΒΕ
     Πλήθος_Λέξεων  <-- πλήθος_Λέξεων + 1
     ΚΑΛΕΣΕ ΑΝΑΖΗΤΗΣΗ(ΛΕΞΕΙΣ, Ν, ΛΕΞΗ, ΒΡΕΘΗΚΕ, ΘΕΣΗ)
     ΑΝ ΒΡΕΘΗΚΕ = ΑΛΗΘΗΣ ΤΟΤΕ
        ΣΥΧΝΟΤΗΤΑ[ΘΕΣΗ]  <-- ΣΥΧΝΟΤΗΤΑ[ΘΕΣΗ] + 1
     ΤΕΛΟΣ_ΑΝ
     ΔΙΑΒΑΣΕ ΛΕΞΗ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! Γ4
 Min  <-- Πλήθος_Λέξεων + 1
 βρέθηκεMin <-- ΨΕΥΔΗΣ
 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
     ΑΝ ΣΥΧΝΟΤΗΤΑ[Ι] > 0 ΚΑΙ ΣΥΧΝΟΤΗΤΑ[Ι] < Min ΤΟΤΕ  
        Min  <-- ΣΥΧΝΟΤΗΤΑ[Ι]
        βρέθηκεMin  <-- ΑΛΗΘΗΣ
     ΤΕΛΟΣ_ΑΝ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΑΝ βρέθηκεMin = ΑΛΗΘΗΣ ΤΟΤΕ
    ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
       ΑΝ ΣΥΧΝΟΤΗΤΑ[Ι] = Min ΤΟΤΕ
          ΓΡΑΨΕ 'Λέξη με την μικρότερη συχνότητα εμφάνισης: ', Ι, '. ', ΛΕΞΕΙΣ[Ι]
       ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
   ΓΡΑΨΕ 'Καμία λέξη δε βρέθηκε στο κείμενο'  
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

 ! Γ1
 ΔΙΑΔΙΚΑΣΙΑ ΑΝΑΖΗΤΗΣΗ(Π, Ν, Χ, ΒΡΕΘΗΚΕ, ΘΕΣΗ)
 ΜΕΤΑΒΛΗΤΕΣ
 ΑΚΕΡΑΙΕΣ: Ν, ΘΕΣΗ, Ι
 ΧΑΡΑΚΤΗΡΕΣ: Π[100], Χ
 ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ
 ΑΡΧΗ
 ΘΕΣΗ <-- 0
 ΒΡΕΘΗΚΕ <-- ΨΕΥΔΗΣ
 Ι <-- 1
 ΟΣΟ Ι <= Ν ΚΑΙ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ ! Καλύπτεται και η περίπτωση Ν=0
     ΑΝ Π[Ι] = Χ ΤΟΤΕ
        ΘΕΣΗ <-- Ι
        ΒΡΕΘΗΚΕ  <-- ΑΛΗΘΗΣ
     ΤΕΛΟΣ_ΑΝ
     Ι  <-- Ι + 1
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Κατεβάστε ένα δοκιμαστικό αρχείο δεδομένων: arxeio100naytikonoron-3