"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η



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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

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

Επεξεργασία Αρχείων Κειµένου

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

Προγραμματισμός Ι (ΗΥ120)

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

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

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

Προγραμματισμό για ΗΜΥ

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Επανάληψη για τις Τελικές εξετάσεις

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

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

Εισαγωγή στον δομημένο προγραμματισμό

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Ενδεικτική περιγραφή μαθήματος

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

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ 8/9/2008

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

Θέµα 1 (15%): (απαιτούµενος χρόνος < 15 λεπτά)

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

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

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

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων ΟΡΙΣΜΟΣ ΣΥΝΑΡΤΗΣΗΣ ΜΕ ΕΠΙΣΤΡΟΦΗ ΤΙΜΗΣ #include <iostream.h> int compare_numbers(int num1, int num2)

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

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

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

Διάλεξη 18η: Διαχείρηση Αρχείων

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

242 -ΕισαγωγήστουςΗ/Υ

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

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

ΑΤΣΑΛΑΚΗ ΞΑΝΘΟΥΛΑ ΕΡΓΑΣΤΗΡΙΟ 2

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

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

Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 9 Συναρτήσεις. Γεώργιος Λαμπρινίδης

Εργαστήριο 9: Αρχεία

Ανάπτυξη και Σχεδίαση Λογισμικού

ΔΙΑΔΙΚΑΣΤΙΚΟΣ ΠΡΟΓΡΑ Ρ Μ Α ΜΑΤΙ Τ ΣΜΟΣ

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

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009

Προγραμματισμός Ι (ΗΥ120)

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

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

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

ιαφάνειες παρουσίασης #6 (β)

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ. Σχηματική παράσταση του προγράμματος. logariasmos

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

Προγραμματισμός Υπολογιστών με C++

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

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

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

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

ΕΠΛ232: Εργαστήριο 2

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3.

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

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

Transcript:

"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η Σε αυτήν την εργασία καλείστε να κατασκευάσετε τον πηγαίο κώδικα γλώσσας C για το εκτελέσιµο αρχείο µε ό- νοµα ATM, που όταν εκτελείται σε κονσόλα προσοµοιώνει την λειτουργικότητα ενός ΑΤΜ ( Αυτόµατο διαχειριστή Τραπεζικών Συναλλαγών). Πιό συγκεκριµένα η Ϲητούµενη λειτουργικότητα περιγράφεται απο τα εξής ϐήµατα: 1) Κατα την κλήση του αξιοποιεί µέχρι και 2 ορίσµατα της γραµµής εντολών, τα οποία ερµηνεύει ώς ακέραιους, που δηλώνουν το αρχικό πλήθος χαρτονοµισµάτων των 20 και 50 euros, διαθέσιµων για συναλλαγές ανάληψης. Ετσι ορίζεται έµµεσα, το αρχικό άνω ϕράγµα για συναλλαγές ανάληψης. 2) Ανοίγει το αρχείο CustomersDatabase απο το οποίο διαβάζει, πρώτα το πλήθος εγγεγραµένων πελατών CustomersNum και στην συνέχεια για κάθε πελάτη διαβάζει τα στοιχεία εγγραφής του, δηλαδή, το όνοµά (string µήκους το πολύ 20 χαρακτήρων), τον προσωπικό κωδικό του PIN (unsigned int) και τον αριθµό κατατεθηµένων euros (unsigned int). Καθεµιά απο αυτές τις εγγραφές, αποθηκεύεται σε µεταβλητή νέου τύπου που ϑα ορίσετε. Ολες µαζί αποθηκεύονται στο διάνυσµα accounts διάστασης CustomersNum+1 (ειναι µεταβλητής διάστασης, ϑα Ϲητήσετε δυναµική παραχωρηση µνηµης). Η επιπλέον ϑέση ϑα χρησιµοποιηθεί παρακάτω στην εγγραφή ή στην ταυτοποίηση πελατών. 3) Τυπώνει ένα µήνυµα που κατευθύνει τον πελάτη να επιλέξει µία απο τις δύο πιθανές ενέργειες: a) ηµιουργία νέου λογαριασµού, b) Σύνδεση σε υπάρχων λογαριασµό. 4) Για την επιλογή a), το πρόγραµµα κατευθύνει τον πελάτη να συµπληρώσει τα στοιχεία εγγραφής, όνοµά και PIN (όχι τον αριθµό κατατεθηµένων euros), και στην συνέχεια ενηµερώνει τόσο το αρχείο CustomersDatabase µε την καινούργια εγγραφή όσο και το διάνυσµα accounts. Η νέα εγγραφή τοποθετείται στο τέλος. Για την επιλογή b), το πρόγραµµα κατευθύνει τον πελάτη να συµπληρώσει αρχικά το όνοµά εγγραφής, το οποίο και αναζητάται στα ονόµατα του διανύσµατος accounts. Άν δεν ϐρεθεί τυπώνεται σχετικό µήνυµα λάθους και το πρόγραµµα επανέρχεται στο ϐήµα 3, αλλιώς το πρόγραµµα κατευθύνει τον πελάτη να συµπληρώσει το αντίστοιχο PIN. Άν το PIN που εισάγεται απο το πληκτρολόγιο δεν ταυτίζεται µε το καταχωρηµένο, τυπώνεται σχετικό µήνυµα λάθους και το πρόγραµµα επανέρχεται στο ϐήµα 3. Και στις δύο περιπτώσεις, άν επιτευχθεί η σύνδεση του πελάτη, η ϑέση του µέσα στο διάνυσµα accounts αποθηκεύεται στην µεταβλητή customerid. 5) Υστερα απο σχετικό µήνυµα υποδοχής στον ταυτοποιηµένο πλέον πελάτη, το πρόγραµµα τον κατευθύνει να επιλέξει µία απο τις παρακάτω ενέργειες: a) Ανάληψη, b) Κατάθεση, c) Εξοδο. 6) Για την επιλογή a), το πρόγραµµα αρχικά ενηµερώνει τον πελάτη τόσο για το όριο διαθέσιµων µετρητών όσο και για το όριο κατάθεσής του και έπειτα τον κατευθύνει να συµπληρώσει το επιθυµητό ποσό ανάληψης. Άν υπερβαίνει τα παραπάνω ϕράγµατα τυπώνει σχετικό µήνυµα λάθους και επανέρχεται στο ϐήµα 5. Άν όχι ϐρίσκει έναν συνδυασµό σε χαρτονοµίσµατα των 20 και 50 euros, που να προσεγγίζουν προς τα κάτω το επιθυµητό ποσό, τα αποδίδει µε σχετικό µήνυµα και ενηµερώνει τόσο το ποσό κατάθεσης του συγκεκριµένου πελάτη (στο αρχείο CustomersDatabase αλλά και στο διάνυσµα accounts ) όσο και το ποσό διαθέσιµων µετρητών για συναλλαγές ανάληψης. Για την επιλογή b), το πρόγραµµα κατευθύνει τον πελάτη να συµπληρώσει τον επιθυµητό αριθµό χαρτονοµισµάτων 20 euros και τον επιθυµητό αριθµό χαρτονοµισµάτων 50 euros, που σκοπεύει να καταθέσει. Επειτα το πρόγραµµα ενηµερώνει τόσο το ποσό κατάθεσης του συγκεκριµένου πελάτη (στο αρχείο CustomersDatabase αλλά και στο διάνυσµα accounts ) όσο και το ποσό διαθέσιµων µετρητών για συναλλαγές ανάληψης. Για την επιλογή c), το πρόγραµµα προχωράει στο επόµενο ϐήµα. 7) Τυπώνει σχετικό µήνυµα αποχαιρετισµού στον συγκεκριµένο πελάτη και επανέρχεται στο ϐήµα 3. 1

Η εργασία αυτή επιτρέπεται να υλοποιηθεί συνεργατικά. Επιπλέον, µπορείτε να χρησιµοποιήσετε τον επισυναπτόµενο πηγαίο κώδικα ΑΡΚΕΙ ΝΑ ΣΥΜΠΛΗΡΩΣΕΤΕ ΤΑ ΚΕΝΑ ΟΠΟΥ ΥΠΑΡΧΟΥΝ (απαιτείται µελέτη του σε συνδυασµό µε την αναµενόµενη λειτουργικότητα της περιγραφής). Στην εξέταση ϑα αξιολογηθείτε ατοµικά για την κατανόηση των εµπλεκοµένων συναρτήσεων (ειδικά της αναζήτησης ενός string µέσα σε διάνυσµα απο strings), της γραµµής εντολών (πώς χρησιµοποιείται), των νέων τύπων που κατασκευάστηκαν (structures) για την κράτηση εγγραφών, τους δείκτες σε strings και σε συναρτήσεις που εµπεριέχονται, την δυναµική κράτηση και ελευθέρωση µνήµης (που απαιτείται για το διάνυσµα accounts) και τέλος την διαχείριση αρχείων απο την C (ανάγνωση-ενηµέρωση του αρχείου CustomersDatabase). #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> ΗΜΙΤΕΛΕΣ ΥΠΟ ΕΙΓΜΑ ΠΗΓΑΙΟΥ ΚΩ ΙΚΑ ATM.c #define ATM_Money 20*Bank.Note20+50*Bank.Note50 typedef... (*IV)... ; typedef struct {... } registry; typedef struct {... } StoredMoney; typedef struct {... } ActionStruc; \* NA BRE0OYN OI ORISMOI AYTWN TWN TYPWN APO TA SYMFRAZOMENA PARAKATW...*\ unsigned int CustomersNum, customerid; registry *accounts=0; StoredMoney Bank={ 0, 0}; ActionStruc DEDOMENA_BHMATWN[ ]={ { "\n\n *************AYTOMATO TRAPEZIKWN SYNALLAGWN************\n EPILEXTE ENERGEIA\n 1) NEOS LOGARIASMOS.\n 2) SYNDESH ME EGGEGRAMMENO LOGARIASMO.\n", 2 }, { "POIA APO TIS PARAKATW SYNALLAGES EPI0YMEIS?\n 1) ANALHPSH.\n 2) KATA0ESH. \n 3) EXODOS\n", 3 } }; \*** APO AYTES TIS ARXIKES TIMES, NA SYMPERANETE TON ORISMO TOY NEOY TYPOY ActionStruc... ***\ unsigned int NEOS_LOGARIASMOS( ); unsigned int SYNDESH_SE_LOGARIASMO( ); unsigned int ANALHPSH( ); unsigned int KATA0ESH( ); unsigned int EXODOS( ); IV BHMA1[ ] = { NEOS_LOGARIASMOS, SYNDESH_SE_LOGARIASMO }; IV BHMA2[ ] = { ANALHPSH, KATA0ESH, EXODOS }; IV *EKTELESE_ENERGEIA[ 2] = {... }; \*** ARAGE TI TYPOY METAVLHTES HTAN AYTES?? ***\ unsigned int scanint(... mynhma) {... \*** TI LEIPEI EDW?? PRWTA DIAVASTE OLO TON ORISMO THS SYNARTHSHS ***\ printf( mynhma); \*** TI printf EINAI AYTO?? (SYMPERASMA: O TYPOS THS mynhma EINAI... ) ***\ scanf( "%s", str); \* GIA NA KATALABETE POIA TIMH PAIRNEI AYTH H SYNARTHSH PREPEI NA DEITE PARAKATW POY XRHSIMO POIEITAI!! *\ 2

void ANAGNWSH_LOGARIASMWN( ) { unsigned int i; FILE *fp=fopen( "CustomersDatabase",... ); if( accounts) free( accounts); \****** GIATI AYTO??*******\ if(!fp) printf( "DEN YPARXOYN EGGRAFES LOGARIASMWN!\n"); else { fscanf(...,..., &CustomersNum); accounts=malloc( (CustomersNum+1)*sizeof(... )); \****** GIATI AYTO?? GIATI +1??*******\ for( i=0; i<... ; i++) fscanf( fp,..., accounts[i].name), fscanf( fp,..., &accounts[i].pin), fscanf( fp,..., &accounts[i].deposit); fclose( fp); } } void APO0HKEYSH_LOGARIASMWN( ) { unsigned int i; FILE *fp=fopen( "CustomersDatabase",... ); fprintf( fp, "%d\n",... ); \** ARAGE TI APO0HKEYETAI??**\ for( i=0; i<customersnum; i++) fprintf( fp, "%s %d %d\n",...,...,... ); \** ARAGE TI APO0HKEYETAI??**\ fclose( fp); } unsigned int DHMIOYRGIA_LOGARIASMOY( ) { printf( "PARAKALW DWSTE TO ONOMA TOY LOGARIASMOY\n"); scanf( "%s", accounts[... ].name); accounts[... ].pin=scanint( "PARAKALW DWSTE TON PROSWPIKO KWDIKO TOY LOGARIASMOY\n"); \******* TI KANEI H scanint?? ********\ accounts[... ].deposit=0; customerid=... ;... ; } \** MHPWS KSEXASAME KATI AKOMA??**\ unsigned int SYNDESH_SE_LOGARIASMO( ) { unsigned int i=0; printf( "PARAKALW DWSTE TO ONOMA TOY LOGARIASMOY\n"); scanf( "%s", accounts[... ].name); while( i<customersnum && \**** EDW LEIPEI KATI POLY SHMANTIKO ***\) i++; if( i==customersnum) { printf( "AYTO TO ONOMA DEN EINAI EGGEGRAMMENO!\n************* APOSYNDESH *************\n"); accounts[... ].pin=scanint( "PARAKALW DWSTE TON PROSWPIKO KWDIKO TOY LOGARIASMOY\n"); { printf( "LAN0ASMENOS PROSWPIKOS KWDIKOS!\n************* APOSYNDESH *************\n"); return... ;} customerid=i; unsigned int EXODOS( ) { unsigned int NEOS_LOGARIASMOS( ) { DHMIOYRGIA_LOGARIASMOY( ); APO0HKEYSH_LOGARIASMWN( 1); ANAGNWSH_LOGARIASMWN( ); \****** GIATI AYTES OI TREIS ENTOLES??*******\ customerid=customersnum 1; \****** GIATI 1??*******\ 3

unsigned int ANALHPSH( ) { if(!accounts[... ].deposit) { printf(" SYGGNWMH, ALLA O LOGARIASMOS SOY DEN EXEI KATA0ESEIS!\n\n" ); else if(!(atm_money)) { printf(" SYGGNWMH, ALLA TO ATM ADYNATEI AYTHN THN STIGMH NA EKTELESEI SYNALLAGES ANALHPSHS!\n\n" ); else { unsigned int i, i20, i50, m; printf(" TO ATM DIA0ETEI %d euros KAI OI KATA0ESEIS SOY ANERXONTAI SE %d euros\n", ATM_Money, accounts[... ].deposit ); i=scanint( "POIO EINAI TO POSO THS ANALHPSHS?\n"); { printf(" SYGGNWMH, ALLA TO ATM DIA0ETEI %d euros GIA SYNALLAGES!\n\n", ATM_Money ); { printf(" TO POSO POY ZHTAS YPERBAINEI TIS KATA0ESEIS SOY!\n\n", accounts[... ].deposit ); i50=i/50; if( i50 > Bank.Note50) i50=bank.note50; i20=(i 50*i50)/20; \* EDW GIATI EGINAN OLOI AYTOI OI YPOLOGISMOI?? *\ printf(" TO ATM SOY DINEI %d XARTONOMISMATA TWN 20 euros KAI %d XARTONOMISMATA TWN 50 euros.\n", i20, i50); accounts[... ].deposit = 20*i20 + 50*i50, Bank.Note50 =i50, Bank.Note20 =i20; printf(" TWRA OI KATA0ESEIS SOY ANERXONTAI SE %d euros\n", accounts[... ].deposit );... \* EDW LEIPEI H KLHSH EKEINHS THS SYNARTHSHS POY ENHMERWNEI THN DATABASE *\; unsigned int KATA0ESH( ) { unsigned int i20, i50; i20=scanint( " POSA XARTONOMISMATA TWN 20 euros 0ELEIS NA KATA0ESEIS?\n"), Bank.Note20 += i20; i50=scanint( " POSA XARTONOMISMATA TWN 50 euros 0ELEIS NA KATA0ESEIS \n"), Bank.Note50 += i50; accounts[... ].deposit += 20*i20 + 50 *i50; printf(" AYTHN THN STIGMH OI KATA0ESEIS SOY ANERXONTAI SE %d euros \n", accounts[... ].deposit);... \* EDW LEIPEI H KLHSH EKEINHS THS SYNARTHSHS POY ENHMERWNEI THN DATABASE *\; unsigned int BHMATA( unsigned int step) { unsigned int action; step ; do { printf( "%s\n", DEDOMENA_BHMATWN[ step].text); action=scanint( ""); } \* EDW H KLHSH THS scanint EINAI PERIERGH?? *\ while( action<1 DEDOMENA_BHMATWN[ step].choice< action); \* MEXRI POTE EKTELEITAI AYTO TO EPANALHPTIKO BLOCK?? *\ action ; return EKTELESE_ENERGEIA[ step][ action]( ); } \* TI EINAI H EKTELESE_ENERGEIA, PINAKAS H SYNARTHSH?? *\ 4

main( int argc, char **argv) { if( argc<2) printf( "TO ATM DEN EXEI XRHMATA GIA SYNALLAGES ANALHPSHS\n"); if( argc<3) Bank.Note20=... ; if( argc<4) Bank.Note50=... ; \* SYMPLHRWSTE THN ERMHNEIA TWN ORISMATWN THS GRAMMHS ENTOLWN (APO TIS ODHGIES) *\... \* EDW LEIPEI H KLHSH EKEINHS THS SYNARTHSHS POY EISAGEI TH DATABASE STO DIANYSMA *\ do { while( BHMATA( 1)); printf( "\n\n\n\n\n\n\n\n\n\n\n\nkalwshr0es %s, \n", accounts[... ].name ); while( BHMATA( 2)); printf( " ANTIO %s.\n************* APOSYNDESH *************\n", accounts[... ].name); } while( 1); } 5