CASE STUDY 1: #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> #define N 26. class Histogram { private: int arr[n];

Σχετικά έγγραφα
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο8

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Σηµειώσεις Εργαστηρίου)

Κλάσεις και αντικείμενα #include <iostream.h<

Εισαγωγή στον Προγραμματισμό

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Υπερφόρτωση τελεστών (operator(

Προγραμματισμός Η/Υ (ΤΛ2007 )

Διάλεξη 5η: Εντολές Επανάληψης

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

ΗΥ-150. Προγραμματισμός

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Περιεχόμενα. Πρόλογος... 21

Προγραμματισμός Η/Υ (ΤΛ2007 )

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΗΥ-150. Προγραμματισμός

8. Συνθήκες ελέγχου, λογικοί τελεστές

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Γλώσσα Προγραμματισμού C

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Δομημένος Προγραμματισμός (ΤΛ1006)

Η γλώσσα προγραμματισμού C

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Η γλώσσα προγραμματισμού C

Παίρνοντας Αποφάσεις 1

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Πίνακες (Arrays) Εισαγωγή στη C++

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Προγραμματισμός Ι. Θεματική ενότητα 8: Δημιουργία προγραμμάτων

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Δομές Επανάληψης. Εισαγωγή στη C++

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Δομημένος Προγραμματισμός (ΤΛ1006)

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Εισαγωγή στον Προγραμματισμό

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Εισαγωγή στη γλώσσα προγραμματισμού C++

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Προγραμματισμός Ι. Θεματική ενότητα 4: Έλεγχος ροής Προτάσεις υπό συνθήκη διακλάδωσης

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Εισαγωγή στον Προγραμματισμό

Δομημένος Προγραμματισμός (ΤΛ1006)

C: Από τη Θεωρία στην Εφαρμογή

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)?

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Μεθόδων Επίλυσης Προβλημάτων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Σηµειώσεις Θεωρίας)

Συναρτήσεις και διαδικασίες

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

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

Μεθόδων Επίλυσης Προβλημάτων

Επεξεργασία κειμένου και συμβολοσειρών σε C

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Αʹ. Πίνακες. Άσκηση 1. Λύση. Άσκηση 2. Λύση. Ασκήσεις Εργαστηρίου Προγραμματισμού

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Η γλώσσα προγραμματισμού C

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόµενη λύση

Προγραμματισμός Η/Υ (ΤΛ2007 )

Υπολογισμός - Εντολές Επανάληψης

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

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Προγραμματισμός Η/Υ (ΤΛ2007 )

Η γλώσσα προγραμματισμού C

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Η βασική συνάρτηση προγράμματος main()

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

Η γλώσσα προγραμματισμού C

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

Δομές Ελέγχου και Επανάληψης

Transcript:

CASE STUDY 1: Πρόβληµα Να γραφεί ένα πρόγραµµα που θα εµφανίζει ένα ιστόγραµµα της συχνότητας αλφαβητικών χαρακτήρων, τους οποίους θα διαβάζει από ένα αρχείο κειµένου. Στην καταµέτρηση της συχνότητας δε θα λαµβάνεται υπόψη αν είναι κεφαλαία ή µικρά. Προκαταρκτική σχεδίαση Θα ορίσουµε µία κλάση Histogram µε δεδοµένα ένα πίνακα ακεραίων p[n], όπου το Ν είναι 26 όσοι δηλ. Και οι χαρακτήρες (λατινικοί). Ο πίνακας στην αρχή θα µηδενίζεται µε τη συνάρτηση arrinit(), επειδή κάθε θέση του αντιπροσωπεύει ένα µετρητή αντίστοιχα για κάθε γράµµα. Ακολούθως θα καλείται η συνάρτηση readchars() η οποία διαβάζει έναν-έναν τους χαρακτήρες από το αρχείο κειµένου και καλεί τη συνάρτηση countfreq(). H συνάρτηση αυτή ελέγχει αν είναι αλφαβητικός ο χαρακτήρας και αυξάνει το περιεχόµενο της αντίστοιχης θέσης στον πίνακα κατά ένα. Η αντιστοίχηση ανάµεσα σε ένα γράµµα και µία θέση του πίνακα στο διάστηµα 0..Ν-1 γίνεται µε τη χρήση της ASCII τιµής του χαρακτήρα. Τέλος, αφού διαβαστεί όλο το αρχείο, εµφανίζουµε το ιστόγραµµα των συχνοτήτων για κάθε γράµµα καλώντας τη συνάρτηση printfreq(). Yπάρχει επίσης και η συνάρτηση findmaxheight() που βρίσκει τη µεγαλύτερη από όλες τις συχνότητες, η οποία µας βοηθά στην εκτύπωση. Πρόγραµµα #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> #define N 26 class Histogram private: int arr[n];

public: void arrinit() int i; for (i=0; i<n; i++) arr[i] = 0; void readchars(file *f) char ch; ch = getc(f); while (ch!=eof) countfreq(ch); ch = getc(f); void countfreq(int ch) int i; if (ch >= 'a' && ch <= 'z') i = ch - 'a'; arr[i]++; else if (ch >= 'A' && ch <= 'Z') i = ch - 'A'; arr[i]++;

int findmaxheight() int i, max; max = arr[0]; for (i=1; i<n; i++) if (arr[i] > max) max = arr[i]; return max; void printfreq(int maxh) int i, j; cout << "The frequency of the letters is:" << endl << endl; for (i=maxh; i>0; i--) printf("%2d ",i); for (j=0; j<n; j++) if (arr[j] >= i) cout << "* "; else cout << " "; cout << endl; cout << " -------------------------------------------------------" << endl; cout << " A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" << endl; ; main() Histogram ant; FILE *tf; int maxh; tf = fopen("myfile.txt","r");

ant.arrinit(); ant.readchars(tf); fclose(tf); maxh = ant.findmaxheight(); ant.printfreq(maxh); getch(); return 0; Έλεγχος προγράµµατος Τα περιεχόµενα του αρχείου είναι: aaaaaaaaaabbbbbccccccccccddddd eeeeefffgghhhhiijjjjjkkkk lllllmnnnnnppppprrrrrrsssttuuuuuvv zzzzzzzzzz Τα αποτελέσµατα του προγράµµατος είναι:

CASE STUDY 2: Πρόβληµα Να γραφεί ένα πρόγραµµα που να εκτελεί αριθµητικές πράξεις σε µιγαδικούς αριθµούς. Στα µαθηµατικά µιγαδικός αριθµός είναι µία έκφραση της µορφής α + βi, 2 όπου α and β είναι πραγµατικοί αριθµοί, και i η µε την ιδιότητα i = 1. Οι πράξεις που θα εκτελούνται είναι η πρόσθεση, αφαίρεση, πολλαπλασιασµός και διαίρεση. Θα διαβάζονται πρώτα τα α και β 2 αριθµών και ύστερα θα εκτελούνται οι πράξεις µε τη σειρά και θα τυπώνονται τα αποτελέσµατα. Προκαταρκτική σχεδίαση Θα χρησιµοποιήσουµε τους τύπους µε τους οποίους στα µαθηµατικά εκτελούνται οι πράξεις σε µιγαδικούς αριθµούς. Έτσι λοιπόν, αν a+bi και c+di είναι δύο µιγαδικοί αριθµοί, τότε έχουµε: Πρόσθεση Αφαίρεση (a+c) + (b+d)i (a-c) + (b-d)i Πολλαπλασιασµός ιαίρεση (ac-bd) + (ad+bc)i ((ac+bd)/(c 2 +d 2 )) +( (bc-ad)/( c 2 +d 2 )i Θα ορίσουµε µία κλάση Complex µε δεδοµένα τα α και β. Επίσης θα ορισθεί µία συνάρτηση readcomplex() που θα διαβάζει τα α και β ενός µιγαδικού αριθµού και µία συνάρτηση printcomplex() που θα τυπώνει το µιγαδικό αριθµό. Τέλος θα υπάρχουν τέσσερις συναρτήσεις operator γαι την υπερφόρτωση των αριθµητικών τελεστών +,-,*,/ αντίστοιχα. Κάθε φορά που θα δίνονται δύο µιγαδικοί αριθµοί, θα εκτελούνται αυτόµατα και οι τέσσερις συναρτήσεις µε υπερφόρτωση των αριθµητικών τελεστών και θα τυπώνονται τα αποτελέσµατα των πράξεων.

Πρόγραµµα #include <stdio.h> #include <conio.h> #include <iostream.h> class Complex private: float a, b; public: void readcomplex() cout << "Real part: "; cin >> a; cout << "Imaginary part: "; cin >> b; void printcomplex() char ch; if (b>=0) ch='+'; cout << "The complex number is: "; cout << a << ch << b << "i" << endl; Complex operator +(Complex c) Complex temp; temp.a = a + c.a; temp.b = b + c.b; return temp; Complex operator -(Complex c) Complex temp; temp.a = a - c.a; temp.b = b - c.b; return temp;

Complex operator *(Complex c) Complex temp; temp.a = a*c.a - b*c.b; temp.b = a*c.b + b*c.a; return temp; Complex operator /(Complex c) Complex temp; temp.a = (a*c.a + b*c.b)/(c.a*c.a + c.b*c.b); temp.b = (b*c.a - a*c.b)/(c.a*c.a + c.b*c.b); return temp; ; main() Complex c1, c2, c3; cout << endl << "Give 1st complex number:" << endl; c1.readcomplex(); c1.printcomplex(); cout << endl << "Give 2nd complex number:" << endl; c2.readcomplex(); c2.printcomplex(); c3 = c1 + c2; cout << endl << "Addition of the 2 numbers:" << endl; c3.printcomplex(); c3 = c1 - c2; cout << endl << "Subtraction of the 2 numbers:" << endl; c3.printcomplex(); c3 = c1 * c2; cout << endl << "Multiplication of the 2 numbers:" << endl; c3.printcomplex(); c3 = c1 / c2; cout << endl << "Division of the 2 numbers:" << endl; c3.printcomplex(); getch();

Έλεγχος προγράµµατος

CASE STUDY 3: Πρόβληµα Να γραφεί ένα πρόγραµµα που να υπολογίζει την περίµετρο και το εµβαδό διαφόρων γεωµετρικών σχηµάτων.πιο συγκεκριµένα το πρόγραµµα θα είναι menu driven ως εξής: 1. Ορθογώνιο 2. Τρίγωνο 3. Κύκλος 4. Έξοδος Αφού επιλεγεί ένα από τα παραπάνω, αµέσως µετά θα δίνονται τα απαραίτητα δεδοµένα, θα γίνονατι υπολογισµοί και θα τυπώνονται τα αποτελέσµατα. Προκαταρκτική σχεδίαση Θα ορίσουµε µία κλάση Geometry µε δεδοµένο τον τύπο του γεωµετρικού σχήµατος. Η κλαση αυτή θα κληρονοµεί δηµόσια από άλλες τρείς βασικές κλάσεις Την Rectangle Την Triangle Την Circle Στις τρεις βασικές κλάσεις υπάρχουν αντίστοιχα οι συναρτήσεις: readstoixeia() calcarea() calcper() για το διάβασµα των 2 πλευρών του ορθογωνίου, των 3 πλευρών και του ύψους του τριγώνου και της ακτίνας του κύκλου αντίστοιχα. Στις συναρτήσεις επιτρέπεται να έχουν το ίδιο όνοµα µια και βρίσκονται σε διαφορετικές κλάσεις. Το ποιά συνάρτηση θα εκτελεστεί καθορίζεται µε το όνοµα της κλάσης µπροστά από το όνοµα της συνάρτησης και τον τελεστή ::. Στο κυρίως πρόγραµµα, υπάρχει µία επανάλειψη η οποία τυπώνει το µενού µε τις επιλογές και ζητά την επιλογή του χρήστη. Ακολούθως καλείται η συνάρτηση processtype() που ελέγχει την επιλογή του χρήστη και εφόσον είναι έγκυρη, προχωρά

στην εκτέλεση των συναρτήσεων για το διάβασµα των απαραίτητων δεδοµένων, τον υπολογισµό και την εµφάνιση της περιµέτρου και του εµβαδού του γεωµετρικού σχήµατος που επιλέχτηκε. Πρόγραµµα #include <stdio.h> #include <conio.h> #include <iostream.h> #include <math.h> class Rectangle protected: float x,y; public: void readstoixeia() cout << "Dose stoixeia orthogoniou:" << endl; cout << "Plevra x: "; cin >> x; cout << "Plevra y: "; cin >> y; cout << endl; float calcarea() float ar; ar = x*y; return ar; float calcper() float per; per = 2*(x+y); return per; ;

class Triangle protected: float a,b,c,h; public: void readstoixeia() cout << "Dose stoixeia trigonou:" << endl; cout << "Plevra a: "; cin >> a; cout << "Plevra b: "; cin >> b; cout << "Plevra c: "; cin >> c; cout << "Ypsos stin plevra a: "; cin >> h; cout << endl; float calcarea() float ar; ar = (a*h)/2; return ar; float calcper() float per; per = a+b+c; return per; ; class Circle protected: float r; public: void readstoixeia()

; cout << "Dose stoixeia kyklou:" << endl; cout << "Aktina r: "; cin >> r; float calcarea() float ar; ar = M_PI*r*r; return ar; float calcper() float per; per = 2*M_PI*r; return per; class Geometry : public Rectangle, public Triangle, public Circle private: char typos; public: char readtypos() clrscr(); cout << "R. Rectangle" << endl; cout << "T. Triangle" << endl; cout << "C. Circle" << endl; cout << "E. Exit" << endl; cout << endl << "Choice?"; cin >> typos; return typos; void processtypos() char ch; if (typos == 'E' typos == 'e') cout << "Termatismos programmatos..." << endl; else

if (typos == 'R' typos == 'r') Rectangle::readStoixeia(); cout << "Emvadon orthogoniou: " << Rectangle::calcArea() << endl; cout << "Perimetros orthogoniou: " << Rectangle::calcPer() << endl; else if (typos == 'T' typos == 't') Triangle::readStoixeia(); cout << "Emvadon Trigonou: " << Triangle::calcArea() << endl; cout << "Perimetros Trigonou: " << Triangle::calcPer() << endl; else if (typos == 'C' typos == 'c') Circle::readStoixeia(); cout << "Emvadon kyklou: " << Circle::calcArea() << endl; cout << "Perimetros kyklou: " << Circle::calcPer() << endl; else cout << "Lathos epilogi!!!" << endl; cout << "ENTER gia synexeia..."; ch = getchar(); ; main() Geometry g; char ch; do

ch = g.readtypos(); g.processtypos(); while (ch!='e' && ch!='e'); Έλεγχος προγράµµατος

CASE STUDY 4: Πρόβληµα Να γραφεί ένα πρόγραµµα για τη διαχείριση ενός αρχείου τραπεζικών λογαριασµών. Πιο συγκεκριµένα το πρόγραµµα θα είναι menu driven ως εξής: 1. Αναζήτηση λογαριασµού 2. Εµφάνιση αρχείου λογαριασµών 3. Έξοδος Αφού επιλεγεί ένα από τα παραπάνω, αµέσως µετά θα εµφανίζονται τα περιεχόµενα του αρχείου για την επιλογή 2, ενώ αν η επιλογή είναι 1, θα ζητείται ένας τυχαίος λογαριασµός και θα αναζητείται στο αρχείο. Αν υπάρχει θα εµφανίζονται τα στοιχεία του, αλλιώς θα τυπώνεται ανάλογο µήνυµα. Προκαταρκτική σχεδίαση Θα ορίσουµε µία κλάση BankAccount µε δεδοµένα Αριθµός λογαριασµού Όνοµα Ποσό λογαριασµού Θα επιλέξουµε δυαδικό αρχείο για την αποθήκευση των πληροφοριών γιατί η επεξεργασία του είναι πιο αποτελεσµατική και τα δεδοµένα πιο ασφαλή. Επίσης θα γραφούν οι συναρτήσεις displayaccounts() είναι µία συνάρτηση που διαβάζει το αρχείο σειριακά µε την εντολή fread() και τυπώνει στην οθόνη ένα λογαριασµό τη φορά Η διαδικασία επαναλαµβάνεται µέχρι να τελειώσει όλο το αρχείο. findaccount() η συνάρτηση αυτή ζητά από το χρήστη να πληκτρολογήσει έναν τυχαίο αριθµό λογαριασµού. Καλώντας στη συνέχεια τη συνάρτηση searchfile() αναζητείται στο αρχείο. Αν η αναζήτηση είναι επιτυχής, εµφανίζονται τα στοιχεία του λογαριασµού, αλλιώς τυπώνεται ανάλογο µήνυµα.

searchfile() η συνάρτηση αυτή πραγµατοποιεί σειριακή αναζήτηση στο αρχείο, χρησιµοποιώντας την εντολή fread() και µία επανάληψη µέχρι το eof. Αν ο λογαριασµός βρεθεί, επιστρέφει µία λογική τιµή true αλλιώς επιστρέφει false. Πρόγραµµα #include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #include <iostream.h> #define N 50 class BankAccount private: int accno; char name[20]; float amount; public: BankAccount() accno = 0; strcpy(name, " "); amount = 0; BankAccount(int accno1, char name1[], float amoumt1) accno = accno1; strcpy(name, name1); amount = amoumt1; void fillblanks(char *s, int x) int n, i;

n = x - strlen(s); for (i=1; i<=n; i++) strcat(s," "); void displayaccounts(file *f) printf("\nthe contents of the file are:\n\n"); printf("acc.no. NAME AMOUNT\n"); printf("======= ==================== ======\n"); fread(this, sizeof(*this), 1, f); while (!feof(f)) fillblanks(this->name,20); cout << this->accno << " " << this->name << " " << this- >amount << endl; fread(this, sizeof(*this), 1, f); getch(); bool searchfile(file *f, int x, BankAccount &a1) bool found = false; fread(this, sizeof(*this), 1, f); while (!feof(f) && found == false) if (x == this->accno) found = true; else fread(this, sizeof(*this), 1, f); a1 = *this; return found; void findaccount(file *f)

BankAccount a1; int xcode; bool found = false; ; cout << endl << "Give account number:"; cin >> xcode; found = this->searchfile(f,xcode,a1); if (found == true) cout << "The account is found:" << endl; cout << "====================" << endl; cout << endl << "Account no.: " << a1.accno << endl; cout << endl << "Name : " << a1.name << endl; cout << endl << "Amount : " << a1.amount << endl; else cout << endl << "Account number invalid!" << endl; getch(); main() FILE *f; BankAccount acc; int epil; char c; f = fopen("accounts.dat","ab+"); do clrscr(); printf(" Accounts MENU\n"); printf(" =============\n"); printf("1.search account\n"); printf("2.display accounts\n"); printf("3.exit\n"); printf("\n Selection?"); scanf("%d",&epil); c = getchar();

switch (epil) case 1: rewind(f); acc.findaccount(f); break; case 2: rewind(f); acc.displayaccounts(f); break; while (epil!=3); fclose(f); Έλεγχος προγράµµατος

CASE STUDY 5: Πρόβληµα Να γραφεί ένα πρόγραµµα για τον υπολογισµό της µισθοδοσίας εργαζοµένων κάποιας εταιρίας. Η εταιρία κρατά τον αριθµό µητρώου και το όνοµα του κάθε εργαζόµενου σε κάποιο αρχείο εργαζοµένων και καταγράφει τις ώρες που εργάστηκε την εβδοµάδα ο κάθε εργαζόµενος και το ωροµίσθιό του. Ακολούθως υ[πολογίζεται ο µισθός του καθενός και τυπώνεται µία αναλυτική κατάσταση µισθοδοσίας. Προκαταρκτική σχεδίαση Θα ορίσουµε µία κλάση Employee δεδοµένα Αριθµός µητρώου Όνοµα Στην κλάση αυτή θα γραφούν οι συναρτήσεις readdata() για το διάβασµα των δεδοµένων printdata() για την εµφάνιση των δεδοµένων Ακολούθως, θα ορίσουµε µία δεύτερη κλάση Ergasia που θα κληρονοµεί δηµόσια την προηγούµενη, µε δεδοµένα Ώρες Ωροµίσθιο και συναρτήσεις readdata() και printdata() που αφού καλέσουν τις αντίστοιχες της προηγούµενης κλάσης, διαβάζουν και εµφανιζουν αντίστοιχα τα δεδοµένα. Επίσης υπάρχει η συνάρτηση calcmisthos() που υπολογίζει και επιστρέφει το µισθό κάποιου εργαζόµενου. Τέλος θα ορισθεί µία Τρίτη κλάση Etairia που θα κληρονοµεί δηµόσια την Ergasia, µε δεδοµένο ένα πίνακα εργαζοµένων και µία βασική συνάρτηση µε το όνοµα processetairia(), που όταν καλείται µε µία επανάληψη διαβάζει τα στοιχεία

όλων των εργαζοµένων, υπολογίζει και τυπώνει αναλυτική κατάσταση µισθοδοσίας για κάθε εργαζόµενο. Πρόγραµµα #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> #define N 3 class Employee protected: int am; char name[20]; public: void readdata() cout << "A.M.:"; cin >> am; cout << "Name:"; cin >> name; void printdata() cout << "A.m.= " << am << endl; cout << "Name= " << name << endl; ; class Ergasia : public Employee protected: int hours; int payrate; public: void readdata()

Employee::readData(); cout << "Ores:"; cin >> hours; cout << "Oromisthio:"; cin >> payrate; int calcmisthos() int misthos; misthos = hours * payrate; return misthos; void printdata() Employee::printData(); cout << "Ores= " << hours << endl; cout << "Oromisthio= " << payrate << endl; ; class Etairia : public Ergasia protected: Ergasia p[n]; public: void processetairia() int i; for (i=0; i<n; i++) cout << endl; cout << "Employee " << i+1 << ":" << endl; p[i].readdata(); cout << endl << "The employee details are:" << endl; p[i].printdata(); cout << "Misthos=" << p[i].calcmisthos() << endl; ; main()

Etairia e; e.processetairia(); getch(); Έλεγχος προγράµµατος