Α. Μ. Βαθμός Σχόλιο 1183 1194 - Το πρόγραµµα πέφτει σε ατέρµονο loop γιατί στο while δεν έχει scanf ώστε να διαβάζει νέα επιλογή, η τιµή της επιλογής δε µπορεί να γίνει ποτέ 5 ή 6 για να τερµατίσει. - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι σταθερές - Όλες οι εντολές στο σώµα της do-while έπρεπε να βρίσκονται ένα tab πιο µέσα. - Μη βάζεις περισσότερες από µια εντολή σε κάθε γραµµή - Αν ο χρήστης δώσει αρχικά µια σωστή επιλογή και µετά µια λάθος, το πρόγραµµα δεν έχει τρόπο να το ανιχνεύσει - Προσπάθησε να ξανακάνεις την άσκηση µόνος σου χωρίς να κοιτάς τη λύση - θα σε βοηθήσει. - Το πρόγραµµα λειτουργεί όπως πρέπει (αλλά δε χρειάζεται κενή γραµµή ανάµεσα στις επιλογές του µενού) - Ο κώδικας είναι ευανάγνωστος, καλά στοιχισµένος και σχολιασµένος. 1238 1239 1240 1241 () - Δεν εκτυπώνεις πουθενά το subtotal.γιατί? - Προσοχή στη διεπαφή µε το χρήστη. - Πολύ καλή δουλειά και καλή µορφοποίηση των αποτελεσµάτων. - Να αλλάζεις πάντα γραµµή όταν εµφανίζεις κάποιο µήνυµα στην οθόνη. - Δεδοµένου ότι όλες οι τιµές µε τις οποίες κάνεις πράξεις είναι double, θα ήταν καλή ιδέα να έχεις και την τιµή του νερού ως double (ειδικά αν υπολογίζεις ότι στο µέλλον µπορεί να αλλάξει). - Μη βάζεις πολλαπλές εντολές στην ίδια γραµµή γιατί µειώνεται η αναγνωσιµότητα του προγράµµατός σου. Επίσης, απέφευγε να γράφεις κώδικα πέρα της 70ής στήλης. - Η συνθήκη του do-while είναι λάθος. Η έκφραση (number!= 6 number!= 5) είναι πάντα αληθής - Καλή δουλειά µε τη µορφοποίηση της εξόδου - Καλή δουλειά µε τη στοίχιση - Το email δεν είχε θέµα. Στο µέλλον να ακολουθείς ακριβώς τις οδηγίες - Το αρχείο πρέπει να λέγεται επώνυµο_όνοµα_κτλ, κι όχι όνοµα_επώνυµο_κτλ. - Το 1.Coke έπρεπε να είναι πάντα σε νέα γραµµή - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι σταθερές - Προβλήµατα στη στοίχιση. Όλα τα περιεχόµενα του do-while έπρεπε να είναι πιο µέσα. Page 1
1242 1243 1244 1245 1246 1247 1248 1249 - Καλή προσπάθεια στα ονόµατα µεταβλητών, αλλά θα µπορούσε να είναι καλύτερη: Στο epilogh αποθηκεύεις τιµές, άρα θα ήταν πιο περιγραφικό το όνοµα timh_epiloghs. Στο i αποθηκεύεις την επιλογή, οπότε τώρα θα ταίριαζε καλύτερα το όνοµα epilogh. - Τα ονόµατα των σταθερών γράφονται µε κεφαλαία. - Πολύ καλή στοίχιση γενικά, αλλά σου ξέφυγαν κάποια tab στα τελευταία if., - Η εκφώνηση ζητούσε να εκτυπώνονται δύο δεκαδικά ψηφία για τις τιµές. - To 1.Coke έπρεπε να εµφανίζεται σε νέα γραµµή - Οι τιµές έπρεπε να είναι σταθερές. - Λάθη στον υπολογισµό των συνόλων. - Λάθη στις συνθήκες των if - Οι τιµές των αναψυκτικών και του νερού θα έπρεπε να είναι δηλωµένες σαν σταθερές. - Σε τέτοιες περιπτώσεις είναι πιο κατάλληλη η χρήση της switch και όχι της if. - Για να έχουµε ακρίβεια δύο δεκαδικών ψηφίων γράφουµε %.2lf. - Το email δεν είχε attachment - Οι τιµές των αναψυκτικών και του νερού θα πρέπει να έχουν δηλωθεί ως σταθερές. - Η κάθε εντολή θα πρέπει να βρίσκεται σε δική της γραµµή. - Για να έχουµε ακρίβεια δύο δεκαδικών ψηφίων αρκεί να δηλώσουµε %.2lf. -Μη χρησιµοποιείς αέναο loop, - Η άσκηση ζητούσε δύο δεκαδικά όχι 1, καλύτερα θα ήταν να είχες χρησιµοποιήσει %.2f, - Δοκίµασε να το φτιάξεις µε τη switch - case. Γενικά καλή προσπάθεια - Το αρχείο πρέπει να λέγεται επώνυµο_όνοµα_κτλ, κι όχι όνοµα_επώνυµο_κτλ. -Προσοχή στη µορφή, µην ξεφεύγουν παραπάνω κενά από όσα πρέπει -Όταν θα χρησιµοποιήσεις ξανά else και αµέσως µετα if() χρησιµοποίησε τη σύνταξη else if(){}, κάνε µια αναζήτηση στο google. -Λίγο παραπάνω προσοχή µε τη διεπαφή, σου λείπουν κάποιοι τελεστές αλλαγής γραµµής. Γενικά καλή δουλειά. - Το πρόγραµµα έχει γενικά την επιθυµητή συµπεριφορά. - Η προδιαγραφή ορίζει να εκτυπώνονται µόνο δύο δεκαδικά ψηφία. - Στην επιλογή 6, δεν τυπώνεται το µήνυµα Canceled πριν τον τερµατισµό, 3.Sprite (λείπει το 3.). - Δεν τυπώνεται Total = 0.00 ή Canceled αν ο χρήστης δώσει 5 ή 6 αντίστοιχα από την πρώτη φορά. - Συνιστάται να χρησιµοποιούµε σταθερές για τις τιµές των αναψυκτικών, αντί για αριθµούς όπως 0.60 και 1.0. - Ο κώδικας έχει πολλές κενές γραµµές µε αποτέλεσµα να µην είναι ευανάγνωστος. Page 2
1250 1251 1252 1253 1254 - Δεν υπάρχουν σχόλια - Να χρησιµοποιείς double και όχι float για δεκαδικές µεταβλητές, ειδικά όταν κάνεις πράξεις µε ποσότητες που έχεις ήδη δηλώσει ως double - Γενικά καλή στοίχιση, αλλά σου έχει ξεφύγει σε κάποια σηµεία - Δεν έχεις αρχικοποιήσει τις σταθερές και τα αποτελέσµατα βγαίνουν πάντα λάθος. Να τρέχεις πάντα το πρόγραµµά σου πριν το στείλεις και να ελέγχεις τα αποτελέσµατα. - Ακόµη κι αν είχαν αρχικοποιηθεί σωστά οι µεταβλητές δε θα εµφανίζονταν σωστά αποτελέσµατα. Το πρόγραµµα ζητά κάθε φορά που επιλέγεται ένα αναψυκτικό ή νερό να εκτυπώνεται το σύνολο µέχρι τότε - όχι η τιµή του ενός αναψυκτικού/νερού όπως κάνεις εσύ. Επίσης, µε τον τρόπο που το έγραψες, το σύνολο εκτυπώνεται ακόµη κι αν έχει γίνει invalid selection. - Το email δεν είχε θέµα. Στο µέλλον να ακολουθείς ακριβώς τις οδηγίες - Πολλές printf που δε χρειάζονται, θα µπορούσες αυτή που είναι έξω από τη do να τη βάλεις µέσα στη do και να βγάλεις όλες τις άλλες. - Πρόσεχε λίγο τη διεπαφή σου, εκτυπώνει κόµµατα ενώ δεν πρέπει. - Καλή προσπάθεια. - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι σταθερές - Η λογική του προγράµµατος είναι λίγο µπερδεµένη. Ποιος ο λόγος να χρησιµοποιήσεις switch όταν αφήνεις κενές τις περιπτώσεις 1-6, και µετά χρησιµοποιείς if ακριβώς γι αυτές τις περιπτώσεις? Ουσιαστικά ελέγχεις το ίδιο πράγµα 2 φορές και την πρώτη φορά αγνοείς τα αποτελέσµατα του ελέγχου. Δες τη λύση για να καταλάβεις καλύτερα. - Υπάρχει ένα απίστευτα µεγάλο κενό ανάµεσα στο return 0; και το τελικο }. Μην αφήνεις τόσο µεγάλα κενά. Επίσης, σου έχει ξεφύγει η στοίχιση προς το τέλος, αν και γενικά είναι καλή - Καλή δουλειά στη µορφοποίηση της εξόδου σύµφωνα µε τις προδιαγραφές - Εξαιρετική δουλειά στη συµµόρφωση µε τις προδιαγραφές - Οι τιµές έπρεπε να είναι σταθερές - Αντί για if είναι πιο κατάλληλη η χρήση switch σε αυτή την περίπτωση. - Καλή στοίχιση - Κακή στοίχιση. Κάθε φορά που ανοίγεις άγκιστρο, η επόµενη εντολή πρέπει να είναι σε νέα γραµµή και ένα tab πιο µέσα από την προηγούµενη. - Μη βάζεις περισσότερες από µία εντολή σε µια γραµµή - Είναι καλύτερα να χρησιµοποιείς double και όχι float για δεκαδικούς - Η έξοδος του προγράµµατός σου δεν ακολουθεί ακριβώς τις προδιαγραφές - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι σταθερές - Απέφευγε να κάνεις copy+paste κώδικα γιατί αυξάνει την πιθανότητα λάθους. Το πρόγραµµά σου τυπώνει "Invalid selection" για όλες τις επιλογές. Page 3
1255 1256 1257 -Δε βρέθηκε αρχείο 1258 1260 1261 1262 1263 1264 1265 Οριακά () - Πολύ καλή δουλειά στη µορφοποίηση της εξόδου, µπράβο! - Να χρησιµοποιείς πάντα tab για τη στοίχιση. Το δεύτερο do έπρεπε να είναι πιο µέσα από το πρώτο. - Πολύ καλή δουλειά γενικά - Το αρχείο πρέπει να λέγεται επώνυµο_όνοµα_κτλ, κι όχι όνοµα_επώνυµο_κτλ. - Η συνθήκη στο while δεν γίνεται ποτέ ψευδής αφού στις επιλογές 5 και 6 κάνεις return 1 - Αρκετά καλό. - Δεν χρησιµοποίησες καθόλου σταθερές. - Δεν µορφοποίησες σωστά την έξοδο. - Το σχόλιο σου στην if δεν έχει καµιά σχέση µε την if αλλά µε την while. Καλύτερα να το έβαζες αµέσως µετά την do. - Το extra δεν χρειάζεται να το στέλνεις. Καλή δουλεία αλλά αν σου ζητούσε να δίνεις και 2ευρα,50λεπτα κλπ πώς θα το έκανες; - Στη γραµµή 52 σου λείπει µια break, σαν αποτέλεσµα όποτε πατάω 6 να µην τερµατίζει. -Καλή προσπάθεια δοκίµασε όµως και µε τη switch - case. - Οι τιµές έπρεπε να έχουν δηλωθεί ως σταθερές - Το email δεν είχε θέµα. Στο µέλλον να ακολουθείς ακριβώς τις οδηγίες. - Το πρόγραµµά σου πέφτει σε ένα ατέρµονο loop. Η συνθήκη της do-while ισχύει πάντα. - Θα έπρεπε µέσα στην if για τη τις επιλογές 5 και 6 να έχεις 'return 1;' έτσι ώστε να τερµατίζει και το πρόγραµµά σου. - Να αλλάζει πάντα γραµµή όταν εµφανιστεί κάποιο µήνυµα στην οθόνη. - Σε τέτοιες περιπτώσεις είναι πιο κατάλληλη η χρήση της switch και οχι η if. - Καλή στοίχιση γενικά, αν και σου έχει ξεφύγει σε κάποια σηµεία - Η εκφώνηση ζητούσε να εκτυπώνονται 2 δεκαδικά ψηφία στις τιµές - Αντί για µια τεράστια έκφραση µε if µπορούσες να είχες χρησιµοποιήσει στη συνθήκη του while σου: epilogi_xristi >=1 && epilogi_xristi <=6 - Καλή δουλειά γενικά -Γραµµή 19: χρειάζεται >= και =< όχι µόνο > ή < το ίδιο και στη γραµµή 38, - Η break µπαίνει µέσα {} αλλιώς το πρόγραµµά σου τερµατίζει ανεξαρτήτως ελέγχου. - Η printf µέσα στη δεύτερη if δε χρειάζεται - Να ζητάς βοήθεια. - Το πρόγραµµα δεν ακολουθεί τις προδιαγραφές. Έπρεπε να εκτυπώνει το subtotal στις επιλογές 1-4. - Οι τιµές των αναψυκτικών/νερού έπρεπε να είχαν δηλωθεί ως σταθερές. Page 4
1267 1268 1269 1271 1273 1274 1275 1276 -Ωραίος κώδικας τα χαλάς όµως στο τέλος. Ο έλεγχος που κάνεις είναι λάθος. Θα έπρεπε η choice=<4 και οχι choice=<6. - Οι τιµές έπρεπε να έχουν δηλωθεί ως σταθερές - Στο σώµα κάθε case τα γράφεις σε µία σειρά δύο εντολές, για τον compiler δεν είναι λάθος όµως αν είχες κάνει εσύ λάθος και σου έδειχνε τη γραµµή που θα είχες τις δύο εντολές σε ποιά απο τις δύο θα ήταν το λάθος. Καλό είναι κάθε γραµµή να αντιστοιχεί σε µία εντολή κάνει το διόρθωµα ευκολότερο. - Τα αρχεία που παρέδωσες ήταν άδεια. Επικοινώνησε µε την κυρία Ντουφεξή όσο το δυνατό συντοµότερα. - Καλή δουλειά στη µορφοποίηση της εξόδου του προγράµµατός σου - Οι τιµές των αναψυκτικών/νερού έπρεπε να είχαν δηλωθεί ως σταθερές. - Μη βάζεις πολλαπλές εντολές στην ίδια γραµµή (αναφέροµαι στα case του switch) - Για το subtotal έπρεπε να εκτυπώνεις το σύνολο µέχρι εκείνη τη στιγµή, όχι τη τιµή του ενός αναψυκτικού ή νερού. - Οι σταθερές δηλώνονται µε κεφαλαία. - Θα ήταν καλύτερα να χρησιµοποιούσες την switch. - Η συνθήκη στο while είναι πάντα αληθής. - Λάθος στο attachment Πολύ καλή δουλειά, όµως: -Θα ήταν προτιµότερο να είχες χρησιµοποιήσει τη switch-case, δοκίµασέ το οπωσδήποτε. -Για κάθε περίπτωση χρησιµοποιείς την if. Η συγκεκριµένη δοµή έχει και την εξής σύνταξη if( ){} else if( ){}...{}else{}. Κάνε µια αναζήτηση στο google να βρεις κάποιο παράδειγµα και θα δεις ότι γλυτώνεις έναν έλεγχο.πολύ σηµαντικό από πλευράς χρόνου για τον επεξεργαστή! - Το πρόγραµµα λειτουργεί σωστά. - Eίναι κοµψό ότι το µενού τυπώνεται µόνο µια φορά µέσα στον κώδικα. - Να κάνεις στοίχιση του κώδικα µε πιο συστηµατικό τρόπο. - Συνιστάται να χρησιµοποιούµε σταθερές για τις τιµές των αναψυκτικών, αντί για αριθµούς όπως 0.60 και 1.0. - Υπάρχει και η δυνατότητα if(choice>=1 && choice <=6). - Θα εκτελεστεί κάποτε η τελευταία return (0); του κώδικα της main(); - Θα ήταν καλύτερα να χρησιµοποιούσες την switch - Καλό θα ήταν να έβαζες κάποια σχόλια στο κώδικα σου. Page 5
1277 1278 1279 1280 1281 1282 - Το 1.Coke εµφανίζεται κολληµένο στο προηγούµενο µήνυµα που εκτυπώνεται. Έπρεπε να είναι σε νέα γραµµή. - Τα ονόµατα των σταθερών γράφονται µε κεφαλαία - Αντί για µια τεράστια έκφραση µε if µπορούσες να είχες χρησιµοποιήσει στη συνθήκη του while σου: epilogi_xristi >=1 && epilogi_xristi <=6 - Λάθος στη λογική του προγράµµατος: Αν κάνω λάθος επιλογή (πχ 7) και µετά σωστή, το πρόγραµµα τερµατίζει. Το λάθος οφείλεται στο ότι όταν ελέγχεις για λάθος δεν ξαναγυρίζεις πίσω στο βήµα 1 όπως ζητούσε η εκφώνηση. Δες τη λύση - Καλή δουλειά στη στοίχιση αν και το τελευταίο while είναι πιο µέσα από ότι έπρεπε - Πολύ καλή δουλειά. - Η τιµή του νερού ήταν 1 ευρώ και όχι 0,5. - Το πρόγραµµα λειτουργεί σωστά. - Ο κώδικας είναι απλός και ευανάγνωστος. - Αν αγοράσω Dasani, δεν τυπώνεται το Subtotal? - Έχεις ένα απίστευτα µεγάλο κενό ανάµεσα στις δηλώσεις των µεταβλητών και των σταθερών!! - Να χρησιµοποιείς µόνο tab για στοίχιση για να γίνεται οµοιόµορφα. - Η συνθήκη του do-while είναι λάθος. Η έκφραση number!= 5 number!= 6 είναι πάντα αληθής. - Λάθη στη σύνταξη του if. - Εξαιρετική δουλειά στη µορφοποίηση της εξόδου, µπράβο! - Καλή δουλειά µε τη στοίχιση αν και σου έχει ξεφύγει σε µερικά σηµεία - Καλή δουλειά µε τις σταθερές αν και θα µπορούσαν να είναι πιο περιγραφικά τα ονόµατα. πχ COLAPRICE αντί για PRFOR123 και WATERPRICE αντί για PRFOR4. Αυτό θα διευκόλυνε πολύ τις αλλαγές στο πρόγραµµα στην περίπτωση που θέλαµε αργότερα να προσθέσουµε περισσότερες επιλογές αναψυκτικών ή νερών. - Οµοίως, θα ήταν καλύτερα για το cancel να ελέγχεις ειδικά για την επιλογή 6 και όχι να έχεις γενικά ένα else. Το else θα ήταν καλύτερο για να πιάνει όλες τις περιπτώσεις invalid εισόδου. - Τέλος,αυτού του είδους η άσκηση είναι καλή περίπτωση για χρήση switch έναντι if. - Το όνοµα του αρχείου έπρεπε να είναι lab3.c - Το πρόγραµµα λειτουργεί σχεδόν ακριβώς όπως θα έπρεπε (αλλά: αν ο χρήστης ζητήσει 0, αγοράζει κάτι που κοστίζει 0.60;) - Ο κώδικας είναι ευανάγνωτος αλλά δεν έχει σχόλια. Είναι κοµψή λύση ότι το µενού τυπώνεται και η επιλογή του χρήστη διαβάζεται µόνο µια φοράµέσα στον κώδικα. Όπως έχει γραφτεί ο κώδικας, δε χρειάζεται το εξωτερικό από τα δύο do while, αρκούσε µόνο το ένα, µε συνθήκη while(1). - Μετά την εκτύπωση του subtotal χρειάζεται χαρακτήρας νέα γραµµής. Page 6
1283 1284 - Πολύ καλή δουλειά. 1285 - Δεν παραδόθηκε άσκηση 1286 - Πολύ καλή δουλειά και ωραία µορφοποίηση στην έξοδο. 1288 1289 1290 1292 - Δεν χρησιµοποίησες σταθερές για τις τιµές. - Κακή στοίχιση. - Καλύτερα να χρησιµοποιούσες την switch. - Το αρχείο πρέπει να λέγεται επώνυµο_όνοµα_κτλ, κι όχι όνοµα_επώνυµο_κτλ. - Πολύ κακή στοίχιση. - Δεν έβαλες αρκετά σχόλια. - Δεν χρησιµοποίησες καθόλου σταθερές. - Επανέλαβες 3 φορές τον ίδιο ακριβώς κώδικα στα case 1,2 και 3 ενώ µπορούσες να έχεις: case 1: case 2: case 3: { Τον κώδικα σου; break; } - Δεν έβαλες καθόλου σχόλια. - Δεν χρησιµοποίησες καθόλου σταθερές. - Η έξοδος σου στην επιλογή 5 δεν είναι όπως ζητά η εκφώνηση. - Επανέλαβες 3 φορές των ίδιο ακριβώς κώδικα στα case 1,2 και 3 ενώ µπορούσες να έχεις: case 1: case 2: case 3: { Τον κώδικα σου; break; } - Να διαβάζεις καλύτερα την εκφώνηση. Το πρόγραµµα σου δεν κάνει αυτό που ζητά η άσκηση. - Λάθη στις λογικές εκφράσεις - Το πρόγραµµα δεν εκτυπώνει αποτελέσµατα - Κακή στοίχιση - Η συνθήκη που έχεις στο while δεν γίνεται ποτέ ψευδής αφού για τις επιλογές 5 και 6 κάνει return. Μπορούσε να είναι while(1); - Πολύ καλό! Page 7
1293 1294 1295 1297 1299 1300 1303 1304 1305 - Πολύ καλή δουλειά. 1306 - Κάθε εντολή πρέπει να έχει δική της σειρά. - Για να έχουµε ακρίβεια δύο δεκαδικών ψηφίων γράφουµε %.2lf. - Κάθε φορά που εµφανίζουµε µήνυµα προς το χρήστη αλλάζουµε σειρά. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς ίδια µε αυτή του δικού µας. - Μη βάζεις ποτέ δύο εντολές στην ίδια γραµµή (τα break στο switch έπρεπε να είναι σε δική τους γραµµή - Να χρησιµοποιείς double για δεκαδικές µεταβλητές. - Καλή δουλειά κατά τα άλλα. - Σωστή συµπεριφορά και ευανάγνωστος κώδικας. - Συνιστάται να χρησιµοποιούµε σταθερές για τις τιµές των αναψυκτικών, αντί για αριθµούς όπως 0.60 και 1.0. - Σηµείωση: Η συνθήκη του do while (choice>=1 && choice<=6) είναι πάντα αληθής όπως είναι γραµµένος ο κώδικας, δηλαδή φαίνεται ισοδύναµο µε while(1). - Κάθε εντολή θα πρέπει να έχει την δική της σειρά. - Γενικά πολύ καλή δουλειά. -Κάνει compile, όµως κάνει µόνο αυτό. Να ζητάς βοήθεια. Έχεις τόσο λογικά λάθη στους ελέγχους της εκάστοτε if όσο και λάθη τύπου, για ποιο λόγο χρησιµοποιείς τη scanf στις σειρές 28 και 33. Δεν εκτυπώνεις ποτέ τις τιµές! -ΝΑ ΖΗΤΑΣ ΒΟΗΘΕΙΑ - Να χρησιµοποιείς µόνο tab για στοίχιση για να γίνεται οµοιόµορφα. - Πολύ καλή δουλειά µε τη µορφοποίηση της εξόδου - Εξαιρετική δουλειά στη µορφοποίηση της εξόδου του προγράµµατός σου - µπράβο! - Οι τιµές των αναψυκτικών/νερού έπρεπε να είχαν δηλωθεί ως σταθερές. - Πιθανό λάθος στη σύνταξη της switch - case, η σύνταξή της παραπάνω δοµής υπαγορεύει ότι κάθε case τελειώνει µε µία break και όχι µε continue. Στη συγκεκριµένη περίπτωση δουλεύει, αλλά αν δεν εννοούσες να βάλεις continue, προσεχέ το στο µέλλον! Στη while έπρεπε να βάλεις έλεγχο και για την περίπτωση που η τιµή ήταν 6. - Οι τιµές έπρεπε να έχουν δηλωθεί ως σταθερές - Καλή δουλειά στη στοίχιση εκτός από τις δηλώσεις µεταβλητών που έπρεπε να είναι ένα tab πιο µέσα. - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι δηλωµένες ως σταθερές - Το πρόγραµµα δεν ακολουθεί τις προδιαγραφές ακριβώς. Το µενού έπρεπε να εκτυπώνεται σε κάθε επανάληψη. Page 8
1307 1309 1310 1311 1312 1314 Οριακά () Οριακά - Θα έπρεπε να δηλώσεις ως σταθερές τις τιµές των αναψυκτικών και του νερού. - Όταν επιλέγουµε αριθµούς εκτός των 1-6 δεν εµφανίζει το µήνυµα 'Invalid Selection'. - Το πρόγραµµα λειτουργεί σωστά (αλλά έπρεπε να τυπώνονται µόνο δύο δεκαδικά ψηφία). - Είναι σωστή η χρήση της switch -case και είναι κοµψό ότι το µενού τυπώνεται µόνο µια φορά µέσα στον κώδικα. - Υπάρχει και η δυνατότητα case 1: case 2: case 3: (ακολουθία εντολών), αφού είναι ίδιες οι εντολές. - Η µεταβλητή eura καλύτερα να λεγόταν sum, και η eura1 καλύτερα να µην υπήρχε καθόλου. - Συνιστάται να χρησιµοποιούµε σταθερές για τις τιµές των αναψυκτικών, αντί για αριθµούς όπως 0.60 και 1.0. - Το email δεν είχε θέµα. Στο µέλλον να ακολουθείς ακριβώς τις οδηγίες. - Αν ο χρήστης δώσει µη έγκυρη επιλογή, όχι την πρώτη φορά, αλλά κάποια επόµενη, το πρόγραµµα τερµατίζει απροσδόκητα. Άρα έπρεπε στη γραµµή 35 να έχεις αντί για &&. Αφού ο ίδιος έλεγχος εγκυρότητας γίνεται στις γραµµές 17-21 και 35-39, αυτό είναι ένα καλό παράδειγµα του γιατί δεν είναι καλό να έχεις τον ίδιο κώδικα σε δύο διαφορετικά σηµεία µε copy paste. Γιατί όταν αλλάζεις το ένα κοµµάτι, πρέπει να θυµάσαι Να αλλάζεις και το άλλο. - Την πρώτη φορά έπρεπε να τερµατίζει το πρόγραµµα αν ο χρήστης δώσει 5 ή 6. - Στο πρόγραµµά σου, η µεταβλητή subtotal έχει πάντα τη σωστή τιµή, και η total δεν έχει νόηµα. Χρειάζεται Μόνο µια µεταβλητή, και αυτής την τιµή τυπώνουµε, είτε θέλουµε το subtotal, είτε το total (στον τερµατισµό). - Συνιστάται να χρησιµοποιούµε σταθερές για τις τιµές των αναψυκτικών, αντί για αριθµούς όπως 0.60 και 1.0. -Απαράδεκτη διεπαφή µε το χρήστη, καµία αλλαγή γραµµής κατα την εκτέλεση. -Δεν δουλεύει σωστά για την επιλογή 5. - Οι τιµές έπρεπε να έχουν δηλωθεί ως σταθερές -Δεν έχεις σωστή στοίχιση, το κάνει δύσκολο να το διορθώσεις και να ξέρεις ότι δουλεύει σωστά. -Να κάνεις έλεγχο πρίν πεις στον εαυτό σου "τελείωσα". - Δεν χρησιµοποίησες καθόλου σταθερές. - Λάθος αποτέλεσµα γιατί σε κάθε επανάληψη προσθέτεις το subtotal στο total αλλά δεν µηδενίζεις το subtotal για την επόµενη επανάληψη. Αντί να το µηδενίζεις µπορούσες να έχεις subtotal = 0.6 ή 1 αντί για subtotal = subtotal + 0.6 ή 1.0. - Η συνθήκη σου στο 2o while είναι πάντα αληθής. Μπορούσες να έχεις while(1); Καλή δουλειά, όµως: - Δοκίµασε να την ξανακάνεις µε τη switch-case. - Μη χρησιµοποιείς ποτέ αέναο loop, σε µεγαλύτερα προγράµµατα ένα µικρό λάθος να κάνεις και θα κολλάει για πάντα. - Στη γραµµή 23 ο απολογισµός του if είναι πάντα ψευδής κοιταξέ το. Page 9
1315 1316 1317 1319 1320 1321 1322 - Αντιγραφή 1324 1325 Αντιγραφή 1326 - Εξαιρετική δουλειά στη µορφοποίηση της εξόδου, µπράβο! Πρόσεχε µόνο λίγο τα τυπογραφικά (το σωστό είναι "Dasani" ενώ είχες γράψει "Dasami" - Πολύ καλή στοίχιση και σχόλια - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι σταθερές - Η συνθήκη του do-while σου είναι λάθος και δουλεύει µόνο κατά τύχη. Το χρησιµοποιείται για bitwise or. Έπρεπε να είχες χρησιµοποιήσει. Από τη στιγµή που ελέγχεις το εύρος, δεν υπάρχει λόγος να ελέγχεις και µία-µία τις τιµές. Πολύ καλή δουλειά, όµως: -Θα ήταν προτιµότερο να είχες χρησιµοποιήσει τη switch-case, δοκίµασέ το οπωσδήποτε. -Για κάθε περίπτωση χρησιµοποιείς την if. Η συγκεκριµένη δοµή έχει και την εξής σύνταξη if( ){} else if( ){}...{}else{}. Κάνε µια αναζήτηση στο google να βρεις κάποιο παράδειγµα και θα δεις ότι γλυτώνεις έναν έλεγχο.πολύ σηµαντικό από πλευράς χρόνου για τον επεξεργαστή! - Το αρχείο lab3.c ήταν κενό. Η διόρθωση έγινε αυτή τη φορά µέσω του εκτελέσιµου, αλλά στο µέλλον πρόσεχε να µη σβήνεις το αρχείο. Πιθανώς αυτό να συνέβη αν είχες ανοίξει το ίδιο αρχείο ταυτόχρονα από διαφορετικούς επεξεργαστές κειµένου ή λόγω των προβληµάτων του εργαστηρίου. - Πολύ καλή δουλειά. - Για να έχουµε ακρίβεια δύο δεκαδικών ψηφίων πρέπει να δηλώσουµε %.2lf - Το αρχείο πρέπει να λέγεται επώνυµο_όνοµα_κτλ κι όχι όνοµα_επώνυµο_κτλ. - Το πρόγραµµα πέφτει σε ατέρµονο loop γιατί έχεις κάνει λάθος στη συνθήκη του do-while. Η έκφραση choice!=5 choice!=6 είναι πάντα αληθής. Έπρεπε να είχες χρησιµοποιήσει && αντί για - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι σταθερές - Δεν υπάρχουν σχόλια προγράµµατος - Καλή στοίχιση - Σε τέτοιες περιπτώσεις είναι πιο κατάλληλη η χρήση της switch απο την if. - Οι δεκαδικοί δηλώνονται µε double. - Οι τιµές των αναψυκτικών και του νερού θα έπρεπε να δηλωθούν ως σταθερές. - Καλό θα ήταν να µάθεις το ΑΕΜ σου. - Να διαβάζεις καλύτερα την εκφώνηση. Τι κάνει το πρόγραµµα σου σε περίπτωση λάθος επιλογής; - Θα ήταν καλύτερα αν χρησιµοποιούσες την switch. - Κακή στοίχιση. - Μη επαρκή σχόλια. - Δεν κάνει compile Page 10
1327 1328 1329 - Δεν παραδόθηκε άσκηση 1330 1331 1332 1333 1334 Οριακά () Οριακά - Σε τέτοιες περιπτώσεις είναι πιο κατάλληλη η χρήση της switch και όχι η if. - Να αλλάζεις πάντα γραµµή όταν εµφανίζεις ένα µήνυµα στην οθόνη. - Οι τιµές των αναψυκτικών και του νερού θα έπρεπε να δηλωθούν ως σταθερές. - Στις µεταβλητές δίνουµε ονόµατα που να δείχνουν τι αντιπροσωπεύουν. Το ANAPSIKTIKO είναι πολύ καλύτερο από το ΑΝΑ. - Να διαβάζεις καλύτερα την εκφώνηση. Σε περίπτωση λάθους επιλογής το πρόγραµµα σου τερµατίζει (λόγω λανθασµένης συνθήκης στο while). - Θα ήταν καλύτερα αν χρησιµοποιούσες την switch. -Για τις επιλογές εκτός ορίων χρησιµοποιείς µια while που δεν τερµατίζει ποτέ. Δεν έτρεξες το πρόγραµµά σου για όλες τις περιπτώσεις. - Να δοκιµάζεις όλες τις περιπτώσεις και να προσέχεις την αποτίµηση των εκφράσεων που χρησιµοποιείς. -Η διεπαφή µε το χρήστη δεν είναι τόσο καλή και επιπλέον η µορφή του κωδικά σου δεν είναι καλή. - Το πρόγραµµα δεν κάνει compile - Να διαβάζεις καλύτερα την εκφώνηση. Τι κάνει το πρόγραµµα σου στην είσοδο 1-5 1 3 5 ;; - Δεν χρησιµοποίησες σταθερές. - Δεν έβαλες αρκετά σχόλια. - Σε 3 διαφορετικά ifs έχεις τον ίδιο ακριβώς κώδικα. - Θα ήταν καλύτερα αν χρησιµοποιούσες την switch. - Δεν µορφοποίησες σωστά την έξοδο. - Το πρόγραµµα δε λειτουργεί σωστά και απέχει αρκετά από το να λειτουργήσει. - Ο κώδικας για να είναι πιο ευανάγνωστος έπρεπε να είναι πιο συστηµατικά στοιχισµένος και να µην έχει κενή κάθε δεύτερη γραµµή. - Σίγουρα δεν χρειάζεται εκτύπωση του µενού σε τρία διαφορετικά σηµεία µέσα στον κώδικα, έπρεπε να Γίνεται το πολύ δύο φορές µέσα σε κατάλληλα σχεδιασµένους βρόχους. - Πουθενά στον κώδικα δε φαίνονται να υπάρχουν οι τιµές των αναψυκτικών (0.60, 1). - Η scanf() διαβάζει µια µεταβλητή τύπου char, αλλά η σύγκριση µετά γίνεται µε τύπο int. Θα έπρεπε είτε να Διαβάζει char και να το συγκρίνει π.χ. Με το χαρακτήρα '1', είτε να διαβάζει int και να το συγκρίνει µε το 1. Ίσως Γι αυτό το αποτέλεσµα είναι πάντα invalid selection. - Σε τέτοιες περιπτώσεις είναι πιο κατάλληλη η χρήση της switch απο την if. - Οι τιµές των αναψυκτικών και του νερού θα έπρεπε να δηλωθούν ως σταθερές. - Για να έχουµε ακρίβεια δύο δεκαδικών ψηφίων θα πρέπει να έχει %.2lf και όχι %lf. - Η κάθε εντολή να έχει την δική της σειρά. Κάθε φορά που κλείνεις άγκιστρο να αλλάζεις γραµµή (εκτός από το do-while) Page 11
1336 1337 1338 1339 1341 1342 1345 1346 Οριακά - Να χρησιµοποιείς µόνο tab για στοίχιση για να γίνεται οµοιόµορφα. - Να δηλώνεις τις δεκαδικές µεταβλητές ως double. - Το subtotal που εκτυπώνεται µετά από κάθε επιλογή έπρεπε να είναι το οφειλόµενο ποσό µέχρι εκείνη τη στιγµή και όχι η τιµή του ενός αναψυκτικού/νερού - Καλή προσπάθεια συµµόρφωσης µε τις προδιαγραφές µορφοποίησης της εξόδου. - Διάβασε το φυλλάδιο για το σχολιασµό, που βρίσκεται στη σελίδα του εργαστηρίου για να δεις πώς πρέπει να γράφονται αποτελεσµατικά σχόλια - δε χρειάζεται να γράφεις πολλά σχόλια όταν δε δίνουν κάποια πληροφορία που δεν είναι ήδη προφανής από τον κώδικα. - Σε τέτοιες περιπτώσεις η χρήση της switch είναι πιο κατάλληλη από την if. - Οι τιµές των αναψυκτικών και του νερού θα έπρεπε να δηλωθούν ως µεταβλητές. -Γενικά καλή δουλειά. - Για να κάνεις την πράξη χρησιµοποιείς δύο µεταβλητές, είναι περιττό και σίγουρα αν το πρόγραµµα είναι µεγαλύτερο θα σε µπέρδευε. - Το πρόγραµµα δεν εκτυπώνει το µήνυµα invalid selection. Το γιατί οφείλεται στο γεγονός ότι άλλο πράγµα η δοµή if( ){} else if( ){}... {} else{} και άλλο πράγµα κάθε if ξεχωριστά.. Έτσι όπως το έχεις γράψει το else ανήκει στην τελευταία if. - Οι σταθερές δηλώνονται µε κεφαλαία. - Θα ήταν καλύτερα να χρησιµοποιούσες την switch. - Καλό θα ήταν να έβαζες περισσότερα σχόλια. - Να κάνεις πάντα ένα τελικό compile και εκτέλεση του προγράµµατος πριν το στείλεις. Είχες προσθέσει µια τελεία η οποία είχε ως αποτέλεσµα να µην κάνει compile ο κώδικας που παρέδωσες. - Καλή στοίχιση - Γενικά καλή δουλειά στη µορφοποίηση της εξόδου - Οι τιµές των αναψυκτικών και του νερού θα έπρεπε να είναι δηλωµένες σαν σταθερές. - Σε τέτοιες περιπτώσεις είναι πιο κατάλληλη η χρήση της switch και οχι της if. - Για να έχουµε ακρίβεια δύο δεκαδικών ψηφίων γράφουµε %.2lf. - Αν επιλέξω αριθµό εκτός των ορίων 1-6 τότε αντί για 'Invalid Selection' εµφανίζει 'Canceled' και τερµατίζει το πρόγραµµα. - Προσοχή µε τη στοίχιση του κώδικα. - Η else που χρησιµοποείς δε χρειάζεται. Αν ήθελες να το κάνεις έτσι η δοµή του κώδικά σου έπρεπε να ήτα if( ){}else if(){}...else if(){}else{}. - Δοκίµασες να το κάνεις και µε switch - case. - Το summary δεν είναι και πολύ καλό. Αν το ονόµαζες total θα καταλάµβαινες πιο εύκολα τι είναι. - Η συνθήκη στο while δεν γίνεται ποτέ ψευδής αφού στις επιλογές 5 και 6 κάνεις return 1 - Αρκετά καλό. Page 12
1347 1353 1354 1355 1358 1361 1362 1364 - Το πρόγραµµα λειτουργεί σχεδόν ακριβώς όπως θα έπρεπε. (σχεδόν, γιατί δεν τυπώνει ποτέ το subtotal). - Ο κώδικας είναι απλός και ευανάγνωστος. Είναι κοµψή λύση ότι το µενού τυπώνεται και η επιλογή του χρήστη διαβάζεται µόνο µια φοράµέσα στον κώδικα. - Η συνθήκη while(!(epilogh<1 && epilogh > 6)); δεν είναι πάντα αληθής; Ισοδύναµα, while(1). - Το πρόγραµµα λειτουργεί σωστά εκτός από την εκτύπωση του Total. Βλέπε την εκτύπωση του subtotal, που είναι η σωστή, αλλά µετά την εκτύπωση του subtotal χρειάζεται χαρακτήρας νέα γραµµής. - Είναι σωστή η χρήση της switch case και είναι κοµψή λύση το ότι το µενού εκτυπώνεται µόνο µια φορά. - Ο κώδικας είναι ευανάγνωστος επειδή είναι απλούστατος. - Συνιστάται να χρησιµοποιούµε σταθερές για τις τιµές των αναψυκτικών, αντί για αριθµούς όπως 0.60 και 1.0. - Καλή δουλειά µε τη µορφοποίηση της εξόδου - υπήρχε µόνο ένα τυπογραφικό στη λέξη Dasani - Το πρόγραµµά σου τερµατίζει αν δοθεί λάθος επιλογή, ενώ σύµφωνα µε τις προδιαγραφές έπρεπε να επαναλαµβάνει την ερώτηση. Το λάθος βρίσκεται στη λογική του προγράµµατος. - Λάθος στη δηµιουργία του tgz - Δεν κάνει compile, να ζητάς βοήθεια! - Η µορφοποίηση της εξόδου δεν ακολουθεί τις προδιαγραφές : έπρεπε να υπάρχει κενή γραµµή µετά το τελευταίο printf, το subtotal έπρεπε να εκτυπώνεται µε δύο δεκαδικά, και η πρώτη επιλογή του µενού έπρεπε να εµφανίζεται σε νέα γραµµή. - Να χρησιµοποιείς double για δεκαδικές µεταβλητές - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι δηλωµένες ως σταθερές. - Το loop do{ subtotal=subtotal+0.6; printf("subtotal:%f euros",subtotal); }while(subtotal<0); γιατί υπάρχει? To subtotal είναι αρχικά 0, και µέσα στο loop του προσθέτεις κάτι. Δεν υπάρχει περίπτωση να έχει ποτέ αρνητική τιµή. - Σου έχει ξεφύγει η στοίχιση σε κάποια σηµεία. Κάθε φορά που ανοίγεις καινούργιο άγκιστρο, η επόµενη εντολή πρέπει να είναι σε νέα γραµµή, και ένα tab πιο µέσα από την προηγούµενη. Το άγκιστρο που κλείνει ( } ) πρέπει να βρίσκεται πάντα σε νέα γραµµή. -Καλή προσπάθεια. - Σου έχει ξεφύγει µια printf έξω από µια if µε αποτέλεσµα να υπάρχει λάθος διεπαφή µε το χρήστη, γραµµή 49. Να δοκιµάζεις τον κώδικά σου πριν τον παραδώσεις. - Δοκίµασε να κάνεις την υλοποίηση µε τη switch - case. - Δεν υπάρχει πουθενά επανάληψη. - Κακή στοίχιση - Λάθος τύποι µεταβλητών Page 13
9999 9999 temp1 temp10 - Δεν παραδόθηκε άσκηση temp11 temp12 temp13 temp15 - Να κάνεις πάντα ένα τελικό compile και εκτέλεση του προγράµµατος πριν το στείλεις. Τα σχόλια που είχες προσθέσει ήταν γραµµένα λάθος µε αποτέλεσµα να µην κάνει compile ο κώδικας που παρέδωσες. - Τα σχόλιά σου δεν είναι πολύ αποτελεσµατικά. Περιγράφουν πράγµατα που είναι προφανή από τον κώδικα. Διάβασε το φυλλάδιο σχολιασµού (στη σελίδα του εργαστηρίου). Επίσης χρειάζονται πάντα σχόλια προγράµµατος. - Κακή στοίχιση. Κάθε φορά που ανοίγεις άγκιστρο, η επόµενη εντολή πρέπει να είναι σε νέα γραµµή και ένα tab πιο µέσα από την προηγούµενη. - Μη βάζεις περισσότερες από µία εντολή σε µια γραµµή - Είναι καλύτερα να χρησιµοποιείς double αντί για float, για µεγαλύτερη ακρίβεια στους υπολογισµούς - Να χρησιµοποιείς µόνο tab για στοίχιση για να γίνεται οµοιόµορφα. Κάθε φορά που ανοίγεις καινούργιο άγκιστρο, η επόµενη εντολή πρέπει να είναι σε νέα γραµµή, και ένα tab πιο µέσα από την προηγούµενη. - Χρησιµοποιείς return 0 σε λάθος σηµείο µε αποτέλεσµα το πρόγραµµά σου να τερµατίζει πρόωρα. - Η άσκηση δε διορθώθηκε γιατί δεν είχε σταλεί µε το σωστό format (για δεύτερη φορά) -Δεν έχεις καθόλου σωστή στοίχιση - Οι τιµές έπρεπε να έχουν δηλωθεί ως σταθερές - Χρησιµοποιείς άεναο loop και είναι µάλλον βέβαιο ότι θα κολλήσει - Η else που χρησιµοποιείς δε χρειάζεται, θα ήταν χρήσιµη αν χρησιµοποιούσες τη δοµή if µε διαφορετική σύνταξη: if(){} else if(){}...else if(){} else{}. - Να ζητάς βοήθεια!!! - Εξαιρετική δουλειά στη µορφοποίηση της εξόδου, µπράβο! Πρόσεχε µόνο λίγο τα τυπογραφικά (το σωστό είναι "invalid" ενώ είχες γράψει "invalved" - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι σταθερές - Τις περιπτώσεις των αναψυκτικών που έχουν ίδια τιµή έπρεπε να τις είχες οµαδοποιήσει σε ένα if. Γενικά όταν βλέπεις να επαναλαµβάνεις κώδικα, τότε σχεδόν πάντα υπάρχει καλύτερος τρόπος να το γράψεις. - Αυτή η άσκηση ήταν καλός υποψήφιος για χρήση switch αντί για if. - Πολύ καλή στοίχιση - Η συνθήκη του do-while είναι λάθος. Η έκφραση (number!= 6 number!= 5) είναι πάντα αληθής -Πολύ καλή προσπάθεια. Δοκίµασε να το κάνεις και µε switch - case. - Στο invalid selection έπρεπε να είχες βάλει και τον τελεστή αλλαγής γραµµής, να δοκιµάζεις το πρόγραµµά σου πριν το παραδώσεις. Page 14
temp16 temp18 - Δεν παραδόθηκε άσκηση temp19 temp2 temp20 temp21 temp22 Οριακά - Να κάνεις πάντα έλεγχο των αποτελεσµάτων του προγράµµατός σου - Σηµαντικά λάθη στη σύνταξη της printf - Λογικό λάθος: Το πρόγραµµα δε µπαίνει ποτέ στην πρώτη if γιατί η έκφραση ( epilogh<=1 && epilogh>=6) είναι πάντα ψευδής. - Λογικό λάθος: Αν το παραπάνω λάθος διορθωθεί, τότε το πρόγραµµα θα τυπώνει "invalid selection" για όλες τις επιλογές - Το πρόγραµµα λειτουργεί ακριβώς όπως ορίζουν οι προδιαγραφές. - Ο κώδικας είναι καθαρός και ευανάγνωστος. - Αλλά: αντί για if, είναι πιο κατάλληλη η χρήση switch σε αυτή την περίπτωση. - Το όνοµα του tgz αρχείου ήταν τελείως λάθος. Στο µέλλον να ακολουθείς τις οδηγίες. - Το πρόγραµµα δεν κάνει compile. - Το πρόγραµµα λειτουργεί γενικά σωστά. Χρειάζεται εκτύπωση χαρακτήρα νέας γραµµής µετά τα "invalid Selection και total, τα %.2lf µέσα στην printf δεν πρέπει να είναι ανάµεσα σε κόµµατα, γιατί αυτά εκτυπώνονται στην οθόνη (ανεπιθύµητα) και πρέπει το subtotal να εκτυπώνεται µε ακρίβεια δύο δεκαδικών ψηφίων. - Ο κώδικας είναι ευανάγνωστος και καλά στοιχισµένος, αλλά δεν έχει κανένα σχόλιο, και έχει µερικές Αχρείαστες κενές γραµµές. - **Υπάρχει κάποια διαφορά ανάµεσα στα return 1; και return 0;? Συνήθως η επιστρεφόµενη τιµή ενός Προγράµµατος που τερµατίζει κανονικά είναι µηδέν και µη µηδενική σε περίπτωση σφάλµατος. Στο πρόγραµµά σου, η εντολή return 0; φαίνεται ότι δεν εκτελείται ποτέ (ό,τι τιµή κι αν έχει η Epilogi). - Αν ο χρήστης δώσει µη έγκυρη επιλογή, όχι την πρώτη φορά, αλλά κάποια επόµενη, το πρόγραµµα τερµατίζει απροσδόκητα. Εποµένως ο βρόχος do while που ελέγχει την εγκυρότητα έπρεπε να είναι φωλιασµένος µέσα στον άλλο βρόχο. - Συνιστάται να χρησιµοποιούµε σταθερές για τις τιµές των αναψυκτικών, αντί για αριθµούς όπως 0.60 και 1.0. - Το email δεν είχε θέµα. Στο µέλλον να ακολουθείς ακριβώς τις οδηγίες. -Το πρόγραµµα λειτουργεί σχεδόν όπως πρέπει. Με την προϋπόθεση ότι θα σβηστεί το κενό µέσα στο %d της scanf(), και θα γίνει %d, γιατί αλλιώς περιµένει να διαβάσει και κάτι άλλο από το πληκτρολόγιο. Επίσης ξεχνάς να εκτυπώσεις χαρακτήρα νέας γραµµής µετά τα subtotal, total, invalid selection. - Είναι σωστή η χρήση της switch case και είναι κοµψή λύση το ότι το µενού εκτυπώνεται µόνο µια φορά. - Ο κώδικας είναι ευανάγνωστος επειδή είναι απλούστατος. - Συνιστάται να χρησιµοποιούµε σταθερές για τις τιµές των αναψυκτικών, αντί για αριθµούς όπως 0.60 και 1.0. Page 15
temp23 temp25 Αντιγραφή temp26 temp27 - Δεν παραδόθηκε άσκηση temp28 temp29 temp3 temp30 temp31 temp33 temp34 Οριακά - Το email δεν είχε θέµα. Στο µέλλον να ακολουθείς ακριβώς τις οδηγίες - Μη βάζεις περισσότερες από µία εντολή ανά γραµµή - Οι τιµές έπρεπε να είναι σταθερές - Ατέρµονη επανάληψη γιατί η συνθήκη του while είναι πάντα αληθείς. Να τρέχεις ΠΑΝΤΑ το πρόγραµµά σου και να ελέγχεις αν λειτουργεί σωστά - Το πρόγραµµα δε δουλεύει όπως θα έπρεπε. Για να γίνει αυτό πρέπει η synolo = 0; να µεταφερθεί πριν, έξω, από τον do - while βρόχο και η τελική συνθήκη να γίνει while (epilogh!=6 && epilogh!=5);. Δεν συµµορφώνεσαι ακριβώς µε τις προδιαγραφές, π.χ. έπρεπε να τυπώνονται µόνο δύο δεκαδικά ψηφία. οριακότατο pass. - Ο κώδικας είναι σχετικά ευανάγνωστος και είναι σωστή η χρήση της switch -case. - Δεν έβαλες σχόλια. - Σταθερές µε κεφαλαία γράµµατα. - Πολύ καλή δουλειά. - Να αλλάζει πάντα σειρά όταν εµφανίζεται κάποιο µήνυµα στην οθόνη. - Σε τέτοιες περιπτώσεις είναι πιο κατάλληλη η χρήση της switch απο την if. - Άσχηµη στοίχιση - Οι τιµές των αναψυκτικών και του νερού θα έπρεπε να δηλωθούν ως σταθερές. - Είχες λάθος θέµα και λάθος διεύθυνση email. Στο µέλλον να ακολουθείς τις οδηγίες - Το πρόγραµµα δεν έκανε compile γιατί έλλειπε ένα }. Αν είχες καλή στοίχιση, θα το είχες βρει πολύ εύκολα. - Μηδενίζεις το sum σε κάθε επανάληψη του loop και ως αποτέλεσµα το σύνολο βγαίνει πάντα λάθος. - Χρησιµοποιείς == αντί για =. Να µην αγνοείς τα warnings του compiler. - Η εντολή return 0; τερµατίζει το πρόγραµµα, οπότε εντολές που την ακολουθούν (πχ το scanf που έχεις βάλει) δεν πρόκειται να εκτελεστούν ποτέ. - Πολύ καλή δουλειά. - Το αρχείο πρέπει να λέγεται επώνυµο_όνοµα_κτλ κι όχι όνοµα_επώνυµο_κτλ. - Δεν χρησιµοποίησες καθόλου σταθερές. - Θα ήταν καλύτερα να χρησιµοποιούσες την switch. - Δεν κάνει compile Page 16
temp35 temp36 temp39 temp4 temp40 temp41 temp42 temp43 Οριακά - Στα define είναι καλό να διαχωρίζεις τις λέξεις µε _ για να µπορείς να τις διαβάζεις. π.χ. PRICE_DIET_COKE αντί για PRICEDIETCOKE - Να διαβάζεις καλύτερα την εκφώνηση. Τι κάνει το πρόγραµµα σου σε περίπτωση λάθος επιλογής; - Σε κάθε case βάζουµε break αν δεν θέλουµε να εκτελεστούν τα υπόλοιπα cases. - Γιατί τόσα sum;; Χρειάζεσαι µόνο µια µεταβλητή. - Λάθος αποτελέσµατα. - To 1.Coke έπρεπε να εµφανίζεται σε νέα γραµµή - Η συνθήκη του do-while έπρεπε να έχει && κι όχι - Οι τιµές έπρεπε να είναι σταθερές. -Η διεπαφή µε το χρήστη θα µπορούσε να ήταν πολύ καλυτερη. Να τρέχεις το πρόγραµµά σου και στη συνέχεια να κάνεις τις απαραίτητες διορθώσεις. -Όταν πατάς το 6 το πρόγραµµα δεν τερµατίζει. Με τον τρόπο που έχεις κάνει την εκτέλεση σου λείπει κάτι απλό. Κοιταξέ το. - Οι τιµές έπρεπε να έχουν δηλωθεί ως σταθερές -Η δόµηση του κώδικα είναι απαράδεκτη.να γράφεις σωστά. Είναι βασικό για να µπορείς να διορθώνεις και να καταλαβαίνεις τί κάνει το πρόγραµµά σου. - Η άσκηση πρέπει να αποστέλλεται στο ce120lab@gmail.com - Σου έχει ξεφύγει η στοίχιση σε κάποια σηµεία. Κάθε φορά που ανοίγεις καινούργιο άγκιστρο, η επόµενη εντολή πρέπει να είναι σε νέα γραµµή, και ένα tab πιο µέσα από την προηγούµενη. Το άγκιστρο που κλείνει ( } ) πρέπει να βρίσκεται πάντα σε νέα γραµµή. - Το πρόγραµµα πέφτει σε endless loop στην επιλογή 5. Πρέπει όταν γράφεις ένα loop να προσέχεις ώστε η έκφραση/µεταβλητή που ελέγχει τη συνθήκη να αλλάζει εντός του loop. - Η συνθήκη του do-while είναι λάθος. Η έκφραση epilogi<1&&epilogi>6 δε µπορεί να είναι ποτέ αληθής. -Στο choice == 5 έπρεπε να χρησιµοποιήσεις break και όχι continue. - Δοκίµασε να το λύσεις και µε τη switch - case. - Καλή δουλειά -Καλή προσπάθεια. - Να προσέχεις τη µορφή του κώδικά σου. Κάθε φορά που ανοίγουµε καινούρια {} πάµε ένα επίπεδο µέσα. - Δοκίµασε να κάνεις την υλοποίηση µε τη switch - case. - Ο έλεγχος για το invalid selection έπρεπε να είχε όχι && που χρησιµοποιείς εσύ, να κάνεις την αποτίµηση για να βρίσκεις το αποτέλεσµα και να το ελέγχεις. - Οι τιµές έπρεπε να έχουν δηλωθεί ως σταθερές - Δεν εκτυπώνεις µε δύο δεκαδικά ψηφία, έπρεπε να χρησιµοποιήσεις το %.2f. Να ζητάς βοήθεια. - Όταν δηµιουργείς το φάκελο επώνυµο_όνοµα_κτλ παρακαλώ µη βάζεις κενά στο όνοµα του φακέλου. Να χρησιµοποιείς κάτω παύλα για να ξεχωρίζεις τις λέξεις. - Το πρόγραµµα δεν κάνει compile Page 17
temp44 temp45 Αντιγραφή temp46 temp5 temp6 temp7 temp8 temp9 - Οι τιµές των αναψυκτικών και του νερού θα έπρεπε να δηλωθούν ως σταθερές. - Οι δεκαδικοί δηλώνονται ως double. - Στην αρχή του προγράµµατος έχεις: subsum=subsum+price; sum=subsum+price; και δεν χρησιµεύει σε κάτι εφόσον το έχεις µηδενίσει ακριβώς πριν και δεν βρίσκεται µέσα σε κάποια εντολή επανάληψης. - Να χρησιµοποιείς περιγραφικές µεταβλητές και όχι απλά i. - Κάθε εντολή να έχει τη δική της σειρά (break, return). - Λάθος στο attachment - Η έξοδος του προγράµµατος δεν ακολουθεί ακριβώς τις προδιαγραφές. Πρόσεχε τα τυπογραφικά λάθη. - Η έξοδος του προγράµµατός σου δεν είναι σύµφωνη µε τις προδιαγραφές. Έπρεπε κάθε επιλογή στο µενού να είναι σε νέα γραµµή. - Το πρόγραµµά σου δεν εκτυπώνει σωστά το subtotal - Οι τιµές των αναψυκτικών/νερού έπρεπε να είναι δηλωµένα ως σταθερές. - Μην περικλείεις τις εντολές σε παρενθέσεις όταν δεν υπάρχει λόγος: (Total = Total + 1.00); - Το άγκιστρο που κλείνει κάθε else πρέπει να είναι στην ίδια στήλη που ξεκινά το else. - Η συνθήκη του do-while είναι λάθος. Η έκφραση number!= 5 number!= 6 είναι πάντα αληθής. - Το πρόγραµµα δεν ακολουθεί τις προδιαγραφές ακριβώς. Το µενού έπρεπε να εκτυπώνεται σε κάθε επανάληψη. - Να είσαι συνεπής στους κανόνες στοίχισης που ακολουθείς: Κάθε φορά που ανοίγεις {, η επόµενη εντολή πρέπει να γράφεται στην παρακάτω γραµµή. - Καλή δουλειά κατά τα άλλα - Είχες βάλει λάθος θέµα στο email. Στο µέλλον να ακολουθείς τις οδηγίες. - Το πρόγραµµα δεν κάνει compile - Καλή στοίχιση - Πολύ καλή δουλειά στη µορφοποίηση της εξόδου Page 18