Μαθηματικά     Geogebra      Επιμόρφωση         ΑΕΠΠ        ΤΠΕ      Διάφορα      Ρήσεις     Ιστορία     Math-Games  Συνδέσεις      home

 

Ασκήσεις με υποπρογράμματα

 

 

 

1. Φυσαλίδα σε δισδιάστατο πίνακα

Εταιρεία ΡΑΔΙΟΤΑΧΙ έχει 80 ΤΑΧΙ και για 30 ημέρες κατέγραφε τα Km του κάθε ΤΑΧΙ  για κάθε ημέρα με τη βοήθεια προγράμματος
α) Να εισάγονται στους πίνακες ON[80], Β [80,30] τα ονόματα των ΤΑΧΙ ,  και, τα Km του κάθε ΤΑΧΙ  για κάθε ημέρα αντίστοιχα
β)Μια διαδικασία ΦΥΣ δέχεται μονοδιάστατο πίνακα και τον ταξινομεί σε φθίνουσα σειρά .Το πρόγραμμα χρησιμοποιεί τη διαδικασία ΦΥΣ και δημιουργεί τον πίνακα ΒΤ [80,30] που περιέχει τα στοιχεία του Β ταξινομημένα για κάθε ΤΑΧΙ
γ) Να εμφανίζονται για κάθε  ΤΑΧΙ   οι δέκα μεγαλύτερες καταγραφές σε Km και το όνομά του (Θεωρείστε ότι είναι διαφορετικές για κάθε ΤΑΧΙ)
δ) Η εταιρεία λαμβάνει υπόψη τις δέκα μεγαλύτερες καταγραφές σε Km του κάθε ΤΑΧΙ και όποιο έχει σύνολο >999  Km του δίνει ρεπό για τον ερχόμενο μήνα. Να εμφανίζονται τα ονόματα των ΤΑΧΙ που θα πάρουν ρεπό.
(Θεωρείστε ότι η διαδικασία που υλοποιεί την φυσαλίδα βρίσκεται στην βιβλιοθήκη του προγράμματος)

 

 

 

 

 

 

Λύση

 

 





 

! κλήση της διαδικασίας 80 φορές

!κάθε γραμμή του Β γίνεται πίνακας Α παράμετρος στην ΦΥΣ

! Κάθε πίνακας που επιστρέφει η φυσαλίδα γίνεται γραμμή στον νέο πίνακα ΒΤ

 

 

γ ερώτημα

ΠΡΟΓΡΑΜΜΑ Φ
...
ΑΡΧΗ

ΓΙΑ m ΑΠΟ 1 ΜΕΧΡΙ 80
ΔΙΑΒΑΣΕ ON[m]
ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 30
ΔΙΑΒΑΣΕ Β[m,k]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


ΓΙΑ m ΑΠΟ 1 ΜΕΧΡΙ 80
ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 30
A[k]<--Β[m,k]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


ΚΑΛΕΣΕ ΦΥΣ(A )

ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ 30
ΒΤ[m,k] <--A[k]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ  80
ΓΡΑΨΕ
ΟΝ[i]
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 10
 ΓΡΑΨΕ ΒΤ[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ  80
Αθρ<--0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 10
 Αθρ<-- Αθρ +ΒΤ[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ αθρ>999 ΤΟΤΕ
ΓΡΑΨΕ
ΟΝ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Δεν απαιτείται να γράψουμε την φυσαλίδα

 

 

 

 

 

δ ερώτημα

 

 

 

 
 

 

 

 

 

 

2. Να αναπτύξετε πρόγραμμα το οποίο θα διαβάζει τους βαθμούς (τύπου ακεραίου) καθώς και τα ονόματα το πολύ 100 μαθητών. Η εισαγωγή θα ολοκληρώνεται είτε όταν εισαχθούν 100 μαθητές είτε όταν ο χρήστης δώσει μη έγκυρο βαθμό. Θεωρείστε ότι θα διαβαστεί ένας τουλάχιστο βαθμός. Στην περίπτωση που οι πίνακες δεν είναι 100 στοιχείων  θα γεμίζονται τα υπόλοιπα στοιχεία τους με μηδέν για βαθμό και με ’’  ’’  (κενό) για όνομα.  

Για το πρόγραμμα αυτό να αναπτύξετε και να χρησιμοποιήσετε τα εξής υποπρογράμματα:

1.    Διαδικασία Δ1  η οποία θα δέχεται ως είσοδο έναν πίνακα 100 ακεραίων και ένα άλλο 100 χαρακτήρων, και θα τους ταξινομεί κατά φθίνουσα σειρά

2.    Διαδικασία Δ2 η οποία θα δέχεται ως είσοδο έναν πίνακα 100 στοιχείων, έναν βαθμό και θα επιστρέφει την τιμή αληθής ή ψευδής ανάλογα αν υπάρχει ο βαθμός στον πίνακα καθώς και  πόσες φορές αυτός υπάρχει στον πίνακα

Στο τέλος το κύριο πρόγραμμα θα εμφανίζει  τα ονόματα των μαθητών   καθώς και τους βαθμούς τους από τους καλύτερους μέχρι τους χειρότερους ως εξής:

οι παρακάτω έχουν  Βαθμό: 20
            
   Κωτσόπουλος Χρήστος

οι παρακάτω έχουν  Βαθμό:    18
         Κωτσόπουλος Νίκος     Βασίλείου Στρατος    Αντωνίου
Μάκης

οι παρακάτω έχουν  Βαθμό:17
                   Μπουρούσης Πέτρος
                          
……………………………

Στην περίπτωση που κάποιον συγκεκριμένο βαθμό (από 1 έως και 20) δεν τον έχει κανένας μαθητής, τότε, όπως φαίνεται και στο παράδειγμα, να μην εμφανίζεται καθόλου

 

ΛΥΣΗ

ΠΡΟΓΡΑΜΜΑ Α
…..
ΑΡΧΗ
Ι
<--0
ΑΡΧΗ ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ Β
ΑΝ Β >=1 ΚΑΙ Β<=20 ΤΟΤΕ
Ι
<--Ι+1
ΔΙΑΒΑΣΕ ΟΝ[Ι]
Β[Ι]
<--Β
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ( Β<1 Η Β>20) Η (Ι=100)
! γέμισμα των πινάκων με κενά και μηδέν αν απαιτούνται

ΑΝ ΟΧΙ(Ι=100) ΤΟΤΕ
ΓΙΑ Κ ΑΠΟ Ι+1 ΜΕΧΡΙ 100
Β[Ι]
<--0
ΟΝ[Ι]
<--’’ ‘’
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ

λ<--0

ΓΙΑ i ΑΠΟ 20 ΜΕΧΡΙ 1
 
ΚΑΛΕΣΕ Δ2(Β,i,done,Ν)
 
ΑΝ
done=
ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ ‘
οι παρακάτω έχουν  Βαθμό:’,Β[i]
ΓΙΑ m ΑΠΟ 1 ΜΕΧΡΙ N
λ<--λ+1

ΓΡΑΨΕ ΟΝ[λ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_
ΠΡΟΓΡΑΜΜΑ Α

ΔΙΑΔΙΚΑΣΙΑ Δ1(Β,ΟΝ)

….
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100
ΓΙΑ
j ΑΠΟ 100 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ Β[
j-1]< Β[j] ΤΟΤΕ
ΑΝΤΙΜΕΤΑΘΕΣΕ Β[
j-1]< Β[j]
ΑΝΤΙΜΕΤΑΘΕΣΕ ΟΝ[
j-1]< ΟΝ[j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Δ1
 

ΔΙΑΔΙΚΑΣΙΑ Δ2(Β,βαθμός,done,k)
….
ΑΡΧΗ
k<--0
ΓΙΑ 
i ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΝ βαθμός= Β[i] ΤΟΤΕ
k<--k+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ
k=0 ΤΟΤΕ
done<--ΨΕΥΔΗΣ
ΑΛΛΙΩΣ
done<--ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Δ2
 

 

3. Να αναπτύξετε πρόγραμμα με το οποίο
α) Να εισάγονται οι βαθμοί 30 μαθητών  σε ένα διαγώνισμα μαθηματικών  στον πίνακα Β αλλά οι βαθμοί να ελέγχονται αν είναι στην κλίμακα 0-100. Αν δε κατά λάθος η εσκεμμένα δοθεί άλλος βαθμός τότε να υπάρχει μήνυμα που να προτρέπει να ξαναδοθεί βαθμός

Να εισάγονται και τα ονόματά τους στο πίνακα ΟΝ. Ο έλεγχος αν ένας βαθμός είναι σωστός να γίνεται μέσω συνάρτησης ΣΥΝ η οποία θα επιστρέφει την τιμή 1 άν είναι αποδεκτός και την τιμή 0 διαφορετικά
β) Να εμφανίζει πόσοι βαθμοί είναι πάνω από την βάση   (βάση το 50) καθώς και το αντίστοιχο ποσοστό τους
γ) Να υπολογίζει τον μέσο όρο βαθμολογίας και να εμφανίζει τα ονόματα αυτών που ξεπερνούν τον μέσο όρο
καθώς και το αντίστοιχο ποσοστό τους
δ) Αν ο μέσος όρος βαθμολογίας είναι μικρότερος του 60 τότε ο υπεύθυνος καθηγητής αποφασίζει να αυξήσει όλες τις βαθμολογίες κατά 3 μονάδες εκτός αυτών που έχουν >97 που θα τις κάνει 100 .Το πρόγραμμα θα καλεί κατάλληλο υποπρόγραμμα ΥΠ  που θα δημιουργεί νέο πίνακα ΝΕΟ[30] με τις τροποποιημένες βαθμολογίες και θα τον επιστρέφει.
στην συνέχεια το κύριο πρόγραμμα θα εμφανίζει τα ονόματα αυτών που έχουν 100 ως εξής:
 
ΑΝΔΡΕΑΣ ΕΙΧΕ 100 ΠΡΙΝ ΤΗΝ ΤΡΟΠΟΠΟΙΗΣΗ
 
ΝΙΚΟΣ ΕΧΕΙ 100 ΜΕΤΑ ΤΗΝ ΤΡΟΠΟΠΟΙΗΣΗ  

...
 

ΛΥΣΗ

Κ
<--0  Σ<--0
Λ<--0
ΓΙΑ
i ΑΠΟ 1 ΜΕΧΡΙ
30
ΔΙΑΒΑΣΕ Β[
i]
ΟΣΟ ΣΥΝ(Β,
i)=0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ 'ΔΩΣΕ ΒΑΘΜΟ ΜΕΤΑΞΥ 0 ΚΑΙ 100'
ΔΙΑΒΑΣΕ Β[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    Σ
<--Σ+Β[i]
ΔΙΑΒΑΣΕ ΟΝ[
i]
ΑΝ
Β[i]>50 ΤΟΤΕ
Κ<--Κ+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΓΡΑΨΕ Κ, (Κ/30)*100
!      γ ερώτημα
MO
<--Σ/30
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΑΝ Β[i]>
MO  ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i]
Λ
<--Λ+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΠΟΣΟΣΤΟ
(Λ/30)*100
!      δ ερώτημα
ΑΝ MO<60  ΤΟΤΕ
ΚΑΛΕΣΕ ΥΠ( Β,ΝΕΟ)
 
ΤΕΛΟΣ_ΑΝ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΑΝ Β[i] =100 ΤΟΤΕ
ΓΡΑΨΕ
ΟΝ[i],
''ΕΙΧΕ 100 ΠΡΙΝ ΤΗΝ ΤΡΟΠΟΠΟΙΗΣΗ''
ΑΛΛΙΩΣ_ΑΝ
ΝΕΟ[i] =100  ΤΟΤΕ
ΓΡΑΨΕ
ΟΝ[i],
''ΕΧΕΙ 100 ΜΕΤΑ ΤΗΝ ΤΡΟΠΟΠΟΙΗΣΗ''
ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 
ΣΥΝΑΡΤΗΣΗ ΣΥΝ(Β,i): ΑΚΕΡΑΙΑ
...
ΑΡΧΗ

ΑΝ Β[i]>100 Η Β[i]<0 ΤΟΤΕ
ΣΥΝ
<--1
ΑΛΛΙΩΣ
ΣΥΝ
<--0
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ ΥΠ(Α,Β)
...
ΑΡΧΗ
 
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΑΝ Β[i]<=97 ΤΟΤΕ
 
ΝΕΟ[
i]
<-- Β[i]+3
ΑΛΛΙΩΣ
ΝΕΟ[i]
<-- 100
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

4. Τι θα εκτυπώσει το παρακάτω πρόγραμμα  αν δοθούν ως αρχικές τιμές στην εντολή Διάβασε Α, Β, Γ οι τιμές 6,3,5 αντίστοιχα ;
                                                                                                                 

ΠΡΟΓΡΑΜΜΑ Α

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ : Α, Β, Γ

ΛΟΓΙΚΕΣ : ΤΙΜΗ

ΑΡΧΗ

ΔΙΑΒΑΣΕ Α, Β, Γ

ΓΡΑΨΕ Α, Β, Γ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

   ΚΑΛΕΣΕ Δ1(Α, Β, Γ, ΤΙΜΗ)

  ΓΡΑΨΕ Α, Β, Γ

ΜΕΧΡΙΣ_ΟΤΟΥ ΤΙΜΗ = ΑΛΗΘΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

 

 

ΔΙΑΔΙΚΑΣΙΑ Δ1(Γ, Β, Α, ΤΙΜΗ)

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ : Α, Β, Γ

ΠΡΑΓΜΑΤΙΚΕΣ : Χ

ΛΟΓΙΚΕΣ : ΤΙΜΗ

ΑΡΧΗ

Χ <--2*Γ  MOD (Β + Α)

ΓΡΑΨΕ Χ

ΤΙΜΗ <-- ΥΠΟΛΟΓΙΣΜΟΣ(Χ, Γ)

Γ<-- Γ + 2

Α <-- Α + 1

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

 

ΣΥΝΑΡΤΗΣΗ Σ1(Ζ,Β):ΛΟΓΙΚΗ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ : Β

ΠΡΑΓΜΑΤΙΚΕΣ: Ζ, Υ

ΑΡΧΗ

Y <-- Ζ – Α_Μ(Β/2)

AN Y > 0 TOTE

ΥΠΟΛΟΓΙΣΜΟΣ ß ΑΛΗΘΗΣ

ΑΛΛΙΩΣ

ΥΠΟΛΟΓΙΣΜΟΣ ß ΨΕΥΔΗΣ

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

 

 

5. Στο τμήμα ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΔΙΚΤΥΩΝ ΤΕΙ ΛΑΡΙΣΑΣ, ένας φοιτητής στo πλαίσιo του μαθήματος «Πληροφοριακά  Συστήματα»
έχει τις εξής υποχρεώσεις :
να κάνει 3 ασκήσεις,
να δώσει μια Πρόοδο (Πρόοδος = διαγώνισμα πριν τις εξετάσεις) και
να δώσει την τελική εξέταση.
Προϋπόθεση για να συμμετάσχει στην τελική εξέταση είναι ο μέσος όρος των 3 ασκήσεων και της Προόδου να είναι από 5 και πάνω.

Ο υπολογισμός του τελικού βαθμού γίνεται ως εξής :

α) σε περίπτωση που ο βαθμός τελικής εξέτασης είναι κάτω του 5 τότε κάθε βαθμός άσκησης συμμετέχει σε ποσοστό 10% στον τελικό βαθμό, ο βαθμός Προόδου συμμετέχει σε ποσοστό 15% στον τελικό βαθμό και ο βαθμός της τελικής εξέτασης συμμετέχει σε ποσοστό 55% στον τελικό βαθμό.

β) διαφορετικά  κάθε βαθμός άσκησης συμμετέχει σε ποσοστό 6% στον τελικό βαθμό, ο βαθμός Προόδου συμμετέχει σε ποσοστό 12% στον τελικό βαθμό και ο βαθμός της τελικής εξέτασης συμμετέχει σε ποσοστό 70% στον τελικό βαθμό.

 1.   Να γράψετε ΔΙΑΔΙΚΑΣΙΑ Δ1 η οποία διαβάζει το βαθμό του φοιτητή σε μια υποχρέωσή τουκαι τον αποθηκεύει στην πραγματική μεταβλητή Β. Η διαδικασία θα πρέπει να εξασφαλίζει ότι ο βαθμός που διαβάζεται είναι από 0 έως και 10.                                                                

 2.   Να γράψετε ΣΥΝΑΡΤΗΣΗ Σ1, η οποία δέχεται τους 5 βαθμούς (τρεις  βαθμοί ασκήσεων , μια πρόοδος και μια τελική εξέταση)  κάθε φοιτητή και υπολογίζει τον τελικό βαθμό στο μάθημα «Πληροφοριακά  Συστήματα».                                                                                         

3. Να γράψετε πρόγραμμα που: 
  1. Θα διαβάζει τα ονοματεπώνυμα και τους βαθμούς στις υποχρεώσεις στο μάθημα Λειτουργικά Συστήματα ενός συνόλου φοιτητών. Για την εισαγωγή και τον έλεγχο των βαθμών να γίνεται χρήση της Διαδικασίας Δ1  Η είσοδος τερματίζεται μόλις δοθεί ως ονοματεπώνυμο το κενό.
  1. Θα υπολογίζει και θα εμφανίζει τον τελικό βαθμό του κάθε φοιτητή που έλαβε μέρος στην τελική εξέταση κάνοντας χρήση της συνάρτησης Σ1.
  1. Θα εμφανίζει το ποσοστό των φοιτητών που δεν απέκτησαν το δικαίωμα να λάβουν μέρος στην τελική εξέταση .

 

Λύση
 

ΔΙΑΔΙΚΑΣΙΑ Δ1(Β)
...
ΑΡΧΗ
ΑΡΧΗ ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ Β
ΜΕΧΡΙΣ_ΟΤΟΥ Β>=0 ΚΑΙ  Β<=10
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ ΤΒ(Β1,Β2,Β3,Β4,Β5):ΠΡΑΓΜΑΤΙΚΗ
...
ΑΡΧΗ
ΑΝ
Β5<5 ΤΟΤΕ ΤΒ->Β1+Β2Β3*Ο,10+Β4*0,15+Β5*0,55
ΑΝ
Β5>=5 ΤΟΤΕ ΤΒ->Β1+Β2Β3*Ο,06+Β4*0,12+Β5*0,7
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΠΡΟΓΡΑΜΜΑ
...
ΑΡΧΗ
ΑΡΧΗ ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ονομα
λ->0
κ->0
Σ->0
ΑΝ ονομα <> ''  '' ΤΟΤΕ
λ->λ+1
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
ΚΑΛΕΣΕ Δ1(Β)
Β[i]->Β
Σ->Σ+Β[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ
/4) >5  ΤΟΤΕ   ΚΑΛΕΣΕ Δ1(Β)
Β[5]->Β
ΑΝ /4) <=5  ΤΟΤΕ  κ->κ+1
τελικός
->ΤΒ(Β[1],Β[2],Β[3],Β[4],Β[5])
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ
ονομα = ''  ''
ΑΝ λ<>0 ΤΟΤΕ ΓΡΑΨΕ (κ/λ)*100

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

 

 

6. Συλλογοι

Α) Να γράψετε συνάρτηση η οποία θα δέχεται
ένα πίνακα χαρακτήρων 100 θέσεων και
μια μεταβλητή τύπου χαρακτήρα (όνομα).
Η συνάρτηση θα ελέγχει αν υπάρχει το συγκεκριμένο όνομα μέσα στον πίνακα και θα επιστρέφει τη θέση του πίνακα στην οποία βρέθηκε το όνομα ή 0 στην περίπτωση που το όνομα δε βρέθηκε.                                                                                 

Β) Δύο από τους συλλόγους που έχουν ιδρυθεί σε μία πόλη είναι ο Α και ο Ε. Δεχόμαστε ότι οι 2 αυτοί σύλλογοι έχουν από 100 μέλη ακριβώς.
Να γράψετε πρόγραμμα σε ΓΛΩΣΣΑ που θα αποθηκεύει σε έναν μονοδιάστατο πίνακα 100 θέσεων τα ονόματα όσων μελών είναι εγγεγραμμένα στο σύλλογο Α και σε έναν δεύτερο μονοδιάστατο πίνακα 100 θέσεων τα ονόματα όσων μελών είναι εγγεγραμμένα στο σύλλογο Ε 

Τα ονόματα που ανήκουν σε ένα σύλλογο είναι όλα διαφορετικά μεταξύ τους, ενώ κάποιος μπορεί να ανήκει και στους 2 συλλόγους. Χρησιμοποιώντας τη συνάρτηση του προηγούμενου ερωτήματος να εμφανιστούν:

ι) Τα ονόματα που ανήκουν στο σύλλογο Α και δεν ανήκουν στο σύλλογο Ε        
ιι) Τα ονόματα που ανήκουν στο σύλλογο Ε και δεν ανήκουν στο σύλλογο Α.
ιιι)
Τα ονόματα που ανήκουν και στους δύο συλλόγους

π.χ.
ΑΘΑΝΑΣΙΟΥ στον Α σύλλογο
ΝΙΚΟΥ στον Ε σύλλογο
ΣΤΑΜΟΥ στον Ε σύλλογο
ΑΝΔΡΕΟΥ και στους δύο
κλπ...

 

 

 

Λύση 
 ΣΥΝΑΡΤΗΣΗ Λ(Π,όνομα):ΑΚΕΡΑΙΑ
 ...
ΑΡΧΗ
done=ΨΕΥΔΗΣ
θ->0
i ->0
ΟΣΟ i<=100 ΚΑΙ done=ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ Π[i]=
όνομα ΤΟΤΕ
done=ΑΛΗΘΗΣ
θ
-> i
ΑΛΛΙΩΣ
i->i+1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ done=ΑΛΗΘΗΣ ΤΟΤΕ
Λ-> θ
ΑΛΛΙΩΣ

Λ-> 0
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


ΠΡΟΓΡΑΜΜΑ
...
ΑΡΧΗ
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ100
ΔΙΑΒΑΣΕ Α[i],Β[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
Ρ->
Α[i]
ΡΡ->Β[
i]
Κ->Λ(Α,ΡΡ)

Ξ->Λ(Β,Ρ)
ΑΝ Κ<>0 ΚΑΙ Ξ=0 ΤΟΤΕ  ΓΡΑΨΕ
Α[i] ,''στον Α σύλλογο''
ΑΝ Ξ<>0 ΚΑΙ Κ=0 ΤΟΤΕ ΓΡΑΨΕ Β[i] ,''στον Ε σύλλογο''
ΑΝ Ξ<>0 ΚΑΙ Κ<>0 ΤΟΤΕ ΓΡΑΨΕ Β[i] ,''και στους δύο''
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

1)Να καταχωρεί σε έναν πίνακα με όνομα Κ  την τιμή 'R ' εάν η ταινία έχει ενοικιαστεί ή την τιμή 'FR' αν η ταινία είναι διαθέσιμη για κάθε μία από τις 1000 ταινίες που διαθέτει το βίντεο κλαμπ προς ενοικίαση για κάθε μία από τις 30 ημέρες ενός μήνα. Να γίνεται έλεγχος εισόδου τιμών στον πίνακα Κ. Επίσης να καταχωρεί στον πίνακα ΟΝ  [1000,30]  το όνομα του πελάτη σε περίπτωση που μια ταινία έχει ενοικιαστεί ενώ σε αντίθετη περίπτωση να καταχωρεί στον πίνακα την τιμή 'οχι'.

 2)Να καλεί υποπρόγραμμα ΥΠ1 που να υπολογίζει και να επιστρέφει στο κυρίως πρόγραμμα τα συνολικά έσοδα της 15ης ημέρας αν γνωρίζουμε ότι η μίσθωση κάθε ταινίας ανέρχεται στο ποσό των 1,5 ευρώ ανά ημέρα.

 3)Να καλεί υποπρόγραμμα ΥΠ2 που να υπολογίζει τα μηνιαία έσοδα κάθε ταινίας και να τα επιστρέφει στο κυρίως πρόγραμμα αν γνωρίζουμε ότι η μίσθωση κάθε ταινίας ανέρχεται στο ποσό των 1,5 ευρώ ανά ημέρα.

 4)Να υπολογίζει και να εμφανίζει τα έσοδα από τις 5 πιο δημοφιλείς ταινίες για τον μήνα.(όσο περισσότερες ημέρες έχει ενοικιαστεί μια ταινία τόσο πιο δημοφιλής είναι!) 

5)Να καλεί υποπρόγραμμα ΥΠ3 που να διαβάζει το όνομα ενός πελάτη και να υπολογίζει την συνολική του χρέωση για ολόκληρο τον μήνα. Στην περίπτωση που ο πελάτης δεν βρεθεί να εμφανίζει κατάλληλο μήνυμα.
(ένας πελάτης μπορεί να νοικιάσει απεριόριστο πλήθος ταινιών).

 6)Να διαβάζει σε ένα πίνακα με όνομα ΕΤΑΙΡΕΙΕΣ [10] τον αριθμό των ταινιών που αντιστοιχούν σε κάθε εταιρεία που διανέμει τις ταινίες της στο βίντεο κλαμπ. Η χρέωση της κάθε ταινίας στο βίντεο κλαμπ γίνεται κλιμακωτά και σύμφωνα με τον παρακάτω πίνακα. Να βρεθούν τα συνολικά κέρδη οι ζημιές του βίντεο κλαμπ για αυτόν τον μήνα αν το κέρδος υπολογίζεται ως η διαφορά των εσόδων(από την ενοικίαση ταινιών στους πελάτες 1,5 ευρώ ανά ημέρα) μείον τα έξοδα (από την μίσθωση των ταινιών από τις εταιρείες διανομής)

ΑΡΙΘΜΟΣ ΤΑΙΝΙΩΝ ΧΡΕΩΣΗ ΑΝΑ ΤΑΙΝΙΑ
ΕΩΣ 20 1  €
ΑΠΟ 21 ΜΕΧΡΙ 60 Ο,8 €
ΠΕΡΙΣΣΟΤΕΡΟ

ΑΠΟ 60

0,5 €

 

 

Περιγραφική λύση 

K[1000,30]

R R FR FR ... R
FR R  R   ...  
... ...     ...  
R FR R FR ... R

ΟΝ  [1000,30]

Νίκου Θάνου Σπανός οχι ... οχι
Κώνστα Θάνου Αυγέρος Νίκου ... οχι
... ...     ...  
οχι οχι Νίκου οχι ... Ανδρέου

Το υποπρόγραμμα ΥΠ1 θέλει παραμέτρους (Κ,Σ) όπου Κ ο πίνακας που θα του δοθεί και Σ = μετρητής *1,5 που θα το υπολογίσει και θα το επιστρέψει

π.χ 15η  στήλη έχει 2R θα επιστρέψει Σ=2*1,5 (μετράμε τα R)

Το υποπρόγραμμα ΥΠ2 θέλει παραμέτρους (Κ,B)  όπου Β πίνακας [1000,1] με τιμές (μετρητής των R επί 1,5 )
επιστρέφει τον Β στο πρόγραμμα

Το πρόγραμμα υλοποιεί φυσαλίδα για τον Β με φθίνουσα σειρά και εμφανίζει τα 5 πρώτα στοιχεία

Το ΥΠ3  θέλει παράμετρο τον ΟΝ διαβάζει ένα όνομα και το αναζητά στον ΟΝ  [1000,30] (σειριακά) και μετρά πόσες φορές εμφανίζεται (δεν επιστρέφει τιμή)
 

ΕΤΑΙΡΕΙΕΣ [10]
 
12
55
...
155

Το πρόγραμμα ενώ διαβάζει τον πίνακα ΕΤΑΙΡΕΙΕΣ [10]ελέγχει τις τιμές με τον πίνακα  χρέωσης και υπολογίζει κλιμακωτά την χρέωση. Αθροίζει την χρέωση για κάθε εταιρεία (αυτά είναι τα έξοδα ) τα έσοδα είναι το άθροισμα των στοιχείων του Β
κλπ.

8. Με την βοήθεια του τμηματικού προγραμματισμού να γίνουν τα εξής:

α) Να γίνει διαδικασία Δ η οποία θα διαβάζει έναν πίνακα ακεραίων αριθμών 100 θέσεων και θα τον επιστρέφει στο κύριο πρόγραμμα.

β) Να δημιουργηθεί διαδικασία ΥΠΟΠΡ1 η οποία θα δέχεται έναν πίνακα ακεραίων αριθμών 100 θέσεων καθώς και ένα στοιχείο το οποίο θα αναζητηθεί στον πίνακα και θα επιστρέφει:

1. την πρώτη θέση στην οποία υπάρχει το υπό αναζήτηση στοιχείο και ΑΛΗΘΗΣ, αν αυτό υπάρχει.

2. μηδέν και ΨΕΥΔΗΣ, αν αυτό δεν υπάρχει.

γ) Να δημιουργηθεί διαδικασία ΥΠΟΠΡ 2 η οποία θα δέχεται έναν πίνακα ακεραίων αριθμών 100 θέσεων και το υπό αναζήτηση στοιχείο και θα εμφανίζει όλες τις θέσεις στις οποίες αυτό υπάρχει (αν υπάρχει).

δ) Να δημιουργήσετε συνάρτηση ΥΠΟΠΡ3  η οποία θα δέχεται έναν πίνακα ακεραίων αριθμών 100 θέσεων και το υπό αναζήτηση στοιχείο και θα επιστρέφει την τελευταία θέση του πίνακα στην οποία αυτό παρατηρήθηκε. Αν δεν υπάρχει σε καμιά να επιστρέφεται το μηδέν.

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

 

 

 

 

9.                            ΘΕΜΑ Γ επαναλ 2010

Ένα σύστημα υπολογιστή χρησιμοποιεί για τον έλεγχο πρόσβασης των χρηστών του έναν πίνακα 1000 γραμμών και 3 στηλών με τα στοιχεία τους. Σε κάθε γραμμή του αποθηκεύει, στην πρώτη στήλη το όνομα πρόσβασης του χρήστη, στη δεύτερη στήλη το συνθηματικό του και στην τρίτη έναν από τους χαρακτήρες «Σ» ή «Α». (Ο χαρακτήρας «Σ» δηλώνει ότι το συνθηματικό συνεχίζει να ισχύει, ενώ ο χαρακτήρας «Α» δηλώνει ότι το συνθηματικό πρέπει να αλλάξει).

Θεωρήστε ότι υπάρχει ένα κύριο πρόγραμμα που υλοποιεί τα παραπάνω και καλεί τη διαδικασία ΕΛΕΓΧΟΣ η οποία ελέγχει την πρόσβαση του χρήστη στο σύστημα.

Να γράψετε τη διαδικασία ΕΛΕΓΧΟΣ η οποία να περιλαμβάνει:

Γ1. Τμήμα δηλώσεων.

  • Κύριο τμήμα το οποίο:

    Γ2. Διαβάζει το όνομα και το συνθηματικό του χρήστη. Ελέγχει αν το όνομα πρόσβασης και το συνθηματικό είναι έγκυρα, δηλαδή υπάρχουν στον πίνακα χρηστών και αναφέρονται στον ίδιο χρήστη. Αν υπάρχουν, εμφανίζει το μήνυμα «ΚΑΛΩΣ ΗΡΘΑΤΕ», διαφορετικά  

    εμφανίζει το μήνυμα «ΛΑΘΟΣ ΟΝΟΜΑ ΠΡΟΣΒΑΣΗΣ Ή ΣΥΝΘΗΜΑΤΙΚΟ» και ζητά εκ νέου την εισαγωγή των δύο αυτών στοιχείων (ονόματος πρόσβασης και συνθηματικού) μέχρι να δοθούν έγκυρα στοιχεία.

  • Γ3. Μετά την εμφάνιση του μηνύματος «ΚΑΛΩΣ ΗΡΘΑΤΕ» ελέγχει αν το συνθηματικό χρειάζεται αλλαγή. Αν χρειάζεται, ζητά από τον χρήστη την εισαγωγή νέου συνθηματικού δύο φορές (η δεύτερη ως επιβεβαίωση) μέχρις ότου το συνθηματικό και η επιβεβαίωσή του ταυτιστούν. Όταν ταυτιστούν, η διαδικασία αντικαθιστά το παλιό συνθηματικό με το νέο και τον αντίστοιχο χαρακτήρα «Α» της τρίτης στήλης με το «Σ».