ΠΟΛΥΤΕΧΝΕΙΟ
ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχ. και Μηχ. Υπολογιστών ΛΟΓ 102: Τεχνολογία Λογισμικού
Ι |
Το πρόγραμμά σας είναι αρκετό να διαβάζει ένα χαρακτήρα τη φορά, χρησιμοποιώντας
τη συνάρτηση getc
. Δεν υπάρχει λόγος να διαβάζετε περισσότερους
χαρακτήρες. Οι τρεις μετρητές θα πρέπει να αυξάνονται ως εξής:
Ο μετρητής των χαρακτήρων θα αυξάνει με κάθε χαρακτήρα που διαβάζεται (πλην του EOF), ανεξάρτητα ποιος χαρακτήρας είναι αυτός
Ο μετρητής των λέξεων θα αυξάνει κάθε φορά που θα συναντάται μια ολόκληρη
λέξη. Με τον όρο λέξη εννοείται μια ακολουθία ενός ή περισσοτέρων
μη κενών χαρακτήρων, που διαχωρίζεται από άλλες λέξεις με έναν
ή περισσότερους κενούς χαρακτήρες. Προκειμένου να αποφασίσετε αν
ένας χαρακτήρας είναι κενός, μπορείτε να καλέσετε τη συνάρτηση isspace
,
που βρίσκεται στο αρχείο επικεφαλίδων <ctype.h>
.
Ο μετρητής των γραμμών θα αυξάνει με κάθε χαρακτήρα '\n'
που
θα διαβάζεται.
Ένας δυνατός τρόπος για να δομήσετε το πρόγραμμά σας είναι ο ακόλουθος. Μπορείτε να γράψετε μια συνάρτηση
void count (FILE * fp, const char * name);
που να μετράει και να εκτυπώνει τα ζητούμενα για το (ανοιχτό) αρχείο fp
με όνομα name
. Η συνάρτηση main
του προγράμματος θα
πρέπει να κοιτάζει πόσα ονόματα αρχείων έχουν δοθεί στη γραμμή εντολής και να
καλεί την count
για κάθε ένα από αυτά. Αν δεν έχει δοθεί κανένα
αρχείο (παράδειγμα 3) θα πρέπει να την καλεί με παράμετρο stdin
.
Ο υπολογισμός των συνολικών μετρητών μπορεί να γίνει με καθολικές μεταβλητές. Τα συνολικά αποτελέσματα θα πρέπει να εκτυπώνονται μόνο αν έχουν δοθεί περισσότερα από ένα ονόματα αρχείων στη γραμμή εντολής.
Το πρόγραμμά σας θα πρέπει κατ' αρχήν να διαβάζει το αρχείο παραγγελιών και να αποθηκεύει όλες τις παραγγελίες σε έναν κατάλληλο πίνακα από 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
.