17/05/2013

 

ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ

ΤΕΜ-102: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ

 

4η ΣΕΙΡΑ ΑΣΚΗΣΕΩΝ

 

Ημερομηνία Παράδοσης: Μέχρι το Σάββατο 25/05 στις 24:00. Η παράδοση θα γίνει στέλνοντας με email το αρχείο αναφοράς στην διδάσκουσα ΚΑΙ στο/στη βοηθό της εργαστηριακής ομάδας στην οποία είστε εγγεγραμμένοι.

Το email θα έχει ως subject: C_Lab4_AM_OMx. (π.χ. C_Lab4_1212_OM2)

Θα παραδώσετε κάθε άσκηση σε ξεχωριστό αρχείο με ονόματα: Lab41_ΑΜ.c, Lab42_ΑΜ.c όπου ΑΜ είναι ο αριθμός μητρώου σας και ΟΜ η ομάδα σας.

Επίσης θα υπάρχει στην αρχή κάθε προγράμματος σχόλιο της μορφής:

 

/*

* TEM-102 4h Ergastiriaki Askisi

* Onoma: …… (your name)

* A.M. : ….(your AM)

*/

 

1.      Ένα μικρό σχολείο διαθέτει συνολικά 8 τμήματα. Κάθε τμήμα έχει τον αριθμό του (1,2,3 κλπ…) και περιέχει ένα συγκεκριμένο αριθμό μαθητών (η μέγιστη χωρητικότητα είναι 15 μαθητές ανά τμήμα).  Να γίνει πρόγραμμα στο οποίο να ορίζονται 2 δομές, η μία να περιέχει για κάθε μαθητή τις πληροφορίες: ηλικία, ύψος, βάρος και η άλλη να χαρακτηρίζει το τμήμα (με πεδία: αρίθμηση, αριθμό μαθητών και τους μαθητές).

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

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

 

 

2.      Βρισκόμαστε στο τηλεπαιχνίδι Money Drop. Οι κανόνες του παιχνιδιού είναι οι εξής:

 

Κάθε παίκτης έχει στην διάθεσή του 50000 ευρώ και 8 ερωτήσεις. Για κάθε ερώτηση υπάρχουν 4 απαντήσεις αλλά μία είναι η σωστή. Ο παίκτης έχει δικαίωμα να τοποθετήσει τα χρήματα του σε 3 από τις 4 απαντήσεις σπάζοντας τα σε ίσα ποσά. Ο παίκτης συνεχίζει προσπαθώντας να απαντήσει και τις 8 ερωτήσεις, αλλά αποχωρεί από το παιχνίδι όταν μηδενιστούν τα χρήματά του.

 

a)         Να γίνει πρόγραμμα που να προσομοιώνει το τηλεπαιχνίδι με τα εξής δεδομένα: Στο παιχνίδι θα συμμετέχουν διαδοχικά 3 παίκτες. Το πρόγραμμα θα ρωτάει για κάθε παίκτη σε πόσα κομμάτια αποφασίζει να σπάσει το ποσό του (σε περίπτωση που δοθεί απάντηση διαφορετική του 1-3 να βγαίνει μήνυμα λάθους και να ξαναζητάει το νούμερο) και αν η απάντησή του είναι σωστή ή λάθος, για κάθε μία από τις ερωτήσεις (με χρήση συμβολοσειράς που θα παίρνει ως τιμή το “swsta” ή οτιδήποτε άλλο). Αν ο παίκτης απαντήσει σωστά θα συνεχίζει στην επόμενη ερώτηση, υπολογίζοντας το ποσό το οποίο έμεινε στον παίκτη ανάλογα με τον τρόπο που έπαιξε.

Να ανοίξετε ένα αρχείο με το όνομα “MoneyDrop.txt”, όπου το πρόγραμμα θα καταγράφει για κάθε παίκτη τον αριθμό της ερώτησης και δίπλα το ποσό με το οποίο ο παίκτης ξεκινάει κάθε ερώτηση.

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

1

50000

2

25000

3

12500

1

50000

2

25000

1

50000

2    

50000

3

16.666

Στην συνέχεια:

b)         Χρησιμοποιήστε τα δεδομένα του αρχείου MoneyDrop.txt και δημιουργήστε μια συνάρτηση μέσα στην οποία θα βρείτε τον νικητή του παιχνιδιού. Ως νικητής ορίζεται αυτός/ή που έχει απαντήσει στις περισσότερες ερωτήσεις. Στην περίπτωση που έχουμε 2 ή και τους 3 παίκτες με τον ίδιο αριθμό ερωτήσεων, νικητής είναι αυτός που έφτασε στην συγκεκριμένη ερώτηση με τα περισσότερα χρήματα. Αφού ελέγξετε όλες τις δυνατές περιπτώσεις, να καταγράφεται στο τέλος του ίδιου αρχείου η εξής πληροφορία:

“The winner is the … player, who reached to the … question with an amount of: ….”

ή “All (or both … and …) players are winners, they reached to the … question with an amount of: ….”

Η ίδια πληροφορία να εκτυπώνετε και στην οθόνη. (Μπορείτε να χρησιμοποιήσετε μια void συνάρτηση).                                                                                     [60 μονάδες]