ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 6 η

Σχετικά έγγραφα
ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 6 η

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ (επανάληψη στη γλώσσα C & εισαγωγή στη γλώσσα C++)

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ (επανάληψη στη γλώσσα C & εισαγωγή στη γλώσσα C++)

2 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ Κλάσεις, Αντικείμενα & Δομητές (Constructors)

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 3 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 3 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

4 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

2 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

β =. Β ΓΥΜΝΑΣΙΟΥ Πρόβλημα 1 Να βρείτε την τιμή της παράστασης: 3β + α α 3β αν δίνεται ότι: 3

Μηχανολογικό Σχέδιο με τη Βοήθεια Υπολογιστή. Αφφινικοί Μετασχηματισμοί Αναπαράσταση Γεωμετρικών Μορφών

ΜΕΤΡΗΣΕΙΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΥΨΗΛΩΝ ΤΑΣΕΩΝ

ΔΙΑΣΤΑΣΕΙΣ. Διαστάσεις σε κύκλους, τόξα, γωνίες κώνους Μέθοδοι τοποθέτησης διαστάσεων

ΜΑΘΗΜΑΤΙΚΑ ΙΙ ιδάσκων : Ε. Στεφανόπουλος 12 ιουνιου 2017

4 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

Κεφάλαιο V : Εργαστηριακές ασκήσεις που αφορούν δηµιουργία κλάσεων στη Java.

Τελική γραπτή εξέταση διάρκειας 2,5 ωρών

ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΑΣΚΗΣΗ

Μαθηματικά για μηχανικούς ΙΙ ΑΣΚΗΣΕΙΣ

Ταξινόμηση καμπυλών και επιφανειών με τη βοήθεια των τετραγωνικών μορφών.

ΚΑΡΤΕΣΙΑΝΟ ΣΥΣΤΗΜΑ ΣΕ ΔΥΟ ΔΙΑΣΤΑΣΕΙΣ

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας

Εργαστήριο Ανώτερης Γεωδαισίας Μάθημα 7ου Εξαμήνου (Ακαδ. Έτος ) «Εισαγωγή στο Γήινο Πεδίο Βαρύτητας»

Μαθηματικά για μηχανικούς ΙΙ ΛΥΣΕΙΣ/ΑΠΑΝΤΗΣΕΙΣ ΑΣΚΗΣΕΩΝ

Σημειώσεις του μαθήματος Μητρωϊκή Στατική

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8

ΣΗΜΕΙΩΣΕΙΣ ΣΤΟΙΧΕΙΑ ΔΙΑΝΥΣΜΑΤΙΚΗΣ ΑΝΑΛΥΣΗΣ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

1.1.1 Εσωτερικό και Εξωτερικό Γινόμενο Διανυσμάτων

Σύντομη μαθηματική εισαγωγή

Θεωρία μετασχηματισμών

ΑΝΩΤΑΤΟ ΣΥΜΒΟΥΛΙΟ ΕΠΙΛΟΓΗΣ ΠΡΟΣΩΠΙΚΟΥ

Χωρική Βάση δεδοµένων Autocad

2 Ο ΚΕΦΑΛΑΙΟ Ενότητα 5.

ΛΥΣΕΙΣ 6. a2 x 2 y 2. = y

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Κβαντομηχανική σε. τρεις διαστάσεις. Εξίσωση Schrödinger σε 3D. Τελεστές 2 )

ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ ΑΣΚΗΣΗ

ΠΡΩΤΟ ΘΕΜΑ ΕΞΕΤΑΣΕΩΝ

ΑΞΟΝΟΜΕΤΡΙΑ. Εισαγωγή

ισδιάστατοι μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί

cos ϑ sin ϑ sin ϑ cos ϑ

Συστήματα συντεταγμένων

Από το στοιχειώδες δίπολο στις κεραίες

14 η εβδομάδα (26/01/2017) Έγιναν οι ασκήσεις 28, 29 και 30. Έγινε επανάληψη στη Θεωρία Καμπυλών και στη Θεωρία Επιφανειών.

2 Ο ΚΕΦΑΛΑΙΟ Ενότητα 5.

ΗΜΕΡΟΜΗΝΙΑ : 11 Ιουνίου 2007 (πρωί)

ΚΥΚΛΟΣ. Μ(x,y) Ο C ΘΕΩΡΙΑ ΕΠΙΜΕΛΕΙΑ: ΣΩΣΤΟ-ΛΑΘΟΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΧΡΑΣ ΓΙΑΝΝΗΣ ΑΣΚΗΣΕΙΣ. 3ο ΓΕΝΙΚΟ ΛΥΚΕΙΟ ΚΕΝΤΡΙΚΟ Ν. ΣΜΥΡΝΗΣ

ΕΞΕΤΑΣΗ ΙΑΝΟΥΑΡΙΟΥ (28/1/2011)

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Χειμερινό Εξάμηνο 2016/2017 ΦΥΣ102 Φυσική για Χημικούς Διδάσκων: Μάριος Κώστα. ΔΙΑΛΕΞΗ 09 Ροπή Αδρανείας Στροφορμή

Διαφορικές Εξισώσεις.

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07

Θεωρητική μηχανική ΙΙ

Προβλήματα που αφορούν δομές και ενώσεις.

ΑΣΚΗΣΕΙΣ ΥΠΟΛΟΓΙΣΜΟΥ ΜΑΖΑΣ ΘΕΣΗΣ ΚΕΝΤΡΟΥ ΜΑΖΑΣ ΡΟΠΗΣ ΑΔΡΑΝΕΙΑΣ ΣΩΜΑΤΩΝ

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009

Το ελαστικο κωνικο εκκρεμε ς

v = r r + r θ θ = ur + ωutθ r = r cos θi + r sin θj v = u 1 + ω 2 t 2

Ηλεκτρομαγνητισμός. Ηλεκτρικό πεδίο νόμος Gauss. Νίκος Ν. Αρπατζάνης

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

ΕΙΣΑΓΩΓΗ ΣΤΗ ΡΟΜΠΟΤΙΚΗ - ΑΣΚΗΣΕΙΣ. Π. Ασβεστάς Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Βιοϊατρικής Πανεπιστήμιο Δυτικής Αττικής

ΤΕΧΝΙΚΗ ΜΗΧΑΝΙΚΗ Ι ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΝΟΙΕΣ- ΥΝΑΜΕΙΣ ΣΤΟ ΕΠΙΠΕ Ο ΚΑΙ ΣΤΟ

Εισαγωγή στις σύγχρονες Εργαλειομηχανές CNC

Τεχνολογία Παιγνίων. Τεχνολογία Παιγνίων. Τεχνολογία Παιγνίων. Εισαγωγή στο Easy Java Simulations (EJS)

Δυναμική Μηχανών I. Επανάληψη: Κινηματική και Δυναμική

Μηχανική Πετρωμάτων Τάσεις

Συστήματα συντεταγμένων

Εργαστήριο Ανώτερης Γεωδαισίας Μάθηµα 7ου Εξαµήνου (Ακαδ. Έτος ) «Εισαγωγή στο Γήινο Πεδίο Βαρύτητας» ΕΞΑΜΗΝΟ ΑΣΚΗΣΗ 2

12. Το εμβαδόν ενός τριγώνου ΑΒΓ είναι ίσο με

Θεωρητική μηχανική ΙΙ

Δομημένος Προγραμματισμός

Πυκνότητα στερεών σωμάτων κυλινδρικού σχήματος

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοημοσύνη Ι» 5 o Φροντιστήριο

Μέτρηση μηκών και ακτίνων καμπυλότητας σφαιρικών επιφανειών

Λογισμικό για Μαθηματικά

papost/

Διαφορικός Λογισμός πολλών μεταβλητών

Εισαγωγή στις σύγχρονες Εργαλειομηχανές CNC

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 2. Σταύρος Παπαϊωάννου

ΑΣΚΗΣΗ 1. Structural Programming

Κεφάλαιο 7 Βασικά Θέματα Προγραμματισμού. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 3. Κίνηση σε δύο διαστάσεις (επίπεδο)

Διάλεξη 2: Κεντρικά Δυναμικά. Αναζητούμε λύσεις της χρονοανεξάρτητης εξίσωσης Schrödinger για κεντρικά δυναμικά

Τυπικές χρήσεις της Matlab

Διάλεξη 1 - Σημειώσεις 1

4. Να βρεθεί η προβολή του σημείου Ρ=(6,1,5) πάνω στην ευθεία ε: x ={3,1,2}+λ{1,2,1},, και η απόστασή του από αυτήν.

Ημερολόγιο μαθήματος

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΦΥΣ. 211 Τελική Εξέταση 10-Μάη-2014

Transcript:

Δημοκρίτειο Πανεπιστήμιο Θράκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2016-2017 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (ΓΛΩΣΣΑ C) 02/05/2017 ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 6 η ΑΣΚΗΣΗ 1 Να αποθηκεύσετε σε ένα σειριακό αρχείο τους παρακάτω αριθμούς: 5 96 87 78 93 21 4 92 82 85 87 6 72 69 85 75 81 73 Οι αριθμοί είναι γραμμένοι κατά ομάδες. Ο 1 ος αριθμός κάθε ομάδας δείχνει το πλήθος των μελών της ομάδας που ακολουθεί αμέσως μετά τον αριθμό αυτό. Στη συνέχεια να γραφεί πρόγραμμα σε γλώσσα C που θα βρίσκει και θα εμφανίζει τον μέσο όρο κάθε ομάδας. ΑΣΚΗΣΗ 2 Να δημιουργήσετε ένα σειριακό αρχείο (text file) με όνομα cars.txt κάθε γραμμή του οποίου θα πρέπει να περιλαμβάνει τα εξής στοιχεία ενός αυτοκινήτου: 1) Αριθμός αυτοκινήτου (τετραψήφιος ακέραιος) 2) Διανυθέντα χιλιόμετρα 3) Καταναλωθέντα καύσιμα (σε λιτρα) Στη συνέχεια να γραφεί πρόγραμμα σε γλώσσα C που: 1) Θα εμφανίζει τα περιεχόμενα του αρχείου στην οθόνη 2) Θα εμφανίζει στο τέλος το σύνολο χιλιομέτρων και καυσίμων 3) Θα εμφανίζει το αυτοκίνητο με τη μεγαλύτερη μέση κατανάλωση καυσίμου. Σε περίπτωση που υπάρχουν περισσότερα από ένα αυτοκίνητα με τη μέγιστη κατανάλωση καυσίμου τότε θα πρέπει να εμφανίζονται όλα. ΑΣΚΗΣΗ 3 Να δημιουργήσετε ένα σειριακό αρχείο (text file) με περιεχόμενο Ν σε πλήθος τυχαίους ακέραιους θετικούς αριθμούς στην περιοχή [0,99]. Οι αριθμοί θα δημιουργηθούν με τη χρήση της συνάρτησης rand( ). Στη συνέχεια να γραφεί πρόγραμμα σε γλώσσα C που: 1) Θα εμφανίζει τα περιεχόμενα του αρχείου στην οθόνη 2) Θα βρίσκει και θα εμφανίζει το μέσο όρο των αριθμών αυτών 3) Θα δημιουργεί ένα νέο σειριακό αρχείο που θα περιέχει εκείνους τους αριθμούς του πρώτου αρχείου που είναι μεγαλύτεροι του μέσου όρου κατά 10% τουλάχιστον. 4) Θα εμφανίζει τα περιεχόμενα του νέου αρχείου καθώς και το πλήθος τους στην οθόνη. 1

ΑΣΚΗΣΗ 4 Δίνεται σειριακό αρχείο (text file), με όνομα production.txt, κάθε γραμμή του οποίου περιλαμβάνει: Έναν ακέραιο θετικό αριθμό [1-100] που αντιστοιχεί στον κωδικό ενός μεταλλικού εξαρτήματος που υφίσταται κατεργασία σε κάποια εργαλειομηχανή μιας μονάδας παραγωγής μεταλλικών εξαρτημάτων Έναν ακέραιο θετικό αριθμό που αντιστοιχεί στον κωδικό της εργαλειομηχανής [1-10] Μια ακολουθία 10 ακεραίων θετικών αριθμών (περιοχή τιμών [1,100] ) καθένας από τους οποίους αντιστοιχεί στην ποσότητα τεμαχίων του μεταλλικού εξαρτήματος που κατεργάστηκε η συγκεκριμένη εργαλειομηχανή σε 10 χρονικές περιόδους λειτουργίας. Μία γραμμή του αρχείου είναι η παρακάτω (αντιστοιχεί στο μεταλλικό εξάρτημα με κωδικό 17 και στην εργαλειομηχανή με κωδικό 9) : 17 9 56 44 80 70 60 54 40 33 16 28 37 26 75 70 20 Να γραφεί μια δομή (struct) που θα περιλαμβάνει ως μέλη τα στοιχεία που περιέχει μια οποιαδήποτε γραμμή του αρχείου καθώς και ένα επιπλέον μέλος που αντιστοιχεί στο συνολικό αριθμό των τεμαχίων (δηλαδή των 10 τελευταίων αριθμών). Ένας πίνακας δομών του παραπάνω τύπου μεγέθους Ν ( Ν = γνωστό) γεμίζει με δεδομένα από το αρχείο. Να γραφεί πρόγραμμα σε γλώσσα C το οποίο: 1. διαβάζοντας το αρχείο (απαιτείται έλεγχος για την ύπαρξη του αρχείου) θα καταχωρεί τα δεδομένα στον πίνακα. Απαιτείται έλεγχος αν το πλήθος των εγγραφών από το αρχείο υπερβαίνει ή όχι το μέγεθος N. 2. χρησιμοποιώντας όλα τα στοιχεία του πίνακα δομών θα βρίσκει και θα εμφανίζει το συνολικό πλήθος τεμαχίων που έχει κατεργαστεί η κάθε μία από τις εργαλειομηχανές της μονάδας. 3. χρησιμοποιώντας όλα τα στοιχεία του πίνακα δομών θα βρίσκει και θα εμφανίζει το συνολικό πλήθος τεμαχίων για κάθε κωδικό μεταλλικού εξαρτήματος που υπάρχουν στο αρχείο. production.txt (μπορείτε να το κατεβάσετε από το eclass) 20 9 87 98 21 82 66 83 35 39 61 69 63 8 67 73 93 87 28 30 33 8 1 32 44 8 48 2 43 18 44 87 81 69 20 58 56 1 12 11 2 84 5 50 61 90 68 77 20 10 84 46 48 59 76 25 76 32 41 48 3 6 11 80 18 92 65 85 81 19 26 58 10 8 42 48 70 46 51 1 92 75 90 41 27 7 34 19 50 16 41 60 55 18 2 76 27 5 94 83 69 32 67 75 71 52 65 36 90 7 88 60 50 30 38 98 56 35 67 6 11 9 42 88 19 88 93 53 57 52 24 46 8 9 63 38 27 37 89 55 15 15 75 32 20 2 100 6 50 91 21 62 2 3 68 10 94 8 12 16 82 38 48 48 100 74 51 2 90 5 44 49 92 87 63 88 5 22 10 6 3 10 33 76 48 31 43 43 74 82 40 9 3 5 15 38 10 1 94 64 21 89 30 73 2

ΑΣΚΗΣΗ 5 Δίνεται σειριακό αρχείο (text file), με όνομα secure.txt, κάθε γραμμή του οποίου περιλαμβάνει: Έναν ακέραιο θετικό αριθμό που αντιστοιχεί στον κωδικό ενός σημείου ελέγχου σε μια βιομηχανική εγκατάσταση Μια ακολουθία 15 ακεραίων θετικών αριθμών (περιοχή τιμών [1,10] ) καθένας από τους οποίους αντιστοιχεί στη βαθμολογία των συνθηκών ασφαλείας του συγκεκριμένου σημείου ελέγχου. Κάθε ένας από τους 15 αριθμούς είναι η βαθμολογία του σημείου ελέγχου σε κάποιο θέμα ασφάλειας. Μία γραμμή του αρχείου είναι η παρακάτω: 127 4 5 6 7 8 7 8 9 7 8 6 10 10 7 8 Να γραφεί μια δομή (struct) που θα περιλαμβάνει ως μέλη τα στοιχεία που περιέχει μια οποιαδήποτε γραμμή του αρχείου καθώς και ένα επιπλέον μέλος που αντιστοιχεί στον μέσο όρο της βαθμολογίας (των 15 αριθμών). Ένας πίνακας δομών του παραπάνω τύπου μεγέθους Ν ( Ν = γνωστό) γεμίζει με δεδομένα από το αρχείο εφόσον ο μέσος όρος είναι τουλάχιστον 7.0 και δεν υπάρχουν περισσότερες από 5 βαθμολογίες του κάθε σημείου μικρότερες από 5. Να γραφεί πρόγραμμα σε γλώσσα C το οποίο: 1. διαβάζοντας το αρχείο (απαιτείται έλεγχος για την ύπαρξη του αρχείου) θα καταχωρεί τα δεδομένα στον πίνακα, σύμφωνα με τις παραπάνω προϋποθέσεις 2. θα βρίσκει και θα εμφανίζει αν όλα τα δεδομένα του αρχείου που πληρούν τις προϋποθέσεις έχουν εισαχθεί στον πίνακα 3. χρησιμοποιώντας όλα τα στοιχεία του πίνακα δομών θα βρίσκει και θα εμφανίζει πόσα και ποια σημεία ελέγχου έχουν μέσον όρο βαθμολογίας τουλάχιστον 8.5 ( ΤΟ ΑΡΧΕΙΟ ΔΕΔΟΜΕΝΩΝ secure.txt μπορείτε να το κατεβάσετε από το eclass ) secure.txt 127 4 5 6 7 8 7 8 9 7 8 6 10 10 7 8 234 4 5 8 7 7 7 4 5 5 5 3 10 10 4 5 991 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 654 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 723 8 5 4 8 9 4 5 3 5 9 8 6 9 5 4 111 7 7 7 7 8 8 8 7 7 7 8 8 7 3 3 555 2 2 2 2 3 4 4 5 6 7 8 7 8 9 2 888 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 227 9 9 9 7 8 9 8 9 8 7 8 9 5 5 6 ΑΣΚΗΣΗ 6 Δίνεται σειριακό αρχείο (text file), με όνομα bitfile.txt, κάθε γραμμή του οποίου περιλαμβάνει μια ακολουθία 32 δυαδικών ψηφίων (δηλ. 0 και 1). Μία γραμμή του αρχείου είναι η παρακάτω (τα δυαδικά ψηφία είναι συνεχόμενα και ο χωρισμός σε οκτάδες γίνεται στο παράδειγμα για διευκρινιστικούς λόγους): 3

1 1 1 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1 η οκτάδα 2 η οκτάδα 3 η οκτάδα 4 η οκτάδα Να γραφεί μια δομή (struct) που θα περιλαμβάνει ως μέλη τα παρακάτω: Αύξων αριθμός της γραμμής του αρχείου (πρώτη γραμμή =1) Πίνακας ακεραίων 32 θέσεων για τα δεδομένα κάθε γραμμής του αρχείου Πλήθος των 1 σε κάθε μία από τις 4 οκτάδες του αρχείου Ένας πίνακας δομών του παραπάνω τύπου μεγέθους Ν ( Ν = γνωστό) γεμίζει με δεδομένα από το αρχείο εφόσον το πλήθος των 1 σε δύο τουλάχιστον οκτάδες είναι άρτιος αριθμός και τα 5 πρώτα δυαδικά ψηφία κάθε γραμμής είναι 1. Να γραφεί πρόγραμμα σε γλώσσα C το οποίο: 1. διαβάζοντας το αρχείο (απαιτείται έλεγχος για την ύπαρξη του αρχείου) θα καταχωρεί τα δεδομένα στον πίνακα δομών, σύμφωνα με τις παραπάνω προϋποθέσεις 2. θα βρίσκει και θα εμφανίζει αν όλα τα δεδομένα του αρχείου που πληρούν τις προϋποθέσεις έχουν εισαχθεί στον πίνακα 3. χρησιμοποιώντας όλα τα στοιχεία του πίνακα δομών θα βρίσκει και θα εμφανίζει πόσες και ποιες γραμμές του πίνακα έχουν άρτιο πλήθος 1 και στις τέσσερις οκτάδες τους ( ΤΟ ΑΡΧΕΙΟ ΔΕΔΟΜΕΝΩΝ bitfile.txt μπορείτε να το κατεβάσετε από το eclass ) ΑΣΚΗΣΗ 7 Η απόσταση d δύο σημείων ( x, y, z ) και (,, ) συντεταγμένων δίνεται από τον τύπο 1 1 1 x y z στο τρισδιάστατο Καρτεσιανό σύστημα 2 2 2 d = ( x x ) + ( y y ) + ( z z ) 2 2 2 2 1 2 1 2 1 Ένα σειριακό αρχείο με όνομα points_3d.txt (για τη λύση της άσκησης πρέπει να το δημιουργήσετε μέσω ενός text editor ή μέσω του MS Excel) περιέχει άγνωστο πλήθος γραμμών που αντιστοιχούν στις τρισδιάστατες καρτεσιανές συντεταγμένες σημείων ενός στερεού σώματος. Κάθε γραμμή του αρχείου περιέχει τρεις τιμές τύπου double που αντιστοιχούν στις τρεις καρτεσιανές συντεταγμένες ενός σημείου. Να ορίσετε μια δομή με όνομα coord_3d για τη διαχείριση των συντεταγμένων των σημείων ενός στερεού σώματος. Τα μέλη της δομής είναι οι τρεις καρτεσιανές συντεταγμένες( x,y,z ), όπως ορίστηκαν προηγουμένως. Όλες οι τιμές είναι τύπου double. Να οριστεί ένας πίνακας δομών τύπου coord_3d, Ν θέσεων (Ν = γνωστό). Θεωρείστε ένα δεδομένο γνωστό σημείο Α στο χώρο με συντεταγμένες ( xa, yα, z A) (να οριστούν ως σταθερές τύπου double στην αρχή του προγράμματος). Τα δεδομένα στον πίνακα δομών θα εισάγονται μέσω προσπέλασης του σειριακού αρχείου points_3d.txt εφόσον η απόσταση, έστω d A,i του σημείου, έστω i, από το σημείο Α ικανοποιεί τη σχέση : 1.0 da, i 10.0. 4

Αν το πλήθος των εγγραφών του αρχείου είναι μεγαλύτερο από την τιμή N τότε οι επιπλέον εγγραφές του αρχείου δεν θα συμπεριληφθούν στον πίνακα δομών. 1. να γίνει η εισαγωγή των δεδομένων από το αρχείο points_3d.txt στον πίνακα δομών σύμφωνα με τα ανωτέρω, ελέγχοντας την ύπαρξη του αρχείου (δείτε τον κώδικα στη συνέχεια). Αν το αρχείο περιλαμβάνει περισσότερα από Ν σημεία να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που ικανοποιούν τη συνθήκη 1.0 da, i 10.0 και δεν θα συμπεριληφθούν στον πίνακα δομών. Αν το αρχείο περιλαμβάνει λιγότερες από Ν γραμμές να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που θα περιέχει ο πίνακας δομών. 2. Στη συνέχεια να βρείτε και να εμφανίσετε : a. Το σημείο (ή τα σημεία, εφόσον είναι περισσότερα από ένα) του πίνακα δομών με τη μεγαλύτερη απόσταση από το σημείο Α. b. Το σημείο (ή τα σημεία, εφόσον είναι περισσότερα από ένα) του πίνακα δομών με τη μικρότερη απόσταση από το σημείο Α. c. Τη μέση τιμή των αποστάσεων όλων των σημείων του πίνακα δομών από το σημείο Α. printf("error reading file...\n"); ΑΣΚΗΣΗ 8 Ένα σειριακό αρχείο με όνομα points_2d.txt (για τη λύση της άσκησης πρέπει να το δημιουργήσετε μέσω ενός text editor ή μέσω του MS Excel) περιέχει πληροφορίες που αντιστοιχούν σε χώρους με κινητές συσκευές. Σε κάθε γραμμή του αρχείου, που αφορά ένα χώρο, υπάρχουν δύο αριθμοί τύπου double που αντιστοιχούν στις συντεταγμένες του, και μια ακέραια τιμή που δηλώνει το πλήθος των κινητών συσκευών που υπάρχουν στο χώρο π.χ. 5.27 7.92 19 3.75 8.57 25 Να ορίσετε μια δομή με όνομα cell για τη διαχείριση των πληροφοριών του αρχείου points_2d.txt. Τα μέλη της δομής είναι οι 2 καρτεσιανές συντεταγμένες( x,y ) και το πλήθος των κινητών συσκευών m, όπως ορίστηκαν προηγουμένως. Να οριστεί ένας πίνακας δομών τύπου cell, Ν θέσεων (Ν = γνωστό). Η εξυπηρέτηση των κινητών συσκευών θα γίνεται μέσω σταθμών βάσης (κεραίες). Έχουν προεπιλεγεί 2 σημεία, έστω Α και Β, για να αποτελέσουν σταθμούς βάσης που θα μπορούν να εξυπηρετούν ταυτόχρονα τις κινητές 5

συσκευές. Για τα δύο αυτά σημεία είναι γνωστές οι επιφανειακές συντεταγμένες τους x A,y A,x B,yBπου δίνονται ως σταθερές στην αρχή του προγράμματος. Λόγω εξασθένησης του σήματος από τον σταθμό βάσης μέχρι την κινητή συσκευή κάθε σταθμός βάσης μπορεί να καλύψει κινητές συσκευές μέχρι μια μέγιστη απόσταση από αυτόν. Τα δεδομένα στον πίνακα δομών θα εισάγονται μέσω προσπέλασης του σειριακού αρχείου points_2d.txt εφόσον οι αποστάσεις του κάθε σημείου i του αρχείου και από τα δύο σημεία Α και Β, έστω da, i, d Bi, ικανοποιούν συγχρόνως τις σχέσεις : da, i 10.0, dbi, 10.0. Αν το πλήθος των εγγραφών του αρχείου είναι μεγαλύτερο από την τιμή N τότε οι επιπλέον εγγραφές του αρχείου δεν θα συμπεριληφθούν στον πίνακα δομών. Η απόσταση δύο σημείων ( x1, y 1) και ( x2, y2) στο δισδιάστατο χώρο δίνεται από τη σχέση: 2 2 ( ) ( ) d = x x + y y. 1 2 1 2 1. να γίνει η εισαγωγή των δεδομένων από το αρχείο points_2d.txt στον πίνακα δομών σύμφωνα με τα ανωτέρω, ελέγχοντας την ύπαρξη του αρχείου (δείτε τον κώδικα στη συνέχεια). Αν το αρχείο περιλαμβάνει περισσότερα από Ν σημεία να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που ικανοποιούν τις σχέσεις : da, i 10.0, dbi, 10.0 και δεν θα συμπεριληφθούν στον πίνακα δομών. Αν το αρχείο περιλαμβάνει λιγότερες από Ν γραμμές να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που θα περιέχει ο πίνακας δομών. 2. Στη συνέχεια να βρείτε και να εμφανίσετε : a. Το συνολικό πλήθος των κινητών συσκευών που θα μπορούν να εξυπηρετηθούν από τα σημεία Α και Β χρησιμοποιώντας τα στοιχεία του πίνακα δομών. b. Τη μέση τιμή των αποστάσεων όλων των σημείων του πίνακα δομών από το σημείο Α και από το σημείο Β (δηλ. 2 μέσες τιμές). printf("error reading file...\n"); 6

ΑΣΚΗΣΗ 9 Ο μετασχηματισμός δισδιάστατων καρτεσιανών συντεταγμένων με μεταφορά και στροφή (γωνία φ ), μεταξύ δύο συστημάτων xoy και xo ' ' y ' δίνεται από τους κάτωθι τύπους: x= x'cos φ y'sin φ+ x y = x'sin φ+ y'cosφ+ y 0 0 x' = ( x x )cos φ+ ( y y )sin φ 0 0 y' = ( y y )cos φ ( x x )sin φ 0 0 όπου ( x0, y 0) είναι οι συντεταγμένες του O ' ως προς το xoy. Να θεωρήσετε ότι οι τιμές των x0, y0, φ δίνονται ως σταθερές τύπου double στην αρχή του προγράμματος. Ένα σειριακό αρχείο με όνομα points_2d.txt (για τη λύση της άσκησης πρέπει να το δημιουργήσετε μέσω ενός text editor ή μέσω του MS Excel) περιέχει τις συντεταγμένες των σημείων μιας διατομής στο σύστημα xoy. Σε κάθε γραμμή του αρχείου υπάρχουν δύο αριθμοί τύπου double που αντιστοιχούν στις συντεταγμένες ενός σημείου της διατομής π.χ. 9.25 7.16 3.75 8.57 Να ορίσετε μια δομή με όνομα ext_point για τη διαχείριση των πληροφοριών του αρχείου points_2d.txt. Τα μέλη της δομής είναι οι 2 καρτεσιανές συντεταγμένες( x,y ) στο σύστημα xoy, οι 2 καρτεσιανές συντεταγμένες στο σύστημα xoy ' ' ' και ένας ακέραιος αριθμός που δηλώνει τη θέση του σημείου (αριθμός της γραμμής) στο αρχείο points_2d.txt. Να οριστούν δύο πίνακες δομών τύπου ext_point, Ν θέσεων (Ν = γνωστό). Ο 1ος πίνακας θα περιλαμβάνει εκείνα τα σημεία του αρχείου για τα οποία οι συντεταγμένες x', y ' δίνουν μέτρο του διανύσματος θέσης του σημείου στο σύστημα xoy ' ' ' μεγαλύτερο από την τιμή 10.0. Ο 2ος πίνακας θα περιλαμβάνει εκείνα τα σημεία που δεν πληρούν τον ανωτέρω περιορισμό. Τα δεδομένα στους 2 πίνακες δομών θα εισάγονται μέσω προσπέλασης του σειριακού αρχείου points_2d.txt. 1. να γίνει η εισαγωγή των δεδομένων από το αρχείο points_2d.txt στους πίνακες δομών σύμφωνα με τα ανωτέρω, ελέγχοντας την ύπαρξη του αρχείου (δείτε τον κώδικα στη συνέχεια). Αν υπάρξουν γραμμές του αρχείου που δεν χωρούν στους 2 πίνακες δομών να βρείτε και να εμφανίσετε το πλήθος αυτών των γραμμών του αρχείου που δεν θα συμπεριληφθούν στους πίνακες δομών. 2. Στη συνέχεια να εμφανίσετε τους δύο πίνακες δομών καθώς και το πλήθος των στοιχείων τους. printf("error reading file...\n"); 7

ΑΣΚΗΣΗ 10 Το Καρτεσιανό και το Σφαιρικό Σύστημα Συντεταγμένων καθορίζουν τη θέση ενός σημείου του τρισδιάστατου επίπεδου χώρου μέσω των μεγεθών ( x,y,z ) και ( r, ϑϕ, ) αντίστοιχα. Ο μετασχηματισμός από τις r, ϑϕ, πραγματοποιείται μέσω των τύπων: Καρτεσιανές Συντεταγμένες ( x,y,z ) στις Σφαιρικές ( ) rr = xx 2 + yy 2 + zz 2, θθ = arctan xx 2 + yy 2, zz, φφ = arctan (yy, xx) Να ορίσετε μια δομή με όνομα coords για τη διαχείριση υλικών σημείων μάζας m i ενός στερεού σώματος. Τα μέλη της δομής είναι η μάζα και οι τρεις καρτεσιανές συντεταγμένες( x,y,z ), όπως ορίστηκαν προηγουμένως. Όλες οι τιμές είναι τύπου double. Ένα σειριακό αρχείο με όνομα xyz.txt (για τη λύση της άσκησης πρέπει να το δημιουργήσετε μέσω ενός text editor ή μέσω του MS Excel) περιέχει άγνωστο πλήθος γραμμών που αντιστοιχούν στα υλικά σημεία ενός στερεού σώματος. Κάθε γραμμή του αρχείου περιέχει τέσσερις τιμές τύπου double που αντιστοιχούν στις τρεις καρτεσιανές συντεταγμένες και στη μάζα ενός υλικού σημείου (μέλη - δεδομένα). Να οριστεί ένας πίνακας δομών τύπου coords, Ν θέσεων (Ν = γνωστό). Τα δεδομένα στον πίνακα δομών θα εισάγονται μέσω προσπέλασης του σειριακού αρχείου xyz.txt εφόσον το μέγεθος rr που προκύπτει από τον μετασχηματισμό ικανοποιεί τη σχέση : 1.0 rr 15.0. Αν το πλήθος των εγγραφών του αρχείου είναι μεγαλύτερο από την τιμή N τότε οι επιπλέον εγγραφές του αρχείου δεν θα συμπεριληφθούν στον πίνακα δομών. 1. να γίνει η εισαγωγή των δεδομένων από το αρχείο xyz.txt στον πίνακα δομών σύμφωνα με τα ανωτέρω, ελέγχοντας την ύπαρξη του αρχείου (δείτε τον κώδικα στη συνέχεια). Αν το αρχείο περιλαμβάνει περισσότερα από Ν υλικά σημεία να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που ικανοποιούν τη συνθήκη 1.0 rr 15.0 και δεν θα συμπεριληφθούν στον πίνακα δομών. Αν το αρχείο περιλαμβάνει λιγότερες από Ν γραμμές να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που θα περιέχει ο πίνακας δομών. 2. Στη συνέχεια να βρείτε και να εμφανίσετε το μέτρο του διανύσματος θέσης του κέντρου μάζας του στερεού σώματος από τον παρακάτω τύπο, λαμβάνοντας υπόψη όλα τα στοιχεία του πίνακα δομών. i= 1 N i= 1 printf("error reading file...\n"); r C = N mr m i i i 8

ΑΣΚΗΣΗ 11 Το πρόβλημα της εύρεσης του πλησιέστερου ζεύγους σημείων είναι ένα γεωμετρικό πρόβλημα που αφορά την εύρεση δύο σημείων στο χώρο που βρίσκονται πλησιέστερα το ένα στο άλλο. Η απόσταση δύο σημείων ( x1, y1, z 1) και ( x2, y2, z 2) είναι : ( x x ) + ( y y ) + ( z z ) 2 2 2 2 1 2 1 2 1 Ένα σειριακό αρχείο με όνομα points3d.txt περιέχει σε κάθε γραμμή του τις καρτεσιανές συντεταγμένες ενός σημείου στον τρισδιάστατο χώρο: π.χ. 18.7 17.9 5.26 10.55 5.37 2.15 110.22 77.44 27.19 Να ορίσετε μια δομή με όνομα point_3d για τη διαχείριση των συντεταγμένων των σημείων αυτών. Τα μέλη της δομής είναι οι τρεις προαναφερόμενοι αριθμοί, τύπου double. Να οριστεί ένας πίνακας δομών τύπου point_3d, Ν θέσεων (Ν = γνωστό). Τα δεδομένα στον πίνακα δομών θα εισάγονται μέσω προσπέλασης του σειριακού αρχείου points3d.txt. Να θεωρήσετε ως δεδομένο ότι η τιμή του N υπερκαλύπτει το πλήθος των εγγραφών του αρχείου. 1. να γίνει η εισαγωγή των δεδομένων από το αρχείο points3d.txt στον πίνακα δομών σύμφωνα με τα ανωτέρω, ελέγχοντας την ύπαρξη του αρχείου (δείτε τον κώδικα στη συνέχεια) και να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που θα περιέχει ο πίνακας δομών. 2. Χρησιμοποιώντας όλα τα στοιχεία του πίνακα δομών να βρείτε και να εμφανίσετε όλα τα ζεύγη σημείων με την ίδια ελάχιστη απόσταση μεταξύ τους, με ακρίβεια υπολογισμού 10-3. Στο τέλος να εμφανίσετε και την τιμή αυτής της ελάχιστης απόστασης. printf("error reading file...\n"); 9

ΑΣΚΗΣΗ 12 Μια εργαλειομηχανή λειτουργεί με 2 περιστρεφόμενους άξονες κυκλικής διατομής με γνωστές διαμέτρους D1, D 2 αντίστοιχα. Λόγω της λειτουργίας των αξόνων προκύπτουν αλλοιώσεις της γεωμετρίας τους σε διάφορα σημεία, με αποτέλεσμα οι τομές τους σε διάφορα σημεία κατά το μήκος τους να μην είναι πλήρως κυκλικές. Ένα σειριακό αρχείο με όνομα crs.txt περιέχει σε κάθε γραμμή του : 2 αριθμούς τύπου double που αντιστοιχούν στο μήκος, σε mm, δύο κάθετων μεταξύ τους διαμέτρων μιας τομής κάθετης στον άξονα περιστροφής κάθε άξονα. Έναν αριθμό τύπου double που αντιστοιχεί στην απόσταση της τομής, σε mm, από την αρχή του άξονα Έναν ακέραιο θετικό αριθμό, 1 ή 2, που δηλώνει τον άξονα περιστροφής π.χ. για D1 = 110, D2 = 180 180.81 179.93 0.22 2 109.55 109.57 0.15 1 110.22 110.44 0.19 1 Να ορίσετε μια δομή με όνομα crd για τη διαχείριση των διαστάσεων των διαμέτρων των τομών αυτών. Τα private μέλη-δεδομένα της δομής είναι οι τέσσερεις προαναφερόμενοι αριθμοί. Να οριστεί ένας πίνακας δομών τύπου crd, Ν θέσεων (Ν = γνωστό). Τα δεδομένα στον πίνακα δομών θα εισάγονται μέσω προσπέλασης του σειριακού αρχείου crs.txt εφόσον η απόλυτη τιμή της διαφοράς των δύο διαμέτρων κάθε γραμμής του αρχείου είναι μεγαλύτερη από το 2% της διαμέτρου του αντίστοιχου άξονα ( D 1 ή D 2 ). Να θεωρήσετε ως δεδομένο ότι η τιμή του N υπερκαλύπτει το πλήθος των εγγραφών του αρχείου. 1. να γίνει η εισαγωγή των δεδομένων από το αρχείο crs.txt στον πίνακα δομών σύμφωνα με τα ανωτέρω, ελέγχοντας την ύπαρξη του αρχείου (δείτε τον κώδικα στη συνέχεια) και να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που θα περιέχει ο πίνακας δομών. 2. Χρησιμοποιώντας όλα τα στοιχεία του πίνακα δομών να βρείτε και να εμφανίσετε : a. το πλήθος των τομών κάθε άξονα b. τη μέση τιμή των αποκλίσεων κάθε μιας από τις δύο μετρούμενες διαμέτρους κάθε άξονα από την αρχική διάμετρο κάθε άξονα, χωρίς να συμπεριληφθούν οι μηδενικές αποκλίσεις, με ακρίβεια 10-4. (ΥΠΟΔΕΙΞΗ : πρέπει να προσδιορίσετε 4 τιμές, 2 για κάθε άξονα) printf("error reading file...\n"); 10

ΑΣΚΗΣΗ 13 Το τμήμα συντήρησης μιας βιομηχανικής μονάδας διατηρεί αρχείο βλαβών για το μηχανολογικό εξοπλισμό της μονάδας, καταχωρώντας τις εξής πληροφορίες για κάθε στοιχείο του εξοπλισμού (όλες οι τιμές είναι τύπου int) : Κωδικός μηχανής (τιμές 1-20) Κατηγορία βλάβης (επιτρεπτές τιμές 1-10) Πλήθος ωρών κατά τις οποίες το στοιχείο τέθηκε εκτός λειτουργίας (θετικός αριθμός) Το αρχείο είναι σειριακό, δίνεται, και έχει όνομα maintenance.txt. Μερικές γραμμές του αρχείου είναι: 45 3 52 3 2 8 45 5 127. Κάθε κωδικός μηχανής μπορεί να υπάρχει περισσότερες από μία φορές στο αρχείο. Να οριστεί μια δομή με όνομα maintenance για τη διαχείριση αυτών των δεδομένων. Τα μέλη της δομής θα είναι αυτές οι πληροφορίες. Να οριστεί ένας πίνακας δομών τύπου maintenance, Ν θέσεων (Ν = γνωστό). Τα δεδομένα στον πίνακα δομών θα εισάγονται μέσω προσπέλασης του σειριακού αρχείου maintenance.txt. Να θεωρήσετε ως δεδομένο ότι η τιμή του N υπερκαλύπτει το πλήθος των εγγραφών του αρχείου. 1. να γίνει η εισαγωγή των δεδομένων από το αρχείο maintenance.txt στον πίνακα δομών, ελέγχοντας την ύπαρξη του αρχείου (δείτε τον κώδικα στη συνέχεια), σύμφωνα με τoν ανωτέρω περιορισμό. Να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που θα περιέχει ο πίνακας δομών [ΜΟΝΑΔΕΣ 3]. 2. Χρησιμοποιώντας όλα τα στοιχεία του πίνακα δομών να βρείτε και να εμφανίσετε : a. Το πλήθος των βλαβών ανά κατηγορία βλαβών. b. Το σύνολο των ωρών εκτός λειτουργίας για μία μηχανή, εάν ο κωδικός της μηχανής εισάγεται από το χρήστη. printf("error reading file...\n"); 11

ΑΣΚΗΣΗ 14 Το αρχείο καταγραφών των μεταφορτώσεων αρχείων (file downloads) ενός παρόχου Internet περιέχει σε κάθε γραμμή του τις εξής πληροφορίες για κάθε μεταφόρτωση: IP διεύθυνση client ( τέσσερις ακέραιες τιμές, 1-255) Κατάσταση μεταφόρτωσης (0=επιτυχής, 1=ανεπιτυχής, 2=σε αναμονή, θετικός ακέραιος με τιμές 0,1,2) Μέγεθος αρχείου σε Mb (θετικός αριθμός, float) Όγκος μεταφόρτωσης σε Mb Το αρχείο είναι σειριακό, δίνεται, και έχει όνομα IP_clients.txt. Μερικές γραμμές του αρχείου είναι: 191 255 244 1 0 15.7 15.7 198 168 2 3 2 23.0 16.0 Κάθε IP διεύθυνση μπορεί να υπάρχει περισσότερες από μία φορές στο αρχείο. Να οριστεί μια δομή με όνομα log_client για τη διαχείριση αυτών των δεδομένων. Τα μέλη της δομής θα είναι αυτές οι πληροφορίες. Στη συνέχεια να οριστεί ένας πίνακας δομών τύπου log_client, Ν θέσεων (Ν= γνωστό). Τα δεδομένα στον πίνακα δομών θα εισάγονται μέσω προσπέλασης του σειριακού αρχείου IP_clients.txt. Να θεωρήσετε ως δεδομένο ότι η τιμή του N υπερκαλύπτει το πλήθος των εγγραφών του αρχείου. να γίνει η εισαγωγή των δεδομένων από το αρχείο IP_clients.txt στον πίνακα δομών, ελέγχοντας την ύπαρξη του αρχείου (δείτε τον κώδικα στη συνέχεια), σύμφωνα με τον ανωτέρω περιορισμό. Να βρείτε και να εμφανίσετε το πλήθος των γραμμών του αρχείου που θα περιέχει ο πίνακας δομών. Χρησιμοποιώντας όλα τα στοιχεία του πίνακα δομών: i. Να βρείτε το συνολικό όγκο και το πλήθος των μεταφορτώσεων σε αναμονή ii. Να εισάγετε την IP διεύθυνση ενός client από το πληκτρολόγιο, χωρίς έλεγχο εγκυρότητας τιμών, και στη συνέχεια, να βρείτε και να εμφανίσετε γι αυτόν τον client (αν υπάρχει στον πίνακα δομών) : Τον συνολικό όγκο επιτυχών και ανεπιτυχών μεταφορτώσεων, δηλ. δύο ξεχωριστές τιμές printf("error reading file...\n"); 12

ΑΣΚΗΣΗ 15 Οι τράπεζες δανείζουν χρήματα η μία στις άλλες. Το ενεργητικό μιας τράπεζας αποτελείται από τα υπόλοιπα των λογαριασμών που τηρεί συν τα δάνεια που έχει χορηγήσει σε άλλες τράπεζες. Αν το ενεργητικό μιας τράπεζας βρίσκεται κάτω από ένα συγκεκριμένο γνωστό όριο limit η τράπεζα δεν θεωρείται ασφαλής. Να θεωρήσετε ότι το όριο limit, για να θεωρηθεί μια τράπεζα ασφαλής, δίνεται ως σταθερά στην αρχή του προγράμματος. Να ορίσετε μια δομή με όνομα bank και μέλη τα εξής : 1. Κωδικός τράπεζας, θετικός τύπου int με επιτρεπτές τιμές 1-10 2. Υπόλοιπο τηρούμενων λογαριασμών (σε εκατομμύρια ευρώ) σ αυτήν, θετικός τύπου int 3. 10 ζεύγη θετικών τιμών (int, int), που περιέχουν τον κωδικό της τράπεζας στην οποία έχει δανείσει και το αντίστοιχο ποσό (αριθμός τύπου int που αντιπροσωπεύει δάνειο σε εκατομμύρια ευρώ). Ένα σειριακό αρχείο με όνομα bankfile.txt περιέχει 10 εγγραφές, μία για κάθε τράπεζα. Παράδειγμα για την τράπεζα με κωδικό 1, τα δεδομένα στο αρχείο είναι (οι παρενθέσεις δεν υπάρχουν στο αρχείο): 1, 145, (1,0), (2, 70), (3,0), (4,0), (5,120), (6,0), (7,15), (8, 44), (9,0), (10,0) Ένας πίνακας δομών τύπου bank περιέχει τα δεδομένα για όλες τις τράπεζες. Τα δεδομένα στον πίνακα δομών εισάγονται μέσω προσπέλασης του σειριακού αρχείου bankfile.txt. Χρησιμοποιώντας όλα τα αντικείμενα του πίνακα δομών : 1. Να δημιουργήσετε και να εμφανίσετε έναν νέο πίνακα τύπου int που θα περιέχει, υπό μορφή ζευγών, ποιες από τις 10 τράπεζες δεν θεωρούνται ασφαλείς, δηλ. το ενεργητικό τους, όπως ορίστηκε στην αρχή, είναι μικρότερο από την τιμή limit, καθώς και το ποσό που απαιτείται για κάθε τράπεζα ώστε να καταστεί ασφαλής. Στους υπολογισμούς θα συμπεριλάβετε όλες τις τράπεζες στις οποίες έχουν χορηγηθεί δάνεια. ΠΑΡΑΔΕΙΓΜΑ Για το παράδειγμα της τράπεζας 1 το ενεργητικό είναι : 145 + (70 + 120 + 15 +44) = 394 Εάν limit = 300 τότε η τράπεζα είναι ασφαλής, και η τράπεζα 1 δεν θα συμπεριλαμβάνεται στον νέο πίνακα. Εάν limit = 500 τότε η τράπεζα δεν είναι ασφαλής και στον πίνακα δομών θα συμπεριλαμβάνεται το ζεύγος (1,106) (το υπολειπόμενο ποσό είναι 500-394=106) printf("error reading file...\n"); 13

14