Ένας μαθητής αγόρασε έναν εξωτερικό δίσκο χωρητικότητας 1000 GB, προκειμένου να αποθηκεύσει σε αυτόν ψηφιακά αρχεία.
Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ, το οποίο:

Γ1.      
αΝα περιλαμβάνει κατάλληλο τμήμα δηλώσεων. (μονάδες 2)
β. Για κάθε ψηφιακό αρχείο που θέλει να αποθηκεύσει ο μαθητής στον εξωτερικό δίσκο, να διαβάζει το όνομά του και το μέγεθός του (σε GB) και να ελέγχει, αν επαρκεί η διαθέσιμη χωρητικότητα του εξωτερικού δίσκου. Εφόσον επαρκεί, να εμφανίζει το μήνυμα «Επιτρεπτή αποθήκευση» και να υπολογίζει τη νέα διαθέσιμη χωρητικότητα του εξωτερικού δίσκου. Να τερματίζει τον έλεγχο της αποθήκευσης ψηφιακών αρχείων στον εξωτερικό δίσκο, όταν το μέγεθος του αρχείου που θέλει να αποθηκεύσει ο μαθητής είναι μεγαλύτερο από τη διαθέσιμη χωρητικότητα του εξωτερικού δίσκου. (μονάδες 6)
Μονάδες 8

Γ2.       Να υπολογίζει  και να εμφανίζει το ποσοστό του αριθμού των αρχείων που αποθηκεύτηκαν και έχουν μέγεθος μεγαλύτερο των 10 GB.
Μονάδες 4

Γ3.       Να βρίσκει και να εμφανίζει τα ονόματα των δύο μικρότερων σε μέγεθος αρχείων που αποθηκεύτηκαν στον εξωτερικό δίσκο.
Μονάδες 8

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

ΛΥΣΗ

Η άσκηση στηρίζεται στη λογική της ΔΣ3 κεφάλαιο 2.

ΠΡΟΓΡΑΜΜΑ G16ImerisiaPalaio
ΜΕΤΑΒΛΗΤΕΣ
 ΑΚΕΡΑΙΕΣ: Χωρητικότητα, Μέγεθος, Πλήθος_Αρχείων, Πλήθος_10Άνω, Min1, Min2
 ΠΡΑΓΜΑΤΙΚΕΣ: Ποσοστό
 ΧΑΡΑΚΤΗΡΕΣ: Όνομα, Όνομα_Min1, Όνομα_Min2
 ΛΟΓΙΚΕΣ: Τέλος_Αποθήκευσης
ΑΡΧΗ
 ! Γ1
 Πλήθος_Αρχείων <-- 0
 Πλήθος_10Άνω <-- 0
 Χωρητικότητα <-- 1000
 Τέλος_Αποθήκευσης <-- ΨΕΥΔΗΣ
 Min1 <-- 1001                ! Βλέπε παράδειγμα 3, Κεφάλαιο 2
 Min2 <-- 1002
 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
 ΓΡΑΨΕ 'ΔΩΣΤΕ ΟΝΟΜΑ ΑΡΧΕΙΟΥ: '
 ΔΙΑΒΑΣΕ Όνομα
 ΓΡΑΨΕ 'ΔΩΣΤΕ ΜΕΓΕΘΟΣ ΑΡΧΕΙΟΥ: '
 ΔΙΑΒΑΣΕ Μέγεθος
 ΑΝ Χωρητικότητα - Μέγεθος > 0 ΤΟΤΕ
       Χωρητικότητα <-- Χωρητικότητα - Μέγεθος
       Πλήθος_Αρχείων <-- Πλήθος_Αρχείων + 1   ! Γ2
       ΓΡΑΨΕ 'Επιτρεπτή αποθήκευση'
       ΑΝ Μέγεθος > 10 ΤΟΤΕ                    ! Γ2
          Πλήθος_10Άνω <-- Πλήθος_10Άνω + 1
       ΤΕΛΟΣ_ΑΝ

       ! Γ3** (δες στο τέλος β'τρόπο)
       ΑΝ Μέγεθος < Min2 ΤΟΤΕ
          ΑΝ Μέγεθος < Min1 ΤΟΤΕ
             Min2 <-- Min1
             Όνομα_Min2 <-- Όνομα_Min1
             Min1 <-- Μέγεθος
             Όνομα_Min1 <-- Όνομα
          ΑΛΛΙΩΣ
             Min2 <-- Μέγεθος
             Όνομα_Min2 <-- Όνομα
          ΤΕΛΟΣ_ΑΝ
       ΤΕΛΟΣ_ΑΝ
    ΑΛΛΙΩΣ
       Τέλος_Αποθήκευσης <-- ΑΛΗΘΗΣ
    ΤΕΛΟΣ_ΑΝ
 ΜΕΧΡΙΣ_ΟΤΟΥ (Τέλος_Αποθήκευσης = ΑΛΗΘΗΣ)

 ! Γ2
 Ποσοστό <-- Πλήθος_10Άνω / Πλήθος_Αρχείων * 100
 ΓΡΑΨΕ 'Ποσοστό Αρχείων Άνω των 10GB: ', Ποσοστό

 ! Γ3
 ΓΡΑΨΕ 'Μικρότερο Αρχείο 1: ', Όνομα_Min1, ' Χωρητικότητα: ', Min1
 ΓΡΑΨΕ 'Μικρότερο Αρχείο 2: ', Όνομα_Min2, ' Χωρητικότητα: ', Min2
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

! Γ3** Β ΤΡΌΠΟΣ

ΑΝ Μέγεθος < Min1 ΤΟΤΕ
Min2 <– Min1
ΌνομαMin2 <– Όνομα_Min1
Min1 <– Μέγεθος
Όνομα_Min1 <– Όνομα
ΑΛΛΙΩΣ
ΑΝ Μέγεθος < Min2 ΤΟΤΕ
Min2 <– Μέγεθος
ΌνομαMin2 <– Όνομα
ΤΕΛΟΣ
ΑΝ

! Γ3** γ ΤΡΌΠΟΣ

ΑΝ Μέγεθος < Min1 ΤΟΤΕ
Min2 <– Min1
ΌνομαMin2 <– Όνομα_Min1
Min1 <– Μέγεθος
Όνομα_Min1 <– Όνομα
ΤΕΛΟΣ
ΑΝ
ΑΝ Μέγεθος < Min2 KAI Μέγεθος > Min1 ΤΟΤΕ
Min2 <– Μέγεθος
ΌνομαMin2 <– Όνομα
ΤΕΛΟΣ
ΑΝ