ΑΕΜ ΒΑΘΜΟΣ 449 PASS 451 PASS 476-1733 PASS 1779-1899 FAIL 1900 FAIL Page 1
1901 PASS 1904 PASS 1908 PASS 1909 PASS 1910 - Page 2
1911 PASS 1914 Οριακό PASS 1915 PASS 1926 PASS Page 3
1927 PASS 1928 Οριακό PASS 1931 PASS 1932 PASS 1934-1946 - 1947 - Page 4
1949 PASS 1950 PASS 1959-1960 - 1962-1964 PASS Page 5
1965 PASS 1973 PASS 1975 PASS 1980 PASS 1983-1984 - 1985 - Page 6
1986 PASS 1988 PASS 1992 PASS 1994 - Page 7
1996 PASS 2001 PASS 2007-2010 PASS Page 8
2012 PASS 2013 PASS 2017-2020 PASS 2026-2028 PASS Page 9
2029 PASS 2030 PASS 2031 PASS 2033-2034 PASS Page 10
2036 PASS 2041 PASS 2045-2046 PASS 2047 PASS 2048 - Page 11
2052 PASS 2054-2055 - 2056-2060 PASS 2062 PASS Page 12
2071 PASS 2074-2075 PASS 2076 PASS Page 13
2084 PASS 2088 PASS 2089 PASS Page 14
ΣΧΟΛΙΑ - Καλή δουλειά! - Σωστή στοίχιση και ονόµατα µεταβλητών. Δεν εστάλη άσκηση Δεν εστάλη άσκηση lab13grades - Καλή δουλειά - Σωστή υλοποίηση της bin2dec αλλά έχετε ένα µικρό bug. Ελέγχετε if( str[0] == 0) κάτι που θα είναι πάντα false στην συγκεκριµένη άσκηση. Είναι σαν να ελέγχετε εάν θα δοθεί ποτέ ο χαρακτήρας µε ascii 0. To σωστό είναι if( str[0] == '0'). - Καλή δουλειά! - Σωστή στοίχιση και ονόµατα µεταβλητών. - Καλή δουλειά - Σωστή υλοποίηση της bin2dec αλλά έχετε ένα µικρό bug. Ελέγχετε if( str[0] == 0) κάτι που θα είναι πάντα false στην συγκεκριµένη άσκηση. Είναι σαν να ελέγχετε εάν θα δοθεί ποτέ ο χαρακτήρας µε ascii 0. To σωστό είναι if( str[0] == '0'). : -Καλή στοίχιση -Σωστή χρήση srand/rand -Σωστή αναδροµή -Σωστό αποτέλεσµα -Σωστά χρησιµοποιείται η define για τον ορισµό του µεγέθους : -Καλή στοίχιση -Σωστά χρησιµοποιείτε argv για την είσοδο στο πρόγραµµα -Δεν κάνετε έλεγχο της argc όµως -Το πρόγραµµα αν δώσεις τα σωστά ορίσµατα δουλεύει σωστά -Σωστά χρησιµοποιείται η αναδροµή -Αν µπορείτε λύστε την για εξάσκηση χωρίς την χρήση της pow(), µε τον τρόπο που είδατε στο εργασ Page 15
-Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα -Ένα λάθος που είχατε είναι ότι δεν εκτυπώσατε όλα τα στοιχεία του πίνακα αλλά µόνο το max. Έτσι δεν µπορούµε να καταλάβουµε αν είναι πραγµατικά το µεγαλύτερο στοιχείο του πίνακα παρά µόνο αν κοιτάξουµε ότι είναι σωστός ο κώδικας. ' -Η είσοδος που διαβάζετε από τη γραµµή εντολών είναι αποθηκευµένη στον πίνακα argv[] ο οποίος είναι τύπου char* και όχι τύπου int. αυτό σηµαίνει ότι η καταχώρηση num = *argv[1] δεν είναι σωστή καθώς παίρνει σαν τιµή τον αριθµό που αντιστοιχεί στο πρώτο γράµµα της εισόδου. Πρέπει λοιπόν να µετασχηµατίσετε τον αριθµό που παίρνετε σαν είσοδο σε µορφή κειµένου, σε µορφή αριθµού. Για να το κάνετε αυτό υπάρχουν πολλοί τρόποι όπως για παράδειγµα να χρησιµοποιήσετε την συνάρτηση atoi ή sscanf. Να κάνετε οπωσδήποτε αυτή την αλλαγή καθώς αποτελεί πολύ σηµαντικό κοµµάτι του προγραµµατισµού και της άσκησης. -Αν γίνει η παραπάνω αλλαγή τότε κάποια από τα αποτελέσµατα είναι σωστά και έχουν να κάνουν µε την είσοδο που δίνει ο χρήστης. Προσπαθήστε να διορθώσετε τη λύση σας έτσι ώστε να λειτουργεί για όλες τις εισόδους του χρήστη. -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Σωστή η αναδροµή. -Αρκετά περίπλοκη αλλά σωστή η µετατροπή του αριθµού που δίνεται σαν string σε int που χρειάζεστε εσείς για το πρόγραµµά σας. Υπάρχουν τουλάχιστον 2 συναρτήσεις που παρέχονται από διάφορες βιβλιοθήκες για να κάνετε αυτή τη µετατροπή! Μπορείτε να βρείτε κάποια από αυτές και να τις προσαρµόσετε στη λύση σας; -Σωστό αποτέλεσµα. -Θα µπορούσατε να ελέγξετε αν ο χρήστης δίνει κάποια είσοδο πριν πάτε να διαβάσετε από την γραµµή εντολών και έτσι να σκάσει το πρόγραµµά σας σε περίπτωση που ο χρήστης δεν δίνει είσοδο - Ορθή στοίχιση. - Ορθά σχόλια. - Ορθή χρήση srand()/rand(). - Σωστή αναδροµή. Το πρόγραµµα λειτουργεί σωστά για διαφορετικά µεγέθη του πίνακα. - Καλή στοίχιση και ονόµατα µεταβλητών. - Ελλιπής υλοποίηση, µε warnings του compiler. - Προσπαθήστε να λύσετε την άσκηση για εξάσκηση. Page 16
- Καλή στοίχιση και ονόµατα µεταβλητών. - Καλή δουλειά. lab13grades - Σωστή στοίχιση και ονόµατα µεταβλητών. - Στον έλεγχο της µεταβλητής argc το σωστό θα ήταν να ελέγχετε για ισότητα µε το 2 µόνο. - Σωστή αναδροµή. - Καλή δουλειά. - Ορθή στοίχιση. - Ορθά σχόλια. - Ορθή χρήση srand()/rand(). - Εν µέρη σωστή αναδροµή. Εάν προσθέσω στην γραµµή 22 τον παρακάτω κώδικα if(i==0) randomnumbers[0] = 9999999; τότε το πρόγραµµα σας δεν πιάνει αυτό το µεγάλο νούµερο ως µέγιστο, αλλά το αµέσως επόµενο. Αυτό συµβαίνει διότι είσοδο της αναδροµή βάζετε στο 2ο όρισµα ++index αντί για index+1, µε αποτέλεσµα να αγνοείτε την µηδενική θέση του πίνακα. -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Το πρόγραµµα έχει error κατά το compilation καθώς δεν έχετε δηλώσει µια µεταβλητή. - Εάν δηλωθεί η µεταβλητή το πρόγραµµα τρέχει σωστά!!! - Προσέχετε πριν στείλετε µια εργασία να είναι σε κατάσταση που να τρέχει! -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Δεν ελέγχεται το argc -Σωστή χρήση του argv Page 17
- Καλή δουλειά! - Σωστή στοίχιση και ονόµατα µεταβλητών. lab13grades - Καλή δουλειά! - Σωστή υλοποίηση της bin2dec - Σωστή χρήση της pow. Δοκιµάστε στο σπίτι να την λύσετε χρησιµοποιώντας τον δεύτερο τρόπο (µε τα αθροίσµατα) που δείξαµε στον πίνακα - Ορθή στοίχιση. - Ορθά σχόλια. - Ορθή χρήση srand()/rand(). - Εν µέρη σωστή αναδροµή. Εάν προσθέσω στην γραµµή 22 τον παρακάτω κώδικα if(i==0) randomnumbers[0] = 9999999; τότε το πρόγραµµα σας δεν πιάνει αυτό το µεγάλο νούµερο ως µέγιστο, αλλά το αµέσως επόµενο. Αυτό συµβαίνει διότι είσοδο της αναδροµή βάζετε στο 2ο όρισµα ++index αντί για index+1, µε αποτέλεσµα να αγνοείτε την µηδενική θέση του πίνακα. - Καλή στοίχιση και ονόµατα µεταβλητών. - Καλή στοίχιση και ονόµατα µεταβλητών. - Δεν ελέγχετε την τιµή του argc πριν την προσπέλαση του πίνακα argv[]. Εάν ο χρήστης δεν δώσει παράµετρο από την γραµµή εντολών, τότε το πρόγραµµα τερµατίζει µε segmentation fault λόγω προσπέλασης πίνακα εκτός ορίων. - Εάν η είσοδος είναι αρνητικός αριθµός, η συνάρτηση δεν υπολογίζει σωστά τη δυαδική αναπαράσταση. - Ορθή στοίχιση. - Ορθά σχόλια. - Ορθή χρήση srand()/rand(). - Σωστή αναδροµή. Το πρόγραµµα λειτουργεί σωστά για διαφορετικά µεγέθη του πίνακα. Page 18
: - στοίχιση: ΟΚ - ονόµατα µεταβλητών: ΟΚ - χρήση srand/rand: ΟΚ - ορθότητα αναδροµής: Σωστή είναι, αλλά δεν τη έχετε ορίσει ωραία. πχ το sum=0 δεν χρειαζόταν. Να σκέφτεστε πάντα δύο πράγµατα. Τι κάνετε αν ξέρετε την λύση ενός υποπροβλήµατος και τι κάνετε στην ακραία περίπτωση που το πρόβληµά σας είναι το ελάχιστο δυνατό. - ορθότητα προγράµµατος: ΟΚ : - στοίχιση: OK - ονόµατα µεταβλητών:ok - έλεγχος argc: Δεν γίνεται έλεγχος. - χρήση argv: OK - ορθότητα αναδροµής:ok - γενικά: δοκιµάστε να το κάνετε και µε την εξής αναδροµή, πχ για το 1010 = 0 + 2(1 +2(0 + 2(1))) - Καλή στοίχιση και ονόµατα µεταβλητών. - Καλή δουλειά. - Σωστή στοίχιση και ονόµατα µεταβλητών. - Σωστή χρήση argc/argv. - Δεν χρειαζόταν να αντιγράψετε το argv[1] στο number για να καλέσετε την atoi. - Σωστή αναδροµή. - Καλή δουλειά. - Καλή στοίχιση και ονόµατα µεταβλητών. - Καλή δουλειά. - Σωστή στοίχιση και ονόµατα µεταβλητών. - Στον έλεγχο της µεταβλητής argc το σωστό θα ήταν να ελέγχετε για ισότητα µε το 2 µόνο. - Σωστή αναδροµή. - Καλή δουλειά. Page 19
: -Καλή στοίχιση -Χρήση srand/rand: ΟΚ -Ορθότητα αναδροµής: Σωστή αναδροµή -Το µέγεθος του πίνακα αλλάζει από το define -To πρόγραµµα λειτουργεί σωστά lab13grades -: -Καλή στοίχιση -Το πρόγραµµα δεν χρησιµοποιεί τις argc και argv για να πάρει όρισµα. -Δεν τυπώνει κάποιο µήνυµα πριν την scanf -Δουλεύει σωστά -Χρησιµοποιεί αναδροµή σωστά : - στοίχιση: OK - ονόµατα µεταβλητών: OK - χρήση srand/rand: OK - ορθότητα αναδροµής: OK - ορθότητα προγράµµατος: OK : Δεν έγινε (το αρχείο lab13b.c είναι ίδιο µε το lab13a.c -Δεν έχετε καλά ονόµατα µεταβλητών -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Το πρόγραµµα έχει warnings -Δεν ελέγχεται το argc -Δεν υλοποιείται σωστά το πρόγραµµα : - στοίχιση: ένα κακό return 0 - ονόµατα µεταβλητών: µονογραµµατικά - χρήση srand/rand: ΟΚ - ορθότητα αναδροµής: ΟΚ - ορθότητα προγράµµατος: ΟΚ : - στοίχιση: OK - ονόµατα µεταβλητών: Μονογραµµατικά - έλεγχος argc: Δεν γίνεται - χρήση argv: Δεν γίνεται - ορθότητα αναδροµής: ΟΚ - γενικά: δοκιµάστε να το κάνετε και µε την εξής αναδροµή, πχ για το 1010 = 0 + 2(1 +2(0 + 2(1))). Επίσης η άσκηση έλεγε να δίνεται είσοδο από την *γραµµή εντολών* (argc, argv) Page 20
- Καλή στοίχιση και ονόµατα µεταβλητών. - Καλή στοίχιση και ονόµατα µεταβλητών. - Δεν ελέγχετε την τιµή του argc πριν την προσπέλαση του πίνακα argv[]. Εάν ο χρήστης δεν δώσει παράµετρο από την γραµµή εντολών, τότε το πρόγραµµα τερµατίζει µε segmentation fault λόγω προσπέλασης πίνακα εκτός ορίων. - Εάν η είσοδος είναι αρνητικός αριθµός, η συνάρτηση δεν υπολογίζει σωστά τη δυαδική αναπαράσταση. -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Σωστός ο έλεγχος του argc -Σωστή χρήση του argv -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Σωστή η αναδροµή. -Αρκετά περίπλοκη αλλά σωστή η µετατροπή του αριθµού που δίνεται σαν string σε int που χρειάζεστε εσείς για το πρόγραµµά σας. Υπάρχουν τουλάχιστον 2 συναρτήσεις που παρέχονται από διάφορες βιβλιοθήκες για να κάνετε αυτή τη µετατροπή! Μπορείτε να βρείτε κάποια από αυτές και να τις προσαρµόσετε στη λύση σας; -Σωστό αποτέλεσµα. -Θα µπορούσατε να ελέγξετε αν ο χρήστης δίνει κάποια είσοδο πριν πάτε να διαβάσετε από την γραµµή εντολών και έτσι να σκάσει το πρόγραµµά σας σε περίπτωση που ο χρήστης δεν δίνει είσοδο! Page 21
-Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Σωστός ο έλεγχος του argc -Σωστή χρήση του argv - Καλή δουλειά! - Σωστή στοίχιση και ονόµατα µεταβλητών. lab13grades - Προσέξτε λίγο την στοίχιση. - Σωστή υλοποίηση, αλλά χωρίς αναδροµή. Προσπαθήστε να λύσετε την άσκηση στο σπίτι. -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα -Ένα λάθος που είχατε είναι ότι δεν εκτυπώσατε όλα τα στοιχεία του πίνακα αλλά µόνο το max. Έτσι δεν µπορούµε να καταλάβουµε αν είναι πραγµατικά το µεγαλύτερο στοιχείο του πίνακα παρά µόνο αν κοιτάξουµε ότι είναι σωστός ο κώδικας. ' -Το πρόγραµµά σας έπρεπε να διαβάζει είσοδο από τη γραµµή εντολών όπως έλεγε η εκφώνηση το οποίο σηµαίνει ότι κατά την εκτέλεση δίπλα από το σηµείο που καλείτε το πρόγραµµά σας θα έπρεπε να βάλετε τον αριθµό εισόδου. Η προσπέλαση της εισόδου θα έπρεπε να γίνει µε τη χρήση του πίνακα argv[] ο οποίος περιέχει όλα τα στοιχεία που γράφονται στη γραµµή εντολών δίπλα από το εκτελέσιµο! -Η έξοδός σας είναι πολύ πρόχειρη καθώς δεν υπάρχει ούτε µία αλλαγή γραµµής ή κάποιο κενό µεταξύ των στοιχείων για να εµφανίζονται πιο ευδιάκριτα τα νούµερα. -Σωστό αποτέλεσµα! Page 22
-Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Δεν ελέγχεται το argc -Σωστή χρήση του argv -Δεν έχετε καλά ονόµατα µεταβλητών -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Το πρόγραµµα έχει warnings -Δεν ελέγχεται το argc -Δεν υλοποιείται σωστά το πρόγραµµα : - στοίχιση: OK - ονόµατα µεταβλητών: OK - χρήση srand/rand: OK - ορθότητα αναδροµής: OK - ορθότητα προγράµµατος: OK : Δεν έγινε (το αρχείο lab13b.c είναι ίδιο µε το lab13a.c - Καλή στοίχιση και ονόµατα µεταβλητών. - Καλή δουλειά. lab13grades - Σωστή στοίχιση και ονόµατα µεταβλητών. - Σωστή χρήση argc/argv. - Δεν χρειαζόταν να αντιγράψετε το argv[1] στο number για να καλέσετε την atoi. - Σωστή αναδροµή. - Καλή δουλειά. Page 23
: - στοίχιση: ΟΚ - ονόµατα µεταβλητών: ΟΚ - χρήση srand/rand: ΟΚ - ορθότητα αναδροµής: Σωστή είναι, αλλά δεν τη έχετε ορίσει ωραία. πχ το sum=0 δεν χρειαζόταν. Να σκέφτεστε πάντα δύο πράγµατα. Τι κάνετε αν ξέρετε την λύση ενός υποπροβλήµατος και τι κάνετε στην ακραία περίπτωση που το πρόβληµά σας είναι το ελάχιστο δυνατό. - ορθότητα προγράµµατος: ΟΚ : - στοίχιση: OK - ονόµατα µεταβλητών:ok - έλεγχος argc: Δεν γίνεται έλεγχος. - χρήση argv: OK - ορθότητα αναδροµής:ok - γενικά: δοκιµάστε να το κάνετε και µε την εξής αναδροµή, πχ για το 1010 = 0 + 2(1 +2(0 + 2(1))) - Καλή στοίχιση και ονόµατα µεταβλητών. - Εφόσον χρησιµοποιείτε unsigned int πίνακα θα έπρεπε και η συνάρτηση να επιστρέφει unsigned int, όπως επίσης και η µεταβλητή max θα έπρεπε να είναι τύπου unsigned int. Είναι πολύ κακή πρακτική να συγκρίνετε ανόµοια πράγµατα µεταξύ τους. - Σωστή στοίχιση και ονόµατα µεταβλητών. - Λάθος χρήση argc/argv, πρώτα πρέπει να ελέγξετε το argc και µετά να χρησιµοποιήσετε το argv. Αλλιώς µπορεί να οδηγηθεί το πρόγραµµα σε segmentation fault. - Σωστή αναδροµή. - Καλή δουλειά. : -Καλή στοίχιση -Χρήση srand/rand: ΟΚ -Ορθότητα αναδροµής: Σωστή αναδροµή -Το µέγεθος του πίνακα αλλάζει από το define -To πρόγραµµα λειτουργεί σωστά -: -Καλή στοίχιση -Το πρόγραµµα δεν χρησιµοποιεί τις argc και argv για να πάρει όρισµα. -Δεν τυπώνει κάποιο µήνυµα πριν την scanf -Δουλεύει σωστά -Χρησιµοποιεί αναδροµή σωστά - Ορθή στοίχιση. - Ορθά σχόλια. - Ορθή χρήση srand()/rand(). - Σωστή αναδροµή. Το πρόγραµµα λειτουργεί σωστά για διαφορετικά µεγέθη του πίνακα. Page 24
: - Καλή στοίχιση - Σωστή χρήση srand/rand - Χρησιµοποιεί σωστά αναδροµή - Το πρόγραµµα χρησιµοποιεί define για το µέγεθος του πίνακα - Το πρόγραµµα τρέχει σωστά : -Καλή στοίχιση -Το πρόγραµµα χρησιµοποιεί argc argv για το πρόγραµµα - Το πρόγραµµα κάνει σωστά έλεγχο για την ορθότητα των ορισµάτων -Το πρόγραµµα βγάζει σωστό αποτέλεσµα -Χρησιµοποιεί αναδροµή : -Καλή στοίχιση -Σωστή χρήση srand/rand -Σωστή αναδροµή -Σωστό αποτέλεσµα -Σωστά χρησιµοποιείται η define για τον ορισµό του µεγέθους : -Καλή στοίχιση -Σωστά χρησιµοποιείτε argv για την είσοδο στο πρόγραµµα -Δεν κάνετε έλεγχο της argc όµως -Το πρόγραµµα αν δώσεις τα σωστά ορίσµατα δουλεύει σωστά -Σωστά χρησιµοποιείται η αναδροµή -Αν µπορείτε λύστε την για εξάσκηση χωρίς την χρήση της pow(), µε τον τρόπο που είδατε στο εργαστήριο : - Καλή στοίχιση - Σωστή χρήση srand/rand - Χρησιµοποιεί σωστά αναδροµή - Το πρόγραµµα χρησιµοποιεί define για το µέγεθος του πίνακα - Το πρόγραµµα τρέχει σωστά : -Καλή στοίχιση -Το πρόγραµµα χρησιµοποιεί argc argv για το πρόγραµµα - Το πρόγραµµα κάνει σωστά έλεγχο για την ορθότητα των ορισµάτων -Το πρόγραµµα βγάζει σωστό αποτέλεσµα -Χρησιµοποιεί αναδροµή - Καλή δουλειά! - Σωστή στοίχιση και ονόµατα µεταβλητών. - Προσέξτε λίγο την στοίχιση. - Σωστή υλοποίηση, αλλά χωρίς αναδροµή. Προσπαθήστε να λύσετε την άσκηση στο σπίτι. Page 25
-Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα -Ένα λάθος που είχατε είναι ότι δεν εκτυπώσατε όλα τα στοιχεία του πίνακα αλλά µόνο το max. Έτσι δεν µπορούµε να καταλάβουµε αν είναι πραγµατικά το µεγαλύτερο στοιχείο του πίνακα παρά µόνο αν κοιτάξουµε ότι είναι σωστός ο κώδικας. ' -Το πρόγραµµά σας έπρεπε να διαβάζει είσοδο από τη γραµµή εντολών όπως έλεγε η εκφώνηση το οποίο σηµαίνει ότι κατά την εκτέλεση δίπλα από το σηµείο που καλείτε το πρόγραµµά σας θα έπρεπε να βάλετε τον αριθµό εισόδου. Η προσπέλαση της εισόδου θα έπρεπε να γίνει µε τη χρήση του πίνακα argv[] ο οποίος περιέχει όλα τα στοιχεία που γράφονται στη γραµµή εντολών δίπλα από το εκτελέσιµο! -Η έξοδός σας είναι πολύ πρόχειρη καθώς δεν υπάρχει ούτε µία αλλαγή γραµµής ή κάποιο κενό µεταξύ των στοιχείων για να εµφανίζονται πιο ευδιάκριτα τα νούµερα. -Σωστό αποτέλεσµα! : - στοίχιση: ένα κακό return 0 - ονόµατα µεταβλητών: µονογραµµατικά - χρήση srand/rand: ΟΚ - ορθότητα αναδροµής: ΟΚ - ορθότητα προγράµµατος: ΟΚ : - στοίχιση: OK - ονόµατα µεταβλητών: Μονογραµµατικά - έλεγχος argc: Δεν γίνεται - χρήση argv: Δεν γίνεται - ορθότητα αναδροµής: ΟΚ - γενικά: δοκιµάστε να το κάνετε και µε την εξής αναδροµή, πχ για το 1010 = 0 + 2(1 +2(0 + 2(1))). Επίσης η άσκηση έλεγε να δίνεται είσοδο από την *γραµµή εντολών* (argc, argv) - Ορθή στοίχιση. - Ορθά σχόλια. - Ορθή χρήση srand()/rand(). - Σωστή αναδροµή. Το πρόγραµµα λειτουργεί σωστά για διαφορετικά µεγέθη του πίνακα. Page 26
- Καλή δουλειά! - Σωστή στοίχιση και ονόµατα µεταβλητών. lab13grades - Καλή δουλειά! - Σωστή υλοποίηση της bin2dec - Σωστή χρήση της pow. Δοκιµάστε στο σπίτι να την λύσετε χρησιµοποιώντας τον δεύτερο τρόπο (µε τα αθροίσµατα) που δείξαµε στον πίνακα -Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα ' -Το πρόγραµµα έχει error κατά το compilation καθώς δεν έχετε δηλώσει µια µεταβλητή. - Εάν δηλωθεί η µεταβλητή το πρόγραµµα τρέχει σωστά!!! - Προσέχετε πριν στείλετε µια εργασία να είναι σε κατάσταση που να τρέχει! - Καλή στοίχιση και ονόµατα µεταβλητών. - Εφόσον χρησιµοποιείτε unsigned int πίνακα θα έπρεπε και η συνάρτηση να επιστρέφει unsigned int, όπως επίσης και η µεταβλητή max θα έπρεπε να είναι τύπου unsigned int. Είναι πολύ κακή πρακτική να συγκρίνετε ανόµοια πράγµατα µεταξύ τους. - Σωστή στοίχιση και ονόµατα µεταβλητών. - Λάθος χρήση argc/argv, πρώτα πρέπει να ελέγξετε το argc και µετά να χρησιµοποιήσετε το argv. Αλλιώς µπορεί να οδηγηθεί το πρόγραµµα σε segmentation fault. - Σωστή αναδροµή. - Καλή δουλειά. Page 27
-Σωστή χρήση του srand/rand -Σωστή υλοποίηση για οποιοδήποτε µέγεθος πίνακα -Ένα λάθος που είχατε είναι ότι δεν εκτυπώσατε όλα τα στοιχεία του πίνακα αλλά µόνο το max. Έτσι δεν µπορούµε να καταλάβουµε αν είναι πραγµατικά το µεγαλύτερο στοιχείο του πίνακα παρά µόνο αν κοιτάξουµε ότι είναι σωστός ο κώδικας. ' -Η είσοδος που διαβάζετε από τη γραµµή εντολών είναι αποθηκευµένη στον πίνακα argv[] ο οποίος είναι τύπου char* και όχι τύπου int. αυτό σηµαίνει ότι η καταχώρηση num = *argv[1] δεν είναι σωστή καθώς παίρνει σαν τιµή τον αριθµό που αντιστοιχεί στο πρώτο γράµµα της εισόδου. Πρέπει λοιπόν να µετασχηµατίσετε τον αριθµό που παίρνετε σαν είσοδο σε µορφή κειµένου, σε µορφή αριθµού. Για να το κάνετε αυτό υπάρχουν πολλοί τρόποι όπως για παράδειγµα να χρησιµοποιήσετε την συνάρτηση atoi ή sscanf. Να κάνετε οπωσδήποτε αυτή την αλλαγή καθώς αποτελεί πολύ σηµαντικό κοµµάτι του προγραµµατισµού και της άσκησης. -Αν γίνει η παραπάνω αλλαγή τότε κάποια από τα αποτελέσµατα είναι σωστά και έχουν να κάνουν µε - Καλή στοίχιση και ονόµατα µεταβλητών. - Ελλιπής υλοποίηση, µε warnings του compiler. - Προσπαθήστε να λύσετε την άσκηση για εξάσκηση. - Καλή στοίχιση και ονόµατα µεταβλητών. Ο έλεγχος για index == 0, είναι περιττός από την στιγµή που για index < N, εκτελείται το index++ και η ελάχιστη τιµή του είναι 0 (κατά την πρώτη κλήση της arraymax() από την main). - Ελλιπής υλοποίηση, µε warnings του compiler. - Προσπαθήστε να λύσετε την άσκηση για εξάσκηση. Page 28