You are on page 1of 2

ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ

ΣΧΟΛΗ ΗΜΜΥ
ΕΡΓΑΣΤΗΡΙΟ ΔΙΑΝΕΜΗΜΕΝΩΝ
ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΕΦΑΡΜΟΓΩΝ
http://courses.ece.tuc.gr

ΗΜΜΥ ΠΛΗ 101 - ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΚΑΙ ΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΕΞΑΣΚΗΣΗ ΣΤΙΣ ΔΟΜΕΣ (STRUCTURES)
ΥΠΕΥΘΥΝΟΙ ΕΡΓΑΣΤΗΡΙΟΥ: ΑΝΕΣΤΗΣ ΓΕΩΡΓΙΟΣ, ΚΑΖΑΣΗΣ ΦΩΤΗΣ, ΜΟΥΜΟΥΤΖΗΣ ΝΕΚΤΑΡΙΟΣ

A. Μουσικά άλμπουμ
Κατασκευάστε ένα πρόγραμμα στη γλώσσα C το οποίο θα διαβάζει στοιχεία για μουσικά άλμπουμ και θα εμφανίζει
το σύνολο των πωλήσεων για συγκεκριμένη εταιρεία παραγωγής με βάση τον κωδικό της.
Για το λόγο αυτό, θα ορίσετε μια δομή (struct) η οποία θα καταγράφει τα στοιχεία κάθε μουσικού άλμπουμ με τα
εξής πεδία:
1. Το όνομα του άλμπουμ (αλφαριθμητικό το πολύ 50 χαρακτήρων συμπεριλαμβανομένου και του
ειδικού χαρακτήρα '\0').
2. Κωδικός εταιρείας παραγωγής (ακέραιος αριθμός).
3. Πωλήσεις (πραγματικός αριθμός που αντιστοιχεί στο ποσό σε ευρώ από τις πωλήσεις του άλμπουμ).
Το πρόγραμμα θα ρωτά στην αρχή για πόσα άλμπουμ θα δοθούν στοιχεία.
Ο χρήστης θα δίνει το επιθυμητό πλήθος άλμπουμ και το πρόγραμμα θα δεσμεύει δυναμικά μνήμη κατάλληλου
μεγέθους για μια διάταξη δομών όπου θα αποθηκευτούν τα στοιχεία που θα δοθούν στη συνέχεια.
Μετά από τη δέσμευση μνήμης, το πρόγραμμα, καλώντας μια κατάλληλη συνάρτηση που θα κατασκευάσετε, θα
διαβάζει τα στοιχεία για κάθε άλμπουμ (όνομα, κωδικός εταιρείας και ποσό πωλήσεων) και θα τα αποθηκεύει στις
δομές της διάταξης.
Θεωρείστε ότι όλα τα δεδομένα εισόδου δίνονται στην έγκυρη μορφή τους και δεν χρειάζεται το πρόγραμμά σας
να κάνει κανένα επιπρόσθετο έλεγχο.
Στη συνέχεια, καλώντας μία άλλη συνάρτηση που επίσης θα κατασκευάσετε, το πρόγραμμά σας θα βρίσκει και θα
επιστρέφει μέσω παραμέτρων (call by reference) το συνολικό ποσό πωλήσεων και το πλήθος των άλμπουμ για μία
εταιρεία παραγωγής για την οποία θα δίνεται ως παράμετρος της συνάρτησης ο κωδικός της. Πριν κληθεί αυτή η
συνάρτηση, το πρόγραμμά σας θα πρέπει να ζητά από το χρήστη να δώσει τον κωδικό της εταιρείας για την οποία
ενδιαφέρεται. Οι υπολογιζόμενες τιμές, μετά την επιστροφή της συνάρτησης, θα εκτυπώνονται στην οθόνη.
Τέλος, καλώντας μία άλλη συνάρτηση που θα κατασκευάσετε, το πρόγραμμά σας θα βρίσκει και θα τυπώνει στην
οθόνη τα στοιχεία των άλμπουμ τα οποία έχουν πωλήσεις πάνω από ένα ποσό που θα δίνεται ως παράμετρος στη
συνάρτηση. Πριν κληθεί αυτή η συνάρτηση, το πρόγραμμά σας θα πρέπει να ζητά από το χρήστη να δώσει το
ποσό που θα χρησιμοποιηθεί ως όριο για την εύρεση των άλμπουμ.
Πριν τον τερματισμό του προγράμματος θα αποδεσμεύονται (free) οι θέσεις μνήμης που δεσμεύσατε δυναμικά
(malloc).

Β. Γενέθλια και ύψος προσώπων


Γράψτε ένα πρόγραμμα στη γλώσσα C για την ανάγνωση και επεξεργασία στοιχείων προσώπων σύμφωνα με τις
προδιαγραφές που ακολουθούν.

1/2
Ξεκινήστε ορίζοντας μια δομή (struct) η οποία θα καταγράφει τα στοιχεία κάθε προσώπου με τα εξής πεδία:
1. Το ονοματεπώνυμο του προσώπου (αλφαριθμητικό το πολύ 40 χαρακτήρων συμπεριλαμβανομένου
και του ειδικού χαρακτήρα '\0').
2. Ημερομηνία γέννησης που ορίζεται ως μια νέα δομή (struct) με τα εξής στοιχεία:
a. Έτος (ακέραιος αριθμός)
b. Μήνας (ακέραιος αριθμός)
c. Ημέρα (ακέραιος αριθμός)
3. Ύψος (πραγματικός αριθμός που αντιστοιχεί στο ύψος σε μέτρα).
Το πρόγραμμα θα ρωτά στην αρχή για πόσα πρόσωπα θα δοθούν στοιχεία.
Ο χρήστης θα δίνει το επιθυμητό πλήθος προσώπων και το πρόγραμμα θα δεσμεύει δυναμικά μνήμη κατάλληλου
μεγέθους για μια διάταξη δομών όπου θα αποθηκευτούν τα στοιχεία που θα δοθούν στη συνέχεια.
Μετά από τη δέσμευση μνήμης, το πρόγραμμα, καλώντας μια κατάλληλη συνάρτηση που θα
κατασκευάσετε, θα διαβάζει τα στοιχεία για κάθε πρόσωπο (ονοματεπώνυμο, ημερομηνία γέννησης και ύψος)
και θα τα αποθηκεύει στις δομές της διάταξης.
Θεωρείστε ότι όλα τα δεδομένα εισόδου δίνονται στην έγκυρη μορφή τους και δεν χρειάζεται το πρόγραμμά σας
να κάνει κανένα επιπρόσθετο έλεγχο.
Στη συνέχεια, καλώντας μία άλλη συνάρτηση που επίσης θα κατασκευάσετε, το πρόγραμμά σας θα βρίσκει
και θα επιστρέφει μέσω παραμέτρων (call by reference) το ονοματεπώνυμο και την ημερομηνία γέννησης του
μεγαλύτερου σε ηλικία ατόμου. Η εκτύπωση των στοιχείων αυτών θα γίνεται από τη main και όχι από τη
συνάρτηση εύρεσης του μεγαλύτερου σε ηλικία ατόμου.
Περαιτέρω, καλώντας μια ακόμη συνάρτηση που θα κατασκευάσετε, το πρόγραμμά σας θα βρίσκει και θα
τυπώνει (μέσα στην ίδια τη συνάρτηση) το πλήθος των ατόμων που έχουν γεννηθεί τον ίδιο μήνα για καθένα από
τους 12 μήνες του έτους καθώς και το μέσο όρο του ύψους τους.
Τέλος, το πρόγραμμά σας θα καλεί μία συνάρτηση που θα κατασκευάσετε η οποία θα τυπώνει (μέσα στην
ίδια τη συνάρτηση) το ονοματεπώνυμο των προσώπων που έχουν γενέθλια μια ορισμένη ημέρα. Ο ζητούμενος
μήνας και ημέρα των γενεθλίων θα παρέχονται από το χρήστη πριν την κλήση της συνάρτησης και θα δίνονται
στη συνάρτηση ως παράμετροι.
Πριν τον τερματισμό του προγράμματος θα αποδεσμεύονται (free) οι θέσεις μνήμης που δεσμεύσατε δυναμικά
(malloc).
Εναλλακτική υλοποίηση: Τροποποιήστε το πρόγραμμα που κατασκευάσατε έτσι ώστε η ημερομηνία γέννησης
κάθε προσώπου να αποθηκεύεται ως διάταξη τριών ακεραίων και όχι ως δομή τριών ακεραίων. Ειδικότερα, με τη
νέα αυτή μορφή, το πρώτο στοιχείο της διάταξης θα αντιστοιχεί στο έτος γέννησης, το δεύτερο στοιχείο στο μήνα
γέννησης και το τρίτο στην ημέρα γέννησης.

2/2

You might also like