ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ
Τμήμα Ηλεκτρονικών Μηχ. και Μηχ. Υπολογιστών

ΛΟΓ 102: Τεχνολογία Λογισμικού Ι
http://www.softlab.ntua.gr/~nickie/TUC/log102/

2η Σειρά Ασκήσεων
Υποδείξεις


Άσκηση 1

Το πρόγραμμά σας είναι αρκετό να διαβάζει ένα χαρακτήρα τη φορά, χρησιμοποιώντας τη συνάρτηση getc. Δεν υπάρχει λόγος να διαβάζετε περισσότερους χαρακτήρες. Οι τρεις μετρητές θα πρέπει να αυξάνονται ως εξής:

Ένας δυνατός τρόπος για να δομήσετε το πρόγραμμά σας είναι ο ακόλουθος. Μπορείτε να γράψετε μια συνάρτηση

   void count (FILE * fp, const char * name);

που να μετράει και να εκτυπώνει τα ζητούμενα για το (ανοιχτό) αρχείο fp με όνομα name. Η συνάρτηση main του προγράμματος θα πρέπει να κοιτάζει πόσα ονόματα αρχείων έχουν δοθεί στη γραμμή εντολής και να καλεί την count για κάθε ένα από αυτά. Αν δεν έχει δοθεί κανένα αρχείο (παράδειγμα 3) θα πρέπει να την καλεί με παράμετρο stdin.

Ο υπολογισμός των συνολικών μετρητών μπορεί να γίνει με καθολικές μεταβλητές. Τα συνολικά αποτελέσματα θα πρέπει να εκτυπώνονται μόνο αν έχουν δοθεί περισσότερα από ένα ονόματα αρχείων στη γραμμή εντολής.


Άσκηση 2

Το πρόγραμμά σας θα πρέπει κατ' αρχήν να διαβάζει το αρχείο παραγγελιών και να αποθηκεύει όλες τις παραγγελίες σε έναν κατάλληλο πίνακα από structures. Αυτό είναι απαραίτητο γιατί, όπως θα δούμε στη συνέχεια, δεν είναι δυνατό να εκτυπώνονται οι αποδείξεις συγχρόνως με την ανάγνωση του αρχείου παραγγελιών, καθώς δεν είναι γνωστή εκ των προτέρων η έκπτωση.

Τα ποσά που πρέπει να αναγράφονται στις αποδείξεις υπολογίζονται με τον ακόλουθο τρόπο. Έστω η παρακάτω παραγγελία (η δεύτερη του παραδείγματος που δίνεται στην εκφώνηση):

Παραγγελθείσα ποσότητα
100
Κόστος μονάδας
250

Από τα δύο αυτά μπορεί εύκολα να υπολογιστεί το κόστος της παραγγελίας, δηλαδή το γινόμενό τους:

Κόστος παραγγελίας
25000

Αυτό γίνεται για όλες τις παραγγελίες και βρίσκεται το μεγαλύτερο και το μικρότερο κόστος παραγγελίας. Έστω ότι αυτά είναι αντίστοιχα 38150 και 6000 (όπως στο παράδειγμα στην εκφώνηση). Στην παραγγελία με το μεγαλύτερο κόστος γίνεται έκπτωση 10%, ενώ στην παραγγελία με το μικρότερο κόστος δε γίνεται έκπτωση. Για όλες τις υπόλοιπες παραγγελίες, η έκπτωση υπολογίζεται με τη βοήθεια του διαγράμματος που ακολουθεί:

δηλαδή για την παραγγελία με κόστος 25000, η έκπτωση που υπολογίζεται είναι 5.91%.

Έκπτωση 5.91%
1477
Καθαρό ποσό μετά την έκπτωση
23523

Επί του καθαρού ποσού υπολογίζεται ο Φ.Π.Α. 18% και στη συνέχεια το τελικό ποσό.

Φ.Π.Α. 18%
4234
Καθαρό ποσό μετά την έκπτωση
27757

Στην απόδειξη αναγράφονται τα τρία τελευταία ποσά που υπολογίζονται.

Για να ελέγξετε το πρόγραμμά σας, μπορείτε να χρησιμοποιήσετε το αρχείο orders.txt. Τα αποτελέσματα που θα πρέπει να εκτυπώνονται βρίσκονται στο αρχείο receipts.txt.


Νίκος Παπασπύρου (nickie@softlab.ntua.gr). 5/4/2000 .