lab10grades Άσκηση 2η: - Δεν κάνει compile: Δείτε την λύση και ξανα προσπαθήστε τα υπόλοιπα στο σπίτι.

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "lab10grades Άσκηση 2η: - Δεν κάνει compile: Δείτε την λύση και ξανα προσπαθήστε τα υπόλοιπα στο σπίτι."

Transcript

1 ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 449???? Άσκηση 1η: - Καλή δουλειά! Μπράβο - Σωστή στοίχιση - Σωστά σχόλια - Σωστός ορισµός των πεδίων struct - Σωστή υλοποίηση της init_books - Σωστή υλοποίηση της add_book_info: Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - Σωστή υλοποίηση της strip_dashes, όµως, εφόσον χρησιµοποιείτε j+1, τα όρια του πίνακα έπρεπε να είναι µέχρι ISBN10-1, γιατί έτσι όπως είναι τώρα, στην τελευταία επανάληψη θα προσπελάσετε θέση εκτός των ορίων του πίνακα. - Σωστή υλοποίηση της print_books Άσκηση 2η: - Δεν κάνει compile: Δείτε την λύση και ξανα προσπαθήστε τα υπόλοιπα στο σπίτι. 451???? Άσκηση 1η: - Καλή δουλειά! Μπράβο - Σωστή στοίχιση - Σωστά σχόλια - Σωστός ορισµός των πεδίων struct - Σωστή υλοποίηση της init_books - Σωστή υλοποίηση της add_book_info: Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - Σωστή υλοποίηση της strip_dashes, όµως, εφόσον χρησιµοποιείτε j+1, τα όρια του πίνακα έπρεπε να είναι µέχρι ISBN10-1, γιατί έτσι όπως είναι τώρα, στην τελευταία επανάληψη θα προσπελάσετε θέση εκτός των ορίων του πίνακα. - Σωστή υλοποίηση της print_books Άσκηση 2η: - Δεν κάνει compile: Δείτε την λύση και ξανα προσπαθήστε τα υπόλοιπα στο σπίτι. 476???? -Καλά σχόλια -Καλά ονόµατα µεταβλητών,σωστά πεδία στην struct -Σωστη η strip dashes -Σωστή χρήση της add books -Σωστό τύπωµα των βιβλίων -Σωστό init του πίνακα. -Είχε χαζό error στο compile. Να κάνετε πάντα ένα τελικό compile πριν στείλετε την άσκηση Απουσία 1733 PASS -Στοίχιση οκ -Δεν υπάρχουν σχόλια -Καλά ονόµατα µεταβλητών και τύποι πεδίων στη struct -Σωστά υλοποιείται την strip_dashes όµως στην Τελευταία επανάληψη του for κάνετε προσπέλαση εκτός ορίων του πίνακα -Σωστά υλοποιείται την add_book_info -Σωστά υλοποιείται την print_books και την init -Σωστά υλοποιείται τις sprintf -Σωστά καλείται την print_book -Το πρόγραµµα τερµατίζει µε Segmentation fault -Δεν αρχικοποιείται τον πίνακα pointers σε NULL -Σωστά χρησιµοποιείται τo argv[], δεν ελέγχετε πουθενά αν δόθηκε στη γραµµή εντολών 2 string -Δεν υλοποιείται σωστά το πρόγραµµα - Αντί να βάζετε τυχαία printf στο πρόγραµµα, µάθετε να χρησιµοποιείτε gdb. Page 1

2 1779???? -Δεν έχετε σχόλια -Σωστα ονόµατα µεταβλητών,σωστά πεδία στην struct -Το πρόγραµµα τρέχει σωστά -Η strip dashes δουλεύει σωστά -Σωστή η add_books, θα µπορούσατε αντί να ψάχνετε το πρώτο ελεύθερο πεδίο του πίνακα των structs να στέλνετε στην συνάρτηση τον δείκτη προς την διεύθυνση που θέλετε να περάσετε. -Σωστό τύπωµα των βιβλίων, θα µπορούσατε αντί να κάνετε break όταν βρίσκετε το πρώτο κενό πεδίο του πίνακα να στέλνετε το count αντί του MAX_LENGTH Που στέλνετε εσείς. -Σωστή αρχικοποιήση του πίνακα books. -'Eβγαζε error στο compile,(δεν είχατε δηλώσει την µεταβλητή ptr) -Φαίνεται οτι την προσπαθήσατε όµως. 1899???? -Δεν έχετε σχόλια -Καλά ονόµατα µεταβλητών, σωστά πεδία στην struct -Το πρόγραµµα δεν τρέχει σωστά, ίσως κάποιο πρόβληµα στην add_books (µαλλον δεν περνάτε σωστά τον πίνακα των structs) -Η strip dashes φαίνεται σωστή, αλλά η τελευταία επανάληψη βγαίνει εκτός ορίων του πίνακα µε το j+1 -Η print δεν τυπώνει τα περιεχόµενα του πίνακα σωστά, µάλλον διότι ο πίνακας δεν έχει στοιχέια µέσα. -Η init είναι σωστή -Δεν έχει σταλεί 1900???? -Δεν έχετε σχόλια -Καλά ονόµατα µεταβλητών, σωστά πεδία στην struct -Το πρόγραµµα δεν τρέχει σωστά, ίσως κάποιο πρόβληµα στην add_books (µαλλον δεν περνάτε σωστά τον πίνακα των structs) -Η strip dashes φαίνεται σωστή, αλλά η τελευταία επανάληψη βγαίνει εκτός ορίων του πίνακα µε το j+1 -Η print δεν τυπώνει τα περιεχόµενα του πίνακα σωστά, µάλλον διότι ο πίνακας δεν έχει στοιχέια µέσα. -Η init είναι σωστή -Δεν έχει σταλεί Διαδικαστικά: ΟΚ 1901 FAIL - Σχόλια: OK - Στοίχιση: OK - Σταθερές: OK - Ονόµατα µεταβλητών: OK - Τύποι πεδίων struct: OK - ορθότητα create OK - ορθότητα print: OK - ορθότητα add: OK, αν και θα µπορούσατε να περνούσατε την διεύθυνση της επόµενης θέσης που µπορείτε να γράψετε αντί για το students - ορθότητα init: OK - ορθότητα sprintf: OK - κλήση συναρτήσεων: OK - Γενικά: Το πεδίο used δεν χρειάζεται, αλλά δεν είναι και κακό. Η ιδέα των αρχικοποιήσεων που κάνατε είναι να ψάχνετε να βρείτε που υπάρχει το κενό string και εκεί να κάνετε την ένθεσή σας. Αλλά και έτσι που το έχετε καλό είναι. - Compiler errors Page 2

3 Διαδικαστικά: ΟΚ 1904 PASS - Σχόλια: κανένα σχόλιο... - Στοίχιση: ΟΚ - Σταθερές: ΟΚ - Ονόµατα µεταβλητών: ΟΚ - Τύποι πεδίων struct: ΟΚ - ορθότητα create ΟΚ - ορθότητα print: ΟΚ - ορθότητα add: προσθέσατε ένα παραπάνω πεδίο, int count. Δεν σας ζητήσαµε τέτοια συνάρτηση. Θα µπορούσατε να περνούσατε την διεύθυνση της επόµενης θέσης που µπορείτε να γράψετε αντί για το students - ορθότητα init: ΟΚ - ορθότητα sprintf: ΟΚ - κλήση συναρτήσεων: ΟΚ - Γενικά: Κλέψατε χρησιµοποιόντας ένα ακόµα πεδίο. Κανονικά θα έπρεπε να κάνατε αναζήτηση για να βρείτε κενή θέση - Αρχικοποίηση πίνακα pointers: Δεν αρχικοποιείται - Χρήση argc, argv: ΟΚ - Παράκαµψη NULL θέσεων στην τελική εκτύπωση: Δεν εκτυπώνει κάτι. - Γενικά: Αν έχω καταλάβει σωστά, πάτε να δηµιουργήσετε στο input (που είναι ένα string) πολλά string βάζοντας σε κάθε θέση που ξεκινάει ένα delimeter το '\0'. Αυτή δεν είναι άσχηµη ιδέα. Θα πρέπει λοιπόν στον πίνακα µε του δείκτες να βάζετε τις αρχές αυτών των strings όπως και κάνετε. Άρα µετά γιατί δεν τα τυπώνετε µε %s? Στοίχιση µε πάρα πολλές αλλαγές γραµµής FAIL - Καθόλου σχόλια! - Η init_students() πρέπει να αρχικοποιεί όλα τα πεδία του struct και όχι µόνο το firstname. - Η add_student_info() δεν εισάγει στην πρώτη ελεύθερη θέση του πίνακα µαθητών, αλλά κάνει overwrite τις ήδη γεµάτες θέσεις µε τα στοιχεία της νέας καταχώρησης. - Η strcpy() παίρνει ως παραµέτρους δυο pointers σε χαρακτήρα. Μέσα στην add_student_info(), µόνο η πρώτη χρήση της είναι σωστή. Για τις άλλες σας βγάζει warning ο compiler, τα οποία ΔΕΝ πρέπει να αγνοείτε! - Δεν υλοποιήσατε την print_students(). - Το format_str για την εισαγωγή του ΑΕΜ δεν είναι σωστό. Το µέγεθος του ΑΕΜ είναι AEM_LEN. - Η κλήση της συνάρτησης add_student_info() µέσα στην main δεν είναι σωστή. Διαβάστε ξανά πως καλούµε συναρτήσεις. - Καθόλου σχόλια! - Η άσκηση που στείλατε είναι η lab9a.c µε αλλαγµένο όνοµα και δηλώσεις µεταβλητών. - Οι γραµµές του πίνακα split είναι STRLEN, οπότε η συνθήκη για το i µέσα στο εξωτερικό for statement πρέπει να είναι i<strlen. - Η θέση εισαγωγής πρέπει να είναι το µέγεθος της συµβολοσειράς των χαρακτήρων '*' FAIL - Τα σχόλια µέσα στην main() δεν προσφέρουν κάτι (απλά λένε το προφανές). - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Λάθος add_student_info() γιατί δεν ελέγχετε για προσπέλασή του µέγιστου αριθµού µαθητών. Επίσης τι θα γίνει αν κάποιος φοιτητής είχε όνοµα που αποτελούνταν από 1 γράµµα. Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&students[count-1]). - Σωστή print_students() και σωστά χρησιµοποιείτε την print_students() σε συνδυασµό µε το students_count. - Καλή δουλειά. - Δεν κάνει compile. Page 3

4 Διαδικαστικά: ΟΚ 1910 PASS - Σχόλια: OK - Στοίχιση: OK - Σταθερές: OK - Ονόµατα µεταβλητών: ΟΚ - Τύποι πεδίων struct: ΟΚ - ορθότητα create ΟΚ - ορθότητα print: ΟΚ - ορθότητα add: ΟΚ - ορθότητα init: ΟΚ - ορθότητα sprintf: ΟΚ - κλήση συναρτήσεων: ΟΚ - Γενικά: Σωστός τρόπος περάσµατος της επόµενης κενής θέσης. - Αρχικοποίηση πίνακα pointers: OK - Χρήση argc, argv: OK - Παράκαµψη NULL θέσεων στην τελική εκτύπωση: OK - Γενικά: Έχετε ένα πολύ σοβαρό λάθος που καταστρέφει το πρόγραµµά σας. Στη γραµµή endptr=strstr(string,delimiter) δοκιµάστε αντί για string το startptr. Κατά τα άλλα δουλεύει ικανοποιητικά. Το string[100] είναι αρκετά άσχηµο. Επίσης αν δεν υπάρχει τελικός delimeter, το πρόγραµµά σας δεν θα εκτυπώσει την τελευταία σειρά µε αστεράκια Διαδικαστικά ΟΚ Άσκηση 1η 1911 PASS - Η θέση των σχολίων είναι πάνω από τις συναρτήσεις και όχι δίπλα από αυτές, έτσι ώστε να διατηρούµε ένα πλάτος κώδικα περίπου στις 100 στήλες. Περιεχόµενο σχολίων ΟΚ. - ορισµός πεδίων struct student: ΟΚ - init_students: ΟΚ, σωστή αρχικοποίηση. Θα µπορούσατε να αρχικοποιήσετε µόνο τον 1 χαρακτήρα σε '\0', καθώς µόνο αυτό ελέγχετε στην add_student_info. - create_ ΟΚ - add_student_info: ΟΚ. Εναλλατικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - print_students: ΟΚ. Εναλλακτικά (οµοίως µε την add_student_info), αντί να ψάχνετε για τις κατηλληµένες θέσεις θα µπορούσατε να περνάτε τον αριθµό των θέσεων που έχουν καταληφθεί. Άσκηση 2η - Για τα σχόλια ισχύει ότι και στην άσκηση 1. Αν έχετε απορίες ρωτήστε µας. - Σωστή χρήση argc, argv. Θα µπορούσατε να ελέγχετε εάν πράγµατι έχει βάλει ο χρήστης τουλάχιστον 2 ορίσµατα και σε διαφορετική περίπτωση να τερµατίζετε το πρόγραµµα. - Αλγοριθµικά ΟΚ, το πρόγραµµα δουλεύει καλά. Καλή προσπάθεια. Εξοικειωθείτε στη χρήση του το gdb, ώστε να εντοπίζετε τα λάθη σας στο µέλλον FAIL -Το πρόγραµµα δεν κάνει compile -Δεν έγινε Page 4

5 1914 PASS` - Δεν υπάρχουν σχόλια. - Σωστή init_students(). Καλύτερο θα ήταν να αρχικοποιούσατε ολόκληρο το string µε \0 έτσι ώστε όταν κάνετε copy κάποιο άλλο να µην εξαφανιστεί αυτό που θα βρίσκεται στην πρώτη θέση. - Σωστή add_student_info(). Μια βελτιστοποίηση είναι οτι η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&students[students_count-1]). - Σωστή print_students(). Επίσης για παράµετρο θα µπορούσατε να περνάτε το students_count αντί του MAX_STUDENTS για να απαλείψετε τον έλεγχο κενής θέσης. - Δεν κάνει σωστά αυτό που ζητάµε. Ενα βασικό λάθος το οποίο υπάρχει και σας το τονίζει και ο compiler είναι οτι στο star_group µέσα στο 2ο for loop κάνετε ανάθεση έναν χαρακτήρα ενώ έπρεπε να αναθέσετε το δείκτη απο εκεί που ξεκινάει το string. Μπορείτε να δείτε πως διορθώνεται το πρόβληµα; Πρέπει να εισάγετε ένα επιπλέον σύµβολο. -Προσπαθήστε να βρείτε γιατί δεν ολοκληρώνεται το loop και συνεπώς το πρόγραµµα για να λειτουργήσει η άσκηση σας. Χρησιµοποιείτε το δείκτη i και στα 2 loop. Μπορείτε να δείτε γιατί αυτό είναι πρόβληµα και προκαλεί ατέρµονο loop; Διαδικαστικά: ΟΚ 1915 PASS - Σχόλια: κανένα σχόλιο... - Στοίχιση: ΟΚ - Σταθερές: ΟΚ - Ονόµατα µεταβλητών: ΟΚ - Τύποι πεδίων struct: ΟΚ - ορθότητα create ΟΚ - ορθότητα print: ΟΚ - ορθότητα add: προσθέσατε ένα παραπάνω πεδίο, int count. Δεν σας ζητήσαµε τέτοια συνάρτηση. Θα µπορούσατε να περνούσατε την διεύθυνση της επόµενης θέσης που µπορείτε να γράψετε αντί για το students - ορθότητα init: ΟΚ - ορθότητα sprintf: ΟΚ - κλήση συναρτήσεων: ΟΚ - Γενικά: Κλέψατε χρησιµοποιόντας ένα ακόµα πεδίο. Κανονικά θα έπρεπε να κάνατε αναζήτηση για να βρείτε κενή θέση - Αρχικοποίηση πίνακα pointers: Δεν αρχικοποιείται - Χρήση argc, argv: ΟΚ - Παράκαµψη NULL θέσεων στην τελική εκτύπωση: Δεν εκτυπώνει κάτι. - Γενικά: Αν έχω καταλάβει σωστά, πάτε να δηµιουργήσετε στο input (που είναι ένα string) πολλά string βάζοντας σε κάθε θέση που ξεκινάει ένα delimeter το '\0'. Αυτή δεν είναι άσχηµη ιδέα. Θα πρέπει λοιπόν στον πίνακα µε του δείκτες να βάζετε τις αρχές αυτών των strings όπως και κάνετε. Άρα µετά γιατί δεν τα τυπώνετε µε %s? Στοίχιση µε πάρα πολλές αλλαγές γραµµής. Page 5

6 1917 FAIL, σας έχουν ξεφύγει µερικά σηµεία. -Δεν έχετε καθόλου σχόλια -Καλά ονόµατα µεταβλητών, σωστα πεδία στην struct -Το πρόγραµµα δεν έτρεχε σωστά γιατί έχετε λάθος και στην αναζήτηση που κάνετε στην add_book_info και στον τρόπο που µετακινείτε τα κελιά του string στην strip_dashes.επίσης, µετά την αφαίρεση των dashes, πάτε και αντιγράφετε µέσα στο str το άδειο temp_string και το χαλάτε. Προσπαθήστε να βρείτε το λάθος σας τρέχοντας τον κώδικα της συνάρτησης µέσα από gdb (δώστε πρώτα πιο µικρές τιµές στο TITLE_LEN και στο MAX_BOOKS για να τελειώνουν πιο γρήγορα τα loops. -Είχε σχόλια - Να χρησιµοποιείτε τις συναρτήσεις που ήδη υπάρχουν (πχ strlen). - Η δουλειά της print είναι να εκτυπώνει. Γιατί θέτετε το point[i] σε NULL µέσα σε αυτή? - Ο delimiter έχει µέχρι 3 στοιχεία, όχι ακριβώς 3, εποµένως ο έλεγχος για delimiter[0], [1] και [2] δεν είναι πάντα σωστός. - Για την αρχικοποίηση του point[i] έπρεπε να χρησιµοποιείτε διαφορετική θέση (πχ. i) για τον point και διαφορετική (πχ κάποιο j) για τον string. Γενικά φαίνεται να έχετε σοβαρό πρόβληµα στο αλγοριθµικό κοµµάτι. Τα προγράµµατά σας κάνουν µεν compile αλλά καµία από τις συναρτήσεις σας δεν είναι γραµµένη σωστά. Χρειάζεται να λύσετε πολλές παλιές ασκήσεις για εξάσκηση, και να ζητάτε βοήθεια όταν δυσκολεύεστε σε αυτές FAIL - Τα σχόλια µέσα στην main() δεν προσφέρουν κάτι (απλά λένε το προφανές). - Ένα σηµαντικό λάθος που κάνατε ήταν να µην ορίσετε σωστά το format string µε αποτέλεσµα να µην διαβάζει σωστά την είσοδο που δίνει ο χρήστης. Μπορείτε να δείτε ποιό είναι το λάθος σας; Μπορείτε να εκτυπώσετε το format string και να δείτε τι λείπει. - Σωστή init_students(). Καλύτερο θα ήταν να αρχικοποιούσατε ολόκληρο το string µε \0 έτσι ώστε όταν κάνετε copy κάποιο άλλο να µην εξαφανιστεί αυτό που θα βρίσκεται στην πρώτη θέση. - Λάθος δηµιουργία . Σχηµατίζετε το mail µε τον σωστό τρόπο αλλά δεν το αποθηκεύετε στη σωστή διεύθυνση. Έπρεπε να το βάλετε στη διεύθυνση που σας δίνεται σαν παράµετρο και όχι σε έναν τοπικό πίνακα καθώς το αποτέλεσµα δεν θα περάσει στη main. - Σωστή add_student_info(). Μια βελτιστοποίηση είναι οτι η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&students[students_count-1]). - Σωστή print_students(). - Επίσης για παράµετρο θα µπορούσατε να περνάτε το students_count αντί του MAX_STUDENTS για να απαλείψετε τον έλεγχο κενής θέσης. - Δεν κάνει compile. Έχετε πολλά λάθη. Θα τονίσω οτι µε NULL αρχικοποιούνται διευθύνσεις. Εσείς αρχικοποιείτε µε NULL έναν ολόκληρο πίνακα απο διευθύνσεις. Διαδικαστικά ΟΚ Άσκηση 1η 1922???? - Στοίχιση: ΟΚ - Σχόλια: Η θέση των σχολίων είναι πάνω από τις συναρτήσεις και όχι δίπλα από αυτές, έτσι ώστε να διατηρούµε ένα πλάτος κώδικα περίπου στις 100 στήλες. Επίσης δεν γράφουµε σχόλια µε ελληνικούς χαρακτήρες. Περιεχόµενο σχολίων ΟΚ. - ορισµός πεδίων struct student: ΟΚ - init_students: ΟΚ - create_ ΟΚ - add_student_info: ΟΚ. Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - print_students: ΟΚ. Εναλλακτικά (οµοίως µε την add_student_info), αντί να ψάχνετε για τις κατειληµµένες θέσεις θα µπορούσατε να περνάτε τον αριθµό των θέσεων που έχουν καταληφθεί. Άσκηση 2η - Στοίχιση: ΟΚ - Ποιός σας είπε ότι ο delimiter είναι πάντα $$; - Πολύ λάθος σκέψη για τη λύση. Τι θα κάνατε αν αντί για 10 ο πίνακας είχε µέγεθος 100? Page 6

7 1925 FAIL Άσκηση 1η: - Σωστή στοίχιση - Σωστά σχόλια - Σωστός ορισµός των πεδίων struct - Σωστή υλοποίηση της init_books - Σωστή υλοποίηση της add_book_info (την καλείτε δυο φορές στην main, µάλλον καταλάθος): Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - Σωστή υλοποίηση της strip_dashes - Σχεδόν σωστή υλοποίηση της print_books αλλά έχετε ένα περίεργο bug, δεν εκτυπώνετε σωστά τα αποτελέσµατα. Άσκηση 2η: -Δεν κάνει compile, δείτε την λύση και ξαναπροσπαθείστε στο σπίτι. Περισσότερο συµµετοχή την επόµενη φορά PASS -Καλά σχόλια -Σωστά ονόµατα µεταβλητών, σωστά πεδία στην struct. Πιστέυω δεν χρειαζόταν να δηλώσετε LENGTH+1 για τα πεδία, το µέγεθος 100 είναι αρκετά µεγάλο για να περιέχει και το '/0' -Το πρόγραµµα τρέχει σωστά -Η strip dashes δουλεύει σωστά. -Η add books δουλεύει σωστά. Θα µπορούσατε αντί να ψάχνετε το πρώτο ελεύθερο πεδίο του πίνακα των structs να στέλνετε στην συνάρτηση τον δείκτη προς την διεύθυνση που θέλετε να περάσετε. -Σωστό τύπωµα των βιβλίων Θα µπορούσατε να στέλνετε το count αντι για το MAX_LENGTH και να είχατε αποφύγει µια σύνθετη συνθήκη για τον τερµατισµο της for. -Σωστή init. -Δεν έχετε σχόλια -Η άσκηση τρέχει, παίρνει σωστά input από την γραµµή εντολών -Δεν βγάζει σωστά αποτελέσµατα όµως.τυπώνει το string ίδιο αλλά αντί για το delimiter έχει αριθµούς PASS Άσκηση 1η: - Πολύ καλή δουλειά! Μπράβο - Σωστή στοίχιση - Σωστά σχόλια - Σωστός ορισµός των πεδίων struct - Σωστή υλοποίηση της init_books - Σωστή υλοποίηση της add_book_info: Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - Σωστή υλοποίηση της strip_dashes - Σωστή υλοποίηση της print_books Άσκηση 2η: - Καλή δουλειά - Σωστή αρχικοποίηση πίνακα pointers - Σωστή χρήση argc, argv - Σωστά παρακάµπτετε τις NULL θέσεις κατά την εκτύπωση αλλά εκτυπώνετε κάποια επιπλέον strings µε 'σκουπίδια'. Εναλλακτικά θα µπορούσατε να χρησιµοποιήσετε την strpbrk. Δείτε την λύση. Page 7

8 1928 PASS - Δεν υπάρχουν σχόλια. - Σωστή init_students(). Καλύτερο θα ήταν να αρχικοποιούσατε ολόκληρο το string µε \0 έτσι ώστε όταν κάνετε copy κάποιο άλλο να µην εξαφανιστεί αυτό που θα βρίσκεται στην πρώτη θέση. - Σωστή add_student_info(). Μια βελτιστοποίηση είναι οτι η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&students[students_count-1]). - Σωστή print_students(). Επίσης για παράµετρο θα µπορούσατε να περνάτε το students_count αντί του MAX_STUDENTS για να απαλείψετε τον έλεγχο κενής θέσης. - Δεν κάνει σωστά αυτό που ζητάµε. Ενα βασικό λάθος το οποίο υπάρχει και σας το τονίζει και ο compiler είναι οτι στο star_group µέσα στο 2ο for loop κάνετε ανάθεση έναν χαρακτήρα ενώ έπρεπε να αναθέσετε το δείκτη απο εκεί που ξεκινάει το string. Μπορείτε να δείτε πως διορθώνεται το πρόβληµα; Πρέπει να εισάγετε ένα επιπλέον σύµβολο. -Προσπαθήστε να βρείτε γιατί δεν ολοκληρώνεται το loop και συνεπώς το πρόγραµµα για να λειτουργήσει η άσκηση σας. Χρησιµοποιείτε το δείκτη i και στα 2 loop. Μπορείτε να δείτε γιατί αυτό είναι πρόβληµα και προκαλεί ατέρµονο loop; 1929 FAIL - Τα σχόλια µέσα στην main() δεν προσφέρουν κάτι (απλά λένε το προφανές). - Σωστή init_students(). - Σωστή add_student_info(). Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Σωστή print_students(). Η κλήση της έπρεπε να γίνεται έξω από την do-while. - Επίσης για παράµετρο θα µπορούσατε να περνάτε το students_count αντί του MAX_STUDENTS για να απαλείψετε τον έλεγχο κενής θέσης. - Δεν κάνει compile. Διαδικαστικά ΟΚ Άσκηση 1η 1931 PASS - Σωστή στοίχιση και σχόλια. - Ονόµατα πεδίων struct: σωστά. - init_students: σωστή αρχικοποίηση. Θα µπορούσατε να αρχικοποιήσετε µόνο τον 1 χαρακτήρα σε '\0', καθώς µόνο αυτό ελέγχετε στην add_student_info. - create_ OK, ωραία ιδέα η χρήση της sprintf(), αν και στην εκτέλεση της είναι πιο αρχή από strcat/strcpy. - add_student_info: σωστή. Αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε τον counter sum στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - print_students: OK Άσκηση 2η - Σωστή στοίχιση, τα σχόλια καλό είναι να µπαίνουν πάνω από τον κώδικα και όχι δεξιά. - Σωστή χρήση argc, argv. Θα µπορούσατε να ελέγχετε εάν πράγµατι έχει βάλει ο χρήστης τουλάχιστον 2 ορίσµατα και σε διαφορετική περίπτωση να τερµατίζετε το πρόγραµµα. - Αλγοριθµικά καθαρή λύση. Πολύ καλά! Συνεχίστε έτσι. Page 8

9 1932 PASS - Καλά σχόλια. - Σωστοί τύποι και περιγραφικά ονόµατα πεδίων του struct. - Σωστή init_students(). - Σωστή add_student_info(). Αντί για την έξτρα παράµετρο που περνάτε, µπορείτε να περνάτε - Σωστή print_students() και εκτύπωση µόνο των γεµάτων θέσεων. - Καλά σχόλια. - Σωστή print_asterisks(). - Η προσθήκη του delimiter στο τέλος του αρχικού string, µε τον τρόπο που είναι γραµµένη δεν είναι ασφαλής εντολή. Εκτός του ότι µπορεί η είσοδος να έχει ήδη στο τέλος delimiter, το βασικότερο πρόβληµα είναι πως τροποποιούµε µνήµη που δεν γνωρίζουµε το µέγεθος της. Δεν υπάρχει τρόπος να εγγυηθούµε ότι µετά το τέλος του argv[i] υπάρχει διαθέσιµος κενός χώρος ή εάν θα βγούµε εκτός ορίων του πίνακα όπου βρίσκεται αποθηκευµένη η συµβολοσειρά PASS - Καλά σχόλια. - Σωστοί τύποι και περιγραφικά ονόµατα πεδίων του struct. - Σωστή init_students(). - Σωστή add_student_info(). Αντί για την έξτρα παράµετρο που περνάτε, µπορείτε να περνάτε - Σωστή print_students() και εκτύπωση µόνο των γεµάτων θέσεων. - Καλά σχόλια. - Σωστή print_asterisks(). - Η προσθήκη του delimiter στο τέλος του αρχικού string, µε τον τρόπο που είναι γραµµένη δεν είναι ασφαλής εντολή. Εκτός του ότι µπορεί η είσοδος να έχει ήδη στο τέλος delimiter, το βασικότερο πρόβληµα είναι πως τροποποιούµε µνήµη που δεν γνωρίζουµε το µέγεθος της. Δεν υπάρχει τρόπος να εγγυηθούµε ότι µετά το τέλος του argv[i] υπάρχει διαθέσιµος κενός χώρος ή εάν θα βγούµε εκτός ορίων του πίνακα όπου βρίσκεται αποθηκευµένη η συµβολοσειρά FAIL - Σχόλια OK. - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Λάθος add_student_info(). Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Σωστή print_students() αλλά δεν χρησιµοποιείτε σωστά την print_students(). Έπρεπε να το κάνετε σε συνδυασµό µε το students_count. Δεν χρειαζόταν να χρησιµοποιήσετε κάποιο έλεγχο για '\0'. - Καλή δουλειά. - Δεν κάνει compile. Page 9

10 Διαδικαστικά:ΟΚ 1936 FAIL - Σχόλια: Αρκετά, αν και θα µπορούσατε να περιγράψετε και άλλα πράγµατα (πχ τι κάνουν οι µεταβλητές suffix, dot_str κτλ) - Στοίχιση: ΟΚ - Σταθερές: ΟΚ - Ονόµατα µεταβλητών: ΟΚ - Τύποι πεδίων struct: ΟΚ - ορθότητα create ΟΚ - ορθότητα add: θέλετε να συγκρίνετε το firstname[0] και όχι σκέτο το firstname! Το πρώτο είναι ο πρώτος χαρακτήρας (όπως σωστά αρχικοποιήσατε) το δεύτερο είναι διεύθυνση. Οπότε η διεύθυνση δεν είναι ποτέ!=0 και πέφτετε σε άπειρο loop - ορθότητα print: Δείτε και παραπάνω - ορθότητα init: ΟΚ - ορθότητα sprintf: ΟΚ - κλήση συναρτήσεων: ΟΚ - Γενικά: Έχετε ένα πολύ σοβαρό λάθος που περιέγραψα παραπάνω. Κατά τα άλλα το πρόγραµµά σας δουλεύει. - Compiler errors 1942 FAIL - Τα σχόλια µέσα στην main() δεν προσφέρουν κάτι (απλά λένε το προφανές). - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Λάθος add_student_info() γιατί δεν ελέγχετε για προσπέλασή του µέγιστου αριθµού µαθητών. Επίσης τι θα γίνει αν κάποιος φοιτητής είχε όνοµα που αποτελούνταν από 1 γράµµα. Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&students[count-1]). - Σωστή print_students() και σωστά χρησιµοποιείτε την print_students() σε συνδυασµό µε το students_count. - Καλή δουλειά. - Δεν κάνει compile. Παπαγάτσια Πανάγου Διαδικαστικά: ΟΚ 1946 PASS - Σχόλια: Μόνο στην αρχή - Στοίχιση: ΟΚ - Σταθερές: ΟΚ - Ονόµατα µεταβλητών: ΟΚ - Τύποι πεδίων struct: ΟΚ - ορθότητα create ΟΚ - ορθότητα print: ΟΚ - ορθότητα add: ΟΚ - ορθότητα init: ΟΚ - ορθότητα sprintf: ΟΚ - κλήση συναρτήσεων: ΟΚ - Γενικά: Σωστός τρόπος περάσµατος της επόµενης κενής θέσης. - Αρχικοποίηση πίνακα pointers: OK - Χρήση argc, argv: OK - Παράκαµψη NULL θέσεων στην τελική εκτύπωση: OK - Γενικά: Το πρόβληµα είναι ότι υπάρχει ένα ερωτηµατικό στο τέλος του for που βρίσκεται µέσα στην else! Επίσης δεν βλέπω κανένα σχόλιο... Page 10

11 1947 FAIL - Ελάχιστα σχόλια. Αυτά που έχετε θα µπορούσαν να µπούν πάνω απο την κάθε συνάρτηση. - Σωστή init_books(). Καλύτερο θα ήταν να αρχικοποιούσατε ολόκληρο το string µε \0 έτσι ώστε όταν κάνετε copy κάποιο άλλο να µην εξαφανιστεί αυτό που θα βρίσκεται στην πρώτη θέση. - Σωστή αφαίρεση των '-' απο τον κωδικό ISBN10. - Σωστή add_book_info(). Μια βελτιστοποίηση είναι οτι η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&books[count-1]). - Σωστή print_students(). Επίσης για παράµετρο θα µπορούσατε να περνάτε το count αντί του MAX_BOOKS για να απαλείψετε τον έλεγχο κενής θέσης. - Δεν κάνει compile. Προσπαθείστε να διορθώσετε τη συνάρτηση που έχετε δηµιουργήσει και να της βάλετε σωστά ορίσµατα για να την καλείτε. Αν η συνάρτηση µπεί σε σχόλια τότε κάνει compile. Αν έχετε τέτοιου είδους προβλήµατα σε δευτερεύουσες συναρτήσεις καλό είναι να τις βάζετε σε σχόλια µε κάποια υποσηµείωση για να µπορεί να κάνει το προγραµµά σας compile. - Σωστά αφαιρείτε τα delimeters απο το string που δίνει ο χρήστης αλλά δεν ορίζετε σωστά τη κάθε αρχή του κάθε substring στον πίνακα array_ptr. Ενα βασικό λάθος που έχετε κάνει είναι οτι δεν χρησιµοποιείτε το δείκτη j στο εσωτερικό loop. Προσπαθήστε να ολοκληρώσετε τη σκέψη σας και να διορθώσετε την άσκηση. 1949???? -Το πρόγραµµα τερµατίζει µε Segmentation fault -Στοίχιση και σχόλια οκ -Καλά ονόµατα µεταβλητών και τύποι πεδίων στη struct -Δεν υλοποιείται σωστά την strip_dashes -Σωστά υλοποιείται την add_book_info - Δεν υλοποιείται σωστά την init αν θέλετε να αρχικοποιήσετε όλα τα στοιχεία µε \0 θα πρέπει να πάρετε ενα for εξωτερικό για το book και 3 εσωτερικά for για κάθε πεδίο όπου θα τρέχουν µέχρι το max µέγεθος του καθενός. -Σωστά υλοποιείται την συνάρτηση print -Σωστά υλοποιείται τις sprintf -Σωστά καλείται τις συναρτήσεις - -Το πρόγραµµα σας βγάζει warnings και τερµατίζει µε Segmentation fault -Δεν ελέγχετε πουθενά αν δόθηκε από τη γραµµή εντολών 2 string -Δεν κάνετε σωστή χρήση του argv -Δεν υλοποιείται σωστά το πρόγραµµα 1950 PASS - Καλά σχόλια - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Στην create_ θα µπορούσατε να γράψετε απευθείας στο " ". Δεν υπάρχει λόγος για τη fullname. - Στην add_student_info() η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Στην print_students() θα ήταν πιο λογικό να περνάτε ως δεύτερη παράµετρο το students_count. - Καλή δουλειά. - Σωστή αρχικοποίηση. - Λάθος έλεγχος µεταξύ string και χαρακτήρα. ( το -Wall το είδατε; ) - Τελειώσετε την άσκηση Page 11

12 1955 FAIL - Σχόλια OK. - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Λάθος add_student_info(). Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Σωστή print_students() και χρησιµοποιείτε σωστά την print_students() σε συνδυασµό µε το students_count. - Καλή δουλειά. - Δεν κάνει compile Απουσία Διαδικαστικά OK Άσκηση 1η 1957 PASS - Στοίχιση: Σωστή. - Σχόλια: Έχετε σχόλια στην αρχή του προγράµµατος σας. Απουσιάζουν σχόλια πριν από κάθε συνάρτηση σχετικά µε την λειτουργία της (τι κάνει, ορίσµατα, επιστρεφόµενη τιµή αν δεν επιστρέφει void). - ορισµός πεδίων struct student: ΟΚ - init_students: ΟΚ - create_ ΟΚ - add_student_info: ΟΚ. Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - print_students: Η συνάρτηση θα πρέπει να εκτυπώνει όλους τους φοιτητές σε µία κλήση και όχι ένα-ένα. Η δοµή επανάληψης θα έπρεπε να υπάρχει µέσα στην print_students και όχι µέσα στη main. Άσκηση 2η - Τραγική στοίχιση! - Απουσία χρήσης argc, argv. - Αντιγράψατε κοµµάτια της άσκησης 1 του lab9. - O αλγόριθµος δεν δουλεύει. 1959???? -Δεν έχετε σχόλια -Σωστα ονόµατα µεταβλητών,σωστά πεδία στην struct -Το πρόγραµµα τρέχει σωστά -Η strip dashes δουλεύει σωστά -Σωστή η add_books, θα µπορούσατε αντί να ψάχνετε το πρώτο ελεύθερο πεδίο του πίνακα των structs να στέλνετε στην συνάρτηση τον δείκτη προς την διεύθυνση που θέλετε να περάσετε. -Σωστό τύπωµα των βιβλίων, θα µπορούσατε αντί να κάνετε break όταν βρίσκετε το πρώτο κενό πεδίο του πίνακα να στέλνετε το count αντί του MAX_LENGTH Που στέλνετε εσείς. -Σωστή αρχικοποιήση του πίνακα books. -'Eβγαζε error στο compile,(δεν είχατε δηλώσει την µεταβλητή ptr) -Φαίνεται οτι την προσπαθήσατε όµως. - Πολύ καλή δουλειά, µπράβο PASS - Πριν προσπελάσετε το argv πρέπει να ελέγξετε την τιµή του argc ώστε να είστε σίγουροι ότι δόθηκαν τα ζητούµενα strings στη γραµµή εντολής. - Σωστή κατά τα άλλα Page 12

13 1962 FAIL - Ελάχιστα σχόλια. Αυτά που έχετε θα µπορούσαν να µπούν πάνω απο την κάθε συνάρτηση. - Σωστή init_books(). Καλύτερο θα ήταν να αρχικοποιούσατε ολόκληρο το string µε \0 έτσι ώστε όταν κάνετε copy κάποιο άλλο να µην εξαφανιστεί αυτό που θα βρίσκεται στην πρώτη θέση. - Σωστή αφαίρεση των '-' απο τον κωδικό ISBN10. - Σωστή add_book_info(). Μια βελτιστοποίηση είναι οτι η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&books[count-1]). - Σωστή print_students(). - Έχετε κάνει λάθος στη χρήση του πίνακα δεικτών. Ο πίνακας αυτός δεν είναι string αλλά είναι πίνακας απο δείκτες που δείχνουν σε string. - Σωστά διαβάζετε την είσοδο µέσω του argv αλλά δεν την αντιγράφετε σωστά µε την strcopy γεγονός που σας τονίζει και ο compiler. - Κάνετε σύγκριση µεταξύ strings χρησιµοποιώντας ==. Θα έπρεπε να γίνει χρήση της strcmp. Διαδικαστικά ΟΚ Άσκηση 1η 1964 PASS - Σωστή στοίχιση και σχόλια. - Ονόµατα πεδίων struct: σωστά. - init_students: σωστή αρχικοποίηση. Θα µπορούσατε να αρχικοποιήσετε µόνο τον 1 χαρακτήρα σε '\0', καθώς µόνο αυτό ελέγχετε στην add_student_info. - create_ OK, ωραία ιδέα η χρήση της sprintf(), αν και στην εκτέλεση της είναι πιο αρχή από strcat/strcpy. - add_student_info: σωστή. Αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε τον counter sum στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - print_students: OK Άσκηση 2η - Σωστή στοίχιση, τα σχόλια καλό είναι να µπαίνουν πάνω από τον κώδικα και όχι δεξιά. - Σωστή χρήση argc, argv. Θα µπορούσατε να ελέγχετε εάν πράγµατι έχει βάλει ο χρήστης τουλάχιστον 2 ορίσµατα και σε διαφορετική περίπτωση να τερµατίζετε το πρόγραµµα. - Αλγοριθµικά καθαρή λύση. Πολύ καλά! Συνεχίστε έτσι. 1965???? -Το πρόγραµµα τερµατίζει µε Segmentation fault -Στοίχιση και σχόλια οκ -Καλά ονόµατα µεταβλητών και τύποι πεδίων στη struct -Δεν υλοποιείται σωστά την strip_dashes -Σωστά υλοποιείται την add_book_info - Δεν υλοποιείται σωστά την init αν θέλετε να αρχικοποιήσετε όλα τα στοιχεία µε \0 θα πρέπει να πάρετε ενα for εξωτερικό για το book και 3 εσωτερικά for για κάθε πεδίο όπου θα τρέχουν µέχρι το max µέγεθος του καθενός. -Σωστά υλοποιείται την συνάρτηση print -Σωστά υλοποιείται τις sprintf -Σωστά καλείται τις συναρτήσεις - -Το πρόγραµµα σας βγάζει warnings και τερµατίζει µε Segmentation fault -Δεν ελέγχετε πουθενά αν δόθηκε από τη γραµµή εντολών 2 string -Δεν κάνετε σωστή χρήση του argv -Δεν υλοποιείται σωστά το πρόγραµµα -Δεν κάνει compile, και φαίνεται να είναι από λάθος απροσεξίας. Να κάνετε πάντα ένα τελικό compile πριν στείλετε τις ασκήσεις σας FAIL -Το πρόγραµµα τερµατίζει µε Segmentation fault -Σωστά χρησιµοποιείται τo argv[], δεν ελέγχετε πουθενά αν δόθηκε στη γραµµή εντολών 2 string -Δεν υλοποιείται σωστά το πρόγραµµα Page 13

14 1975???? -Στοίχιση και σχόλια οκ -Καλά ονόµατα µεταβλητών και τύποι πεδίων στη struct -Σωστά υλοποιείται την strip_dashes και την add_book_info Έπρεπε να ελέγχετε το πρώτο στοιχείο books[i].author[0]!='\0' ο ιδανικός τρόπος θα ήτανε να περνούσατε ως τελευταία παράµετρο το &books[count-1] -Σωστά υλοποιείται την print_books και την init -Σωστά υλοποιείται τις sprintf -Σωστά καλείται τις συναρτήσεις -Το πρόγραµµά σας βγάζει warnings. Τι ίδιο σχόλιο σας είχε γίνει και στο lab9. Πριν το επόµενο εργαστήριο προσπαθήστε να διορθώσετε τα λάθη σας και να κάνετε περισσότερη εξάσκηση σε κώδικα και σε αναγνώριση µηνυµάτων του compiler. -Δε χρησιµοποιείτε πίνακα 100 θέσεων από pointers που ζητάει η άσκηση -Σωστά πάτε να ελέγξετε για το argc, θα µπορούσατε να ελέγχετε στην αρχή απλά αν argc<3 να τερµατίζει το πρόγραµµα - Δεν αποθηκεύεται πουθενά το string που διαβάζετε από την γραµµή εντολών argv[1] - Δεν υλοποιείται σωστά το πρόγραµµα FAIL - Ελάχιστα σχόλια. Αυτά που έχετε θα µπορούσαν να µπούν πάνω απο την κάθε συνάρτηση. - Σωστή init_books(). Καλύτερο θα ήταν να αρχικοποιούσατε ολόκληρο το string µε \0 έτσι ώστε όταν κάνετε copy κάποιο άλλο να µην εξαφανιστεί αυτό που θα βρίσκεται στην πρώτη θέση. - Σωστή αφαίρεση των '-' απο τον κωδικό ISBN10. - Σωστή add_book_info(). Μια βελτιστοποίηση είναι οτι η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&books[count-1]). - Σωστή print_students(). Επίσης για παράµετρο θα µπορούσατε να περνάτε το count αντί του MAX_BOOKS για να απαλείψετε τον έλεγχο κενής θέσης. - Δεν κάνει compile. Προσπαθείστε να διορθώσετε τη συνάρτηση που έχετε δηµιουργήσει και να της βάλετε σωστά ορίσµατα για να την καλείτε. Αν η συνάρτηση µπεί σε σχόλια τότε κάνει compile. Αν έχετε τέτοιου είδους προβλήµατα σε δευτερεύουσες συναρτήσεις καλό είναι να τις βάζετε σε σχόλια µε κάποια υποσηµείωση για να µπορεί να κάνει το προγραµµά σας compile. - Σωστά αφαιρείτε τα delimeters απο το string που δίνει ο χρήστης αλλά δεν ορίζετε σωστά τη κάθε αρχή του κάθε substring στον πίνακα array_ptr. Ενα βασικό λάθος που έχετε κάνει είναι οτι δεν χρησιµοποιείτε το δείκτη j στο εσωτερικό loop. Προσπαθήστε να ολοκληρώσετε τη σκέψη σας και να διορθώσετε την άσκηση PASS -Καλά σχόλια -Σωστά ονόµατα µεταβλητών, σωστά πεδία στην struct. Πιστέυω δεν χρειαζόταν να δηλώσετε LENGTH+1 για τα πεδία, το µέγεθος 100 είναι αρκετά µεγάλο για να περιέχει και το '/0' -Το πρόγραµµα τρέχει σωστά -Η strip dashes δουλεύει σωστά. -Η add books δουλεύει σωστά. Θα µπορούσατε αντί να ψάχνετε το πρώτο ελεύθερο πεδίο του πίνακα των structs να στέλνετε στην συνάρτηση τον δείκτη προς την διεύθυνση που θέλετε να περάσετε. -Σωστό τύπωµα των βιβλίων Θα µπορούσατε να στέλνετε το count αντι για το MAX_LENGTH και να είχατε αποφύγει µια σύνθετη συνθήκη για τον τερµατισµο της for. -Σωστή init. -Δεν έχετε σχόλια -Η άσκηση τρέχει, παίρνει σωστά input από την γραµµή εντολών -Δεν βγάζει σωστά αποτελέσµατα όµως.τυπώνει το string ίδιο αλλά αντί για το delimiter έχει αριθµούς. Page 14

15 1984 FAIL -Στοίχιση οκ -Δεν υπάρχουν σχόλια -Καλά ονόµατα µεταβλητών -Μέσα στη struct το µέγεθος του isbn δεν είναι MAX_BOOKS αλλά ISBN10 -Δεν υλοποιείται σωστά τη συνάρτηση strip_dashes -Δεν υλοποιείται σωστά τη συνάρτηση add_book -Στην print_books σωστά περνάτε σα παράµετρο το count και δεν εκτυπώνεται µέχρι το MAX -Στην init αφού περνάτε το ΜAX_BOOKS σα παράµετρο στο len έπρεπε να είχατε στο for (i=0; i<len; i++) -Σωστά υλοποιείται τις sprintf -Πρώτα έπρεπε να καλέσετε την strip_dashes και µετά την add_book_info -Σωστά καλείται την print_book -Δεν έγινε Παπαγάτσια Πανάγου Διαδικαστικά: ΟΚ 1985 PASS - Σχόλια: Μόνο στην αρχή - Στοίχιση: ΟΚ - Σταθερές: ΟΚ - Ονόµατα µεταβλητών: ΟΚ - Τύποι πεδίων struct: ΟΚ - ορθότητα create ΟΚ - ορθότητα print: ΟΚ - ορθότητα add: ΟΚ - ορθότητα init: ΟΚ - ορθότητα sprintf: ΟΚ - κλήση συναρτήσεων: ΟΚ - Γενικά: Σωστός τρόπος περάσµατος της επόµενης κενής θέσης. - Αρχικοποίηση πίνακα pointers: OK - Χρήση argc, argv: OK - Παράκαµψη NULL θέσεων στην τελική εκτύπωση: OK - Γενικά: Το πρόβληµα είναι ότι υπάρχει ένα ερωτηµατικό στο τέλος του for που βρίσκεται µέσα στην else! Επίσης δεν βλέπω κανένα σχόλιο PASS - Καλά σχόλια - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Στην create_ θα µπορούσατε να γράψετε απευθείας στο " ". Δεν υπάρχει λόγος για τη fullname. - Στην add_student_info() η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Στην print_students() θα ήταν πιο λογικό να περνάτε ως δεύτερη παράµετρο το students_count. - Καλή δουλειά. - Σωστή αρχικοποίηση. - Λάθος έλεγχος µεταξύ string και χαρακτήρα. ( το -Wall το είδατε; ) - Τελειώσετε την άσκηση Page 15

16 1988 PASS -Καλά σχόλια -Σωστο αποτέλεσµα της strip_dashes. Αλλά επειδή χρησιµοποιέιτε την for µέχρι j<isbn10 το [j+1] θα βγαίνει εκτος ορίων του πίνακα, πράγµα που δεν είναι σωστό. -Σωστη η add books. Θα µπορούσατε αντί να ψάχνετε το πρώτο ελεύθερο πεδίο του πίνακα των structs να στέλνετε στην συνάρτηση τον δείκτη προς την διεύθυνση που θέλετε να περάσετε. -Σωστή η init books -Σωστό τύπωµα των βιβλίων -Σωστά ελέγχετε άν ο χρήστης έδωσε στην γραµµή εντολών είσοδο. -Πολύ λίγα σχόλια -Δεν βγάζει σωστό αποτέλεσµα, αλλά φαίνεται οτι την δουλέψατε 1992 PASS - Καλά σχόλια. - Σωστοί τύποι και περιγραφικά ονόµατα πεδίων του struct. Καλό είναι να δηλώνετε σε διαφορετική γραµµή το κάθε πεδίο. - Στην init_students() καλό είναι να αρχικοποιείτε όλες τις θέσεις µνήµης. - Σωστή add_student_info(), αν και θα µπορούσατε να την γράψετε πιο απλά. - Επίσης αντί να κάνετε αναζήτηση για την πρώτη κενή θέση µέσα στην συνάρτηση, θα µπορούσατε να περνάτε την πρώτη κενή θέση σαν πρώτη παράµετρο (&students[count-1]) από την main. - Σωστή print_students() και εκτύπωση µόνο των γεµάτων θέσεων. - Καλά σχόλια. - Το πρόγραµµα τερµατίζει µε sgmentation fault. - Δεν ελέγχετε την τιµή επιστροφής της strstr(). Εάν ο delimiter δεν βρεθεί η επιστρεφόµενη τιµή είναι NULL. - Τα στοιχεία του πίνακα table_ptr είναι pointers αρχικοποιηµένοι σε NULL. Οπότε όταν βρεθεί µία συµβολοσειρά χαρακτήρων '*' µεγέθους len, έπρεπε να αποθηκεύετε την διεύθυνση που ξεκινά (start_ptr) στην θέση table_ptr[len-1]. - Η print_aterisks() πρέπει να εκτυπώνει µόνο '*'. Διαδικαστικά ΟΚ Άσκηση 1η 1994 PASS - Στοίχιση: OK - Σχόλια: Έχετε σχόλια στην αρχή του προγράµµατος σας. Απουσιάζουν σχόλια πριν από κάθε συνάρτηση σχετικά µε την λειτουργία της (τι κάνει, ορίσµατα, επιστρεφόµενη τιµή αν δεν επιστρέφει void). - ορισµός πεδίων struct student: OK - init_students: OK - create_ OK - add_student_info: γραµµή 29, γράφετε if(students[i].firstname =='\0'). Όµως η µεταβλητή students[i].firstname δεν λαµβάνει ποτέ τη τιµή 0 διότι πάντα δείχνει σε µία ισχύουσα διεύθυνση. Το πρόγραµµα σας δεν µπαίνει ποτέ στο if. Το σωστό είναι if(students[i].firstname[0] =='\0') ή if( strlen(students[i].firstname) == 0 ). - print_students: ΟΚ. Έχετε ξεχάσει να βάλετε '\n' στο τέλος κάθε γραµµής. Άσκηση 2η - Στοίχιση: ΟΚ - Σχόλια: ΟΚ - Χρήση argc,argv: OK - Αρχικοποίηση πίνακα δεικτών: ΟΚ - Το πρόγραµµα σας υποθέτει λανθασµένα ότι πάντοτε µετά τον τρέχον delimiter υπάρχει και άλλος ένας delimiter. Απουσιάζει ένας έλεγχος για το αν όντως υπάρχει delimiter ή όχι. Υπολογίζει σωστά όλες τις οµάδες από αστεράκια εκτός της τελευταίας, όπου ο υπολογισµός του n είναι λανθασµένος και το η εντολή pinakas_deiktwn[n -1] = start βγαίνει εκτός ορίων του προγράµµατος. - Στο τέλος τυπώνετε τις διευθύνσεις pinakas_deiktwn[i], όπου θα σας τυπώσει όλο το string από pinakas_deiktwn[i] και πέρα και όχι µόνο τα αστεράκια. Δουλέψτε σε προγράµµατα µε pointers. Και στα δύο προγράµµατα του lab10 είχατε προβλήµατα µε διάβασµα ή εγγραφή pointers. Page 16

17 - Σωστή. Αντί για χρήση static στην add_book_info, θα µπορούσατε να περνάτε ως τελευταία παράµετρο το &books[count-1] 1996 PASS - Πριν προσπελάσετε το argv πρέπει να ελέγχετε το argc για να είστε σίγουροι ότι έχουν δοθεί τα ζητούµενα στη γραµµή εντολής. - Δεν είναι σωστή η χρήση strcmp. Πιθανώς να εννοούσατε strstr αλλά ούτε αυτό θα ήταν σωστό, γιατί θελουµε να τσεκάρουµε έναν-έναν τους χαρακτήρες του delimiter, όχι όλους µαζί. Για παράδειγµα, στο xyabzbw µε delimiter BA θα έπρεπε να αντικατασταθούν µε \0 όλες οι εµφανίσεις του Β και η εµφάνιση του Α FAIL - Δεν υπάρχουν σχόλια. + Ακριβής χώρος. - Δεν χρειάζεται να αρχικοποιείτε τα constant strings σε πίνακες και το const char suffix[] = "@inf.uth.gr" είναι σωστό. - Επίσης το "." διαφέρει από το '.'. Το δεύτερο δεν έχει τερµατικό "\0" και δεν είναι string γιατί αποτελείται από ακριβώς 1 χαρακτήρα. - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Λάθος add_student_info(). Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Σωστή print_students() αλλά δεν χρησιµοποιείτε σωστά την print_students(). Έπρεπε να το κάνετε σε συνδυασµό µε το students_count. Δεν χρειαζόταν να χρησιµοποιήσετε κάποιο έλεγχο για '\0'. - Καλή δουλειά. - Δεν κάνει compile FAIL - Σχόλια OK. - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Λάθος add_student_info(). Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Σωστή print_students() και χρησιµοποιείτε σωστά την print_students() σε συνδυασµό µε το students_count. - Καλή δουλειά. - Δεν κάνει compile. 2001???? -Καλά σχόλια -Καλά ονόµατα µεταβλητών,σωστά πεδία στην struct -Σωστη η strip dashes -Σωστή χρήση της add books -Σωστό τύπωµα των βιβλίων -Σωστό init του πίνακα. -Είχε χαζό error στο compile. Να κάνετε πάντα ένα τελικό compile πριν στείλετε την άσκηση. Page 17

18 2004 FAIL - Δεν υπάρχουν σχόλια. + Ακριβής χώρος. - Επίσης το "." διαφέρει από το '.'. Το δεύτερο δεν έχει τερµατικό "\0" και δεν είναι string γιατί αποτελείται από ακριβώς 1 χαρακτήρα. - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Λάθος add_student_info(). Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Σωστή print_students() και χρησιµοποιείτε σωστά την print_students() σε συνδυασµό µε το students_count. - Καλή δουλειά. - Δεν κάνει compile. 2007???? - Ελάχιστα σχόλια. - Σωστή init_books(). - Σωστή αφαίρεση των '-' απο τον κωδικό ISBN10. - Σωστή add_book_info(). Μια βελτιστοποίηση είναι οτι η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&books[count-1]). - Σωστή print_students(). Επίσης για παράµετρο θα µπορούσατε να περνάτε το count αντί του MAX_BOOKS για να απαλείψετε τον έλεγχο κενής θέσης. - Δεν έχει γίνει κάτι σηµαντικό. Προσπαθήστε να την ολοκληρώσετε στο σπίτι. Κορδής Διαδικαστικά: γράφει section 3 αλλά νοµίζω είναι section PASS - Σχόλια: Ελάχιστα - Στοίχιση: ΟΚ - Σταθερές: ΟΚ - Ονόµατα µεταβλητών: ΟΚ - Τύποι πεδίων struct: ΟΚ - ορθότητα create ΟΚ - ορθότητα print: ΟΚ - ορθότητα add: ΟΚ - ορθότητα init: ΟΚ - ορθότητα sprintf: ΟΚ - κλήση συναρτήσεων: ΟΚ - Γενικά: Σωστός τρόπος περάσµατος της επόµενης κενής θέσης. - Compiler Errors - Πολύ καλή δουλειά, µπράβο PASS - Πριν προσπελάσετε το argv πρέπει να ελέγξετε την τιµή του argc ώστε να είστε σίγουροι ότι δόθηκαν τα ζητούµενα strings στη γραµµή εντολής. - Σωστή κατά τα άλλα Page 18

19 2013 FAIL -Στοίχιση οκ -Δεν υπάρχουν σχόλια -Καλά ονόµατα µεταβλητών -Μέσα στη struct το µέγεθος του isbn δεν είναι MAX_BOOKS αλλά ISBN10 -Δεν υλοποιείται σωστά τη συνάρτηση strip_dashes -Δεν υλοποιείται σωστά τη συνάρτηση add_book -Στην print_books σωστά περνάτε σα παράµετρο το count και δεν εκτυπώνεται µέχρι το MAX -Στην init αφού περνάτε το ΜAX_BOOKS σα παράµετρο στο len έπρεπε να είχατε στο for (i=0; i<len; i++) -Σωστά υλοποιείται τις sprintf -Πρώτα έπρεπε να καλέσετε την strip_dashes και µετά την add_book_info -Σωστά καλείται την print_book -Δεν έγινε 2017 PASS Άσκηση 1η: - Πολύ καλή δουλειά! Μπράβο - Σωστή στοίχιση - Σωστά σχόλια - Σωστός ορισµός των πεδίων struct - Σωστή υλοποίηση της init_books - Σωστή υλοποίηση της add_book_info: Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - Σωστή υλοποίηση της strip_dashes - Σωστή υλοποίηση της print_books Άσκηση 2η: - Σωστή αρχικοποίηση πίνακα pointers - Σωστή χρήση argc, argv - Σωστά έχετε υλοποιήσει την εύρεση υποέκφρασης. Δείτε την λύση και ξανα προσπαθήστε το σπίτι τα υπόλοιπα στο σπίτι. -Δεν κάνει compile, και φαίνεται να είναι από λάθος απροσεξίας. Να κάνετε πάντα ένα τελικό compile πριν στείλετε τις ασκήσεις σας FAIL -Το πρόγραµµα τερµατίζει µε Segmentation fault -Σωστά χρησιµοποιείται τo argv[], δεν ελέγχετε πουθενά αν δόθηκε στη γραµµή εντολών 2 string -Δεν υλοποιείται σωστά το πρόγραµµα Διαδικαστικά ΟΚ Άσκηση 1η 2022 FAIL - Στοίχιση: Σωστή - Σχόλια: ΟΚ - ορισµός πεδίων struct student: ΟΚ, το πρόθεµα str_ δεν ήταν απαραίτητο. - init_students: ΟΚ, σωστή αρχικοποίηση. Θα µπορούσατε να αρχικοποιήσετε µόνο τον 1 χαρακτήρα σε '\0', καθώς µόνο αυτό ελέγχετε στην add_student_info. - create_ ΟΚ - add_student_info: Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - print_students: ΟΚ. Εναλλακτικά (οµοίως µε την add_student_info), αντί να ψάχνετε για τις κατειληµµένες θέσεις θα µπορούσατε να περνάτε τον αριθµό των θέσεων που έχουν καταληφθεί. Άσκηση 2η - Στοίχιση: ΟΚ - Έγινε µόνο η αρχικοποίηση του πίνακα δεικτών. Page 19

20 2024 PASS -Καλά σχόλια -Σωστο αποτέλεσµα της strip_dashes. Αλλά επειδή χρησιµοποιέιτε την for µέχρι j<isbn10 το [j+1] θα βγαίνει εκτος ορίων του πίνακα, πράγµα που δεν είναι σωστό. -Σωστη η add books. Θα µπορούσατε αντί να ψάχνετε το πρώτο ελεύθερο πεδίο του πίνακα των structs να στέλνετε στην συνάρτηση τον δείκτη προς την διεύθυνση που θέλετε να περάσετε. -Σωστή η init books -Σωστό τύπωµα των βιβλίων -Σωστά ελέγχετε άν ο χρήστης έδωσε στην γραµµή εντολών είσοδο. -Πολύ λίγα σχόλια -Δεν βγάζει σωστό αποτέλεσµα, αλλά φαίνεται οτι την δουλέψατε 2026???? - Ελάχιστα σχόλια. - Σωστή init_books(). - Σωστή αφαίρεση των '-' απο τον κωδικό ISBN10. - Σωστή add_book_info(). Μια βελτιστοποίηση είναι οτι η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο κατευθείαν τον pointer στην πρώτη ελεύθερη θέση (&books[count-1]). - Σωστή print_students(). Επίσης για παράµετρο θα µπορούσατε να περνάτε το count αντί του MAX_BOOKS για να απαλείψετε τον έλεγχο κενής θέσης. - Δεν έχει γίνει κάτι σηµαντικό. Προσπαθήστε να την ολοκληρώσετε στο σπίτι. Διαδικαστικά ΟΚ Άσκηση 1η 2028 PASS - Η θέση των σχολίων είναι πάνω από τις συναρτήσεις και όχι δίπλα από αυτές, έτσι ώστε να διατηρούµε ένα πλάτος κώδικα περίπου στις 100 στήλες. Περιεχόµενο σχολίων ΟΚ. - ορισµός πεδίων struct student: ΟΚ - init_students: ΟΚ, σωστή αρχικοποίηση. Θα µπορούσατε να αρχικοποιήσετε µόνο τον 1 χαρακτήρα σε '\0', καθώς µόνο αυτό ελέγχετε στην add_student_info. - create_ ΟΚ - add_student_info: ΟΚ. Εναλλατικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - print_students: ΟΚ. Εναλλακτικά (οµοίως µε την add_student_info), αντί να ψάχνετε για τις κατηλληµένες θέσεις θα µπορούσατε να περνάτε τον αριθµό των θέσεων που έχουν καταληφθεί. Άσκηση 2η - Για τα σχόλια ισχύει ότι και στην άσκηση 1. Αν έχετε απορίες ρωτήστε µας. - Σωστή χρήση argc, argv. Θα µπορούσατε να ελέγχετε εάν πράγµατι έχει βάλει ο χρήστης τουλάχιστον 2 ορίσµατα και σε διαφορετική περίπτωση να τερµατίζετε το πρόγραµµα. - Αλγοριθµικά ΟΚ, το πρόγραµµα δουλεύει καλά. Καλή προσπάθεια. Εξοικειωθείτε στη χρήση του το gdb, ώστε να εντοπίζετε τα λάθη σας στο µέλλον. Page 20

21 2029???? Άσκηση 1η: - Σωστή στοίχιση - Έλλειψη σχολίων - Σωστός ορισµός των πεδίων struct - Σωστή υλοποίηση της init_books - Σωστή υλοποίηση της add_book_info: Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - Έχετε 2 bugs Καλείτε strip_dashes( format_str ); Μάλλον εννοείτε strip_dashes( isbn ); add_book_info(&title[count-1], &author[count-1], &isbn[count-1], &books_array[count-1]); Γιατί [count -1] ; Μάλλον θέλατε το εξης: add_book_info(title, author, isbn, &books_array[count-1]); Δείτε την λύση. Άσκηση 2η: - Δεν χρησιµοποιείτε argc, argv - Δείτε την λύση και ξανα προσπαθήστε το σπίτι τα υπόλοιπα στο σπίτι FAIL - Σχόλια OK. - Σωστή init_students(), θα µπορούσατε να αρχικοποιήσετε τα strings απλά µε ένα '\0' σαν πρώτο χαρακτήρα. - Λάθος add_student_info(). Η αναζήτηση µπορεί να παραληφθεί εάν περνάτε σαν παράµετρο - Σωστή print_students() αλλά δεν χρησιµοποιείτε σωστά την print_students(). Έπρεπε να το κάνετε σε συνδυασµό µε το students_count. Δεν χρειαζόταν να χρησιµοποιήσετε κάποιο έλεγχο για '\0'. - Καλή δουλειά. - Δεν κάνει compile. 2031???? Άσκηση 1η: - Σωστή στοίχιση - Έλλειψη σχολίων - Σωστός ορισµός των πεδίων struct - Σωστή υλοποίηση της init_books - Σωστή υλοποίηση της add_book_info: Εναλλακτικά, αντί να ψάχνετε την 1η κενή θέση θα µπορούσατε να χρησιµοποιήσετε ένα counter στη main και να περνάτε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - Έχετε 2 bugs Καλείτε strip_dashes( format_str ); Μάλλον εννοείτε strip_dashes( isbn ); add_book_info(&title[count-1], &author[count-1], &isbn[count-1], &books_array[count-1]); Γιατί [count -1] ; Μάλλον θέλατε το εξης: add_book_info(title, author, isbn, &books_array[count-1]); Δείτε την λύση. Άσκηση 2η: - Δεν χρησιµοποιείτε argc, argv - Δείτε την λύση και ξανα προσπαθήστε το σπίτι τα υπόλοιπα στο σπίτι. - Σωστή. Αντί για χρήση static στην add_book_info, θα µπορούσατε να περνάτε ως τελευταία παράµετρο το &books[count-1] 2032 PASS - Πριν προσπελάσετε το argv πρέπει να ελέγχετε το argc για να είστε σίγουροι ότι έχουν δοθεί τα ζητούµενα στη γραµµή εντολής. - Δεν είναι σωστή η χρήση strcmp. Πιθανώς να εννοούσατε strstr αλλά ούτε αυτό θα ήταν σωστό, γιατί θελουµε να τσεκάρουµε έναν-έναν τους χαρακτήρες του delimiter, όχι όλους µαζί. Για παράδειγµα, στο xyabzbw µε delimiter BA θα έπρεπε να αντικατασταθούν µε \0 όλες οι εµφανίσεις του Β και η εµφάνιση του Α. Page 21

22 2033 PASS - Καλά σχόλια. - Σωστοί τύποι και περιγραφικά ονόµατα πεδίων του struct. Καλό είναι να δηλώνετε σε διαφορετική γραµµή το κάθε πεδίο. - Στην init_students() καλό είναι να αρχικοποιείτε όλες τις θέσεις µνήµης. - Σωστή add_student_info(), αν και θα µπορούσατε να την γράψετε πιο απλά. - Επίσης αντί να κάνετε αναζήτηση για την πρώτη κενή θέση µέσα στην συνάρτηση, θα µπορούσατε να περνάτε την πρώτη κενή θέση σαν πρώτη παράµετρο (&students[count-1]) από την main. - Σωστή print_students() και εκτύπωση µόνο των γεµάτων θέσεων. - Καλά σχόλια. - Το πρόγραµµα τερµατίζει µε sgmentation fault. - Δεν ελέγχετε την τιµή επιστροφής της strstr(). Εάν ο delimiter δεν βρεθεί η επιστρεφόµενη τιµή είναι NULL. - Τα στοιχεία του πίνακα table_ptr είναι pointers αρχικοποιηµένοι σε NULL. Οπότε όταν βρεθεί µία συµβολοσειρά χαρακτήρων '*' µεγέθους len, έπρεπε να αποθηκεύετε την διεύθυνση που ξεκινά (start_ptr) στην θέση table_ptr[len-1]. - Η print_aterisks() πρέπει να εκτυπώνει µόνο '*' PASS - Καλά σχόλια. - Σωστοί τύποι και περιγραφικά ονόµατα πεδίων του struct. - Σωστή init_students(). - Σωστή add_student_info(). Αντί για την έξτρα παράµετρο που περνάτε, µπορείτε να περνάτε - Σωστή print_students() και εκτύπωση µόνο των γεµάτων θέσεων. - Καλά σχόλια. - Σωστή print_asterisks(). - Η προσθήκη του delimiter στο τέλος του αρχικού string, µε τον τρόπο που είναι γραµµένη δεν είναι ασφαλής εντολή. Εκτός του ότι µπορεί η είσοδος να έχει ήδη στο τέλος delimiter, το βασικότερο πρόβληµα είναι πως τροποποιούµε µνήµη που δεν γνωρίζουµε το µέγεθος της. Δεν υπάρχει τρόπος να εγγυηθούµε ότι µετά το τέλος του argv[i] υπάρχει διαθέσιµος κενός χώρος ή εάν θα βγούµε εκτός ορίων του πίνακα όπου βρίσκεται αποθηκευµένη η συµβολοσειρά. 2036???? Άσκηση 1η: - Πολύ καλή δουλειά! Μπράβο! - Σωστή στοίχιση - Σωστά σχόλια - Σωστός ορισµός των πεδίων struct - Σωστή υλοποίηση της init_books - Σωστή υλοποίηση της add_book_info: Πολύ σωστά χρησιµοποιήσετε τον counter στη main για να περνετε την διεύθυνση της 1ης κενής θέσης στον πίνακα των structs. - Σωστή υλοποίηση της strip_dashes - Σωστή υλοποίηση της print_books Άσκηση 2η: - Σωστή αρχικοποίηση πίνακα pointers - Σωστή χρήση argv, αλλά αν το argc δεν είναι 3, τότε θα εκτελεστεί η δεύτερη for ενώ δε θα έπρεπε γιατί το delimiter δεν έχει πάρει τιµή. - Ξανα προσπαθήστε τα υπόλοιπα στο σπίτι. Page 22

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1 ΑΕΜ ΒΑΘΜΟΣ 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 Οριακό

Διαβάστε περισσότερα

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

Διαβάστε περισσότερα

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h Α.Μ. 1375 FAIL 1413 1417 1420 1421 FAIL 1422 FAIL 1424 1425 FAIL 1426 FAIL - Πρώτα να ελέγχετε αν η malloc επέστρεψε NULL και µετά να προσπαθείτε να προσπελάσετε τη δεσµευµένη µνήµη - Όταν διαβάζετε string

Διαβάστε περισσότερα

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS lab7 Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 1242 1243 1244 1246 - Η συνθήκη του do/while είναι λάθος µε αποτέλεσµα να µπορεί ο χρήστης να βάζει στοιχεία περισσότερα του SIZE. - Στην συνθήκη

Διαβάστε περισσότερα

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string. Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 1242 1243 - Πολύ καλή δουλειά κατά τα άλλα, µπράβο. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.h

Διαβάστε περισσότερα

lab7 PASS -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. PASS -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Πρόσεξε την στοίχισή σου!

lab7 PASS -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. PASS -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Πρόσεξε την στοίχισή σου! AEM 0001 0002 0003 COMMENTS -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Πρόσεξε την στοίχισή σου! -Τυπώνεις 1,2,3 αντί για AVAILABLE, RESERVED,

Διαβάστε περισσότερα

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο

Διαβάστε περισσότερα

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα.

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1349 FAIL Δεν ελήφθη άσκηση 1482 1556 1559 1562 1563 1565 1566 FAIL - Στην initialize πρέπει να κάνετε έλεγχο αν η malloc αποτυγχάνει για κάθε κλήση της, άρα και για δέσµευση χώρου για

Διαβάστε περισσότερα

-Δεν έχεις σχόλια, καλό θα ήταν να έχεις πιο περιγραφικό σχόλιο στην αρχή

-Δεν έχεις σχόλια, καλό θα ήταν να έχεις πιο περιγραφικό σχόλιο στην αρχή Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Λάθος θέµα e-mail. -Πολύ καλή προσπάθεια, σωστά αποτελέσµατα χωρίς λάθη αλλά µε Υπάρχει µια προειδοποίηση σχετικά µε την εκτύπωση printf της θέσης. -Ωραία περιγραφικά σχόλια, αλλα καλό

Διαβάστε περισσότερα

lab9grades -Έπρεπε να χρησιµοποιήσεις την sprintf για το formatting των strings.

lab9grades -Έπρεπε να χρησιµοποιήσεις την sprintf για το formatting των strings. ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 449 οριακό PASS - Η µεταβλητή aukswn_aritmos είναι περιττή. Μπορούσες να χρησιµοποιήσεις i+1 στη θέση της. - Σωστή αριθµητική δεικτών - Καλή στοίχιση, σχόλια 451 PASS -Καλή στοίχιση -Καλά

Διαβάστε περισσότερα

lab14grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ

lab14grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 lab14grades - Σωστός έλεγχος του argc για όλες τις περιπτώσεις. - Θα έπρεπε να καλέσεις τη συνάρτηση strlen_r και στην περίπτωση του κενού string, strlen_r("\0"). - Σωστή χρήση

Διαβάστε περισσότερα

lab11 - Να εκτυπώνεις πιο κατατοπιστικά µηνύµατα λάθους. Αν είναι όλα ίδια, δεν είναι ξεκάθαρο ποιο αρχείο έχει πρόβληµα.

lab11 - Να εκτυπώνεις πιο κατατοπιστικά µηνύµατα λάθους. Αν είναι όλα ίδια, δεν είναι ξεκάθαρο ποιο αρχείο έχει πρόβληµα. Α. Μ. Βαθμός Σχόλια 1183 FAIL - Πρώτα ελέγχουµε το argc και µετά κάνουµε προσπάθεια να προσπελάσουµε το argv. - Λάθος στην ανάγνωση του πρώτου αρχείου. Κάθε φορά που κάνεις fgetc διαβάζεις τον επόµενο

Διαβάστε περισσότερα

lab10grades - Το αποτέλεσµα της τοµής θα έπρεπε να εµφανίζετε µέσα σε εισαγωγικά "Helo".

lab10grades - Το αποτέλεσµα της τοµής θα έπρεπε να εµφανίζετε µέσα σε εισαγωγικά Helo. ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ - Δεν χρησιµοποιείτε καλά ονόµατα µεταβλητών και παραµέτρων στις συναρτήσεις. - Σωστή χρήση της fgets. - Σωστός εντοπισµός του \n και αντικατάσταση µε \0. - Ο χαρακτήρας τερµατισµού \0

Διαβάστε περισσότερα

lab9grades Άσκηση 1 - Σωστοί τύποι (παραµέτρων και επιστρεφόµενης τιµής) της series_cosh.

lab9grades Άσκηση 1 - Σωστοί τύποι (παραµέτρων και επιστρεφόµενης τιµής) της series_cosh. ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ - Μέτρια σχόλια. 00497 PASS - Σωστοί τύποι (παραµέτρων και επιστρεφόµενης τιµής) της factorial. - Σωστοί τύποι (παραµέτρων και επιστρεφόµενης τιµής) της series_cosh. - Καλά ονόµατα µεταβλητών

Διαβάστε περισσότερα

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1 Επειδή αρκετοί εξακολουθείτε να βάζετε σχόλια στην ίδια γραµµή αλλά πολύ πιο "δεξιά" από τον κώδικα που σχολιάζουν, δείτε παρακάτω πώς µοιάζει ένα τέτοιο πρόγραµµα σε συµβατικό terminal. Όπως έχουµε πει

Διαβάστε περισσότερα

FAIL PASS PASS οριακά

FAIL PASS PASS οριακά AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον

Διαβάστε περισσότερα

Sheet1_2. - Δεν υπάρχουν σχόλια συναρτήσεων - Να χρησιµοποιείς πιο περιγραφικά ονόµατα µεταβλητών (και σίγουρα όχι απλούς χαρακτήρες όπως c, d) Page 1

Sheet1_2. - Δεν υπάρχουν σχόλια συναρτήσεων - Να χρησιµοποιείς πιο περιγραφικά ονόµατα µεταβλητών (και σίγουρα όχι απλούς χαρακτήρες όπως c, d) Page 1 AEM 0001 0002 0003 0004 0005 0006 0007 COMMENTS οριακά -Υπολογίζεις λάθος τα στατιστικά. -Δεν βάζεις τα σχόλια µε βάση τις προδιαγραφές του φυλλαδίου. -Πρόσεξε λίγο την στοίχιση σε κάποια σηµεία. - Τα

Διαβάστε περισσότερα

lab7grades -Σωστή χρήση της sprintf -Σωστά ανιχνεύετε τον χαρακτήρα που πρέπει να αφαιρέσετε. -Σωστή µεταφορά στοιχείων µια θέση αριστερά.

lab7grades -Σωστή χρήση της sprintf -Σωστά ανιχνεύετε τον χαρακτήρα που πρέπει να αφαιρέσετε. -Σωστή µεταφορά στοιχείων µια θέση αριστερά. 00497 Άσκηση1 -Σωστή στοίχιση. -Σωστή χρήση σταθερών. -Σωστά ονόµατα µεταβλητών. -Σωστή χρήση της sprintf. Το sprintf(formatstring, "%%%ds", INIT_SIZE 1); αρκεί να γραφτεί µια φορά. -Σωστή χρήση των συναρτήσεων

Διαβάστε περισσότερα

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση.

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση. Sheet1_2 AEM 0001 0002 0003 0004 0006 COMMENTS - Segmentation fault λόγω λάθους στην αναδροµή. Δες τη λύση, αλλά προσπάθησε να το ξανακάνεις και στο σπίτι για εξ - Πρόσεχε λίγο τη στοίχιση - Καλή δουλειά

Διαβάστε περισσότερα

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Δεν κάνει compile και το λάθος είναι σηµαντικό: Το head1 είναι δείκτης σε struct, εποµένως η προσπέλαση πεδίου γίνεται 321 FAIL µε head1->next και όχι head1.next. Επιπλέον, έχετε λάθος

Διαβάστε περισσότερα

lab7grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ

lab7grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 449 Η strcpy αντιγράφει µια γραµµή, οπότε δεν έπρεπε να βρίσκεται µέσα σε διπλό loop. Η εκτύπωση δεν έπρεπε να βρίσκεται µέσα στο loop που γίνεται η αντιγραφή, αλλά να είναι ανεξάρτητη

Διαβάστε περισσότερα

lab6grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ Διαδικαστικά: Όλα οκ.

lab6grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ Διαδικαστικά: Όλα οκ. ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ Διαδικαστικά: Όλα οκ. 449 451 οριακό PASS οριακό PASS, αλλά τα ονόµατα σταθερών γράφονται πάντα µε κεφαλαία για να ξεχωρίζουν. Το max έπρεπε να ήταν MAX. - Ονόµατα µεταβλητών: Καλά, εκτός

Διαβάστε περισσότερα

lab6grades - Δεν έχετε δηλώσει το βαθµό βάσης ως σταθερά. - Το µήνυµα εισόδου θέλει χαρακτήρα κενού ' ' στο τέλος και όχι TAB '\t'.

lab6grades - Δεν έχετε δηλώσει το βαθµό βάσης ως σταθερά. - Το µήνυµα εισόδου θέλει χαρακτήρα κενού ' ' στο τέλος και όχι TAB '\t'. 00497 PASS - Τα ονόµατα των µεταβλητών θα µπορούσαν να ήταν λίγο πιο περιγραφικά. - Το µήκος του πίνακα θα έπρεπε να δωθεί ως σταθερά πριν τη main µε την εντολή #define SIZE 5 και όχι ως const. - Πολύ

Διαβάστε περισσότερα

οριακό PASS 402 PASS Πολύ σωστά, µπράβο οριακό PASS

οριακό PASS 402 PASS Πολύ σωστά, µπράβο οριακό PASS ΑΕΜ ΒΑΘΜΟΣ 357 402 Πολύ σωστά, µπράβο ΣΧΟΛΙΑ Λάθος στον υπολογισµό του πλήθους αστερίσκων. Δε µετράτε αυτούς της "κάτω" σειράς, οπότε το αποτέλεσµα δεν είναι σωστό. Η πράξη που κάνετε στη main είναι λάθος

Διαβάστε περισσότερα

Στην clearlist: - Όλα ok. οριακό PASS

Στην clearlist: - Όλα ok. οριακό PASS Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Στη main: - Αποθηκεύετε το αποτέλεσµα της removepart στη µεταβλητή curr, αλλά στην κλήση της clearlist µετά περνάτε την παλιά κεφαλή της λίστας (µεταβλητή list) η οποία δεν είναι πια

Διαβάστε περισσότερα

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την AEM ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1413. Σκέψου πώς θα µπορούσες να την 1417 κάνεις χωρίς χρήση της βοηθητικής µεταβλητής curr - Πρώτη άσκηση οκ - Στη δεύτερη άσκηση το free(head) δεν έπρεπε να είναι στο else, αλλά να

Διαβάστε περισσότερα

Μ.Σ. lab12grades FAIL. η συνθήκη για έξοδο είναι και αυτή σωστή. Οριακό PASS. στα string. - σωστή και η κλήση της συνάρτησης.

Μ.Σ. lab12grades FAIL. η συνθήκη για έξοδο είναι και αυτή σωστή. Οριακό PASS. στα string. - σωστή και η κλήση της συνάρτησης. ΒΑΘΜΟΣ ΣΧΟΛΙΑ - στην malloc που χρησιµοποιήσατε, δεν έχετε αφήσει χώρο για το \0 και χρησιµοποιείτε sizeof µε λάθος τρόπο. Στο τέλος που βάζετε το \0 είναι στην πραγµατικότητα σε µνήµη που δεν έχετε δεσµεύσει

Διαβάστε περισσότερα

ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ. 812 PASS Καλή δουλειά

ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ. 812 PASS Καλή δουλειά ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 812 Καλή δουλειά 887 926 FAIL 1040 FAIL Μη αναγνωρίσιµο φορµατ 1060 1138 FAIL Ηµιτελές - Άσχηµα ονόµατα µεταβλητών/πεδίων που κάνουν δυσνόητο τον κώδικα. Μη χρησιµοποιείτε µεταβλητές

Διαβάστε περισσότερα

Sheet1_2 FAIL. - To πρόγραµµα δεν κάνει compile Δεν παρέδωσε FAIL

Sheet1_2 FAIL. - To πρόγραµµα δεν κάνει compile Δεν παρέδωσε FAIL AEM 0001 0002 0003 COMMENTS οριακά -Η σταθερά για το µέγιστο µέγεθος του πίνακα έπρεπε να έχει τιµή 101 και όχι 100. -Έπρεπε να δεσµέυσεις δυναµικά και την µνήµη του αρχικού string και να το κάνεις free

Διαβάστε περισσότερα

Sheet PASS 1426 PASS 1428 PASS. Page 1

Sheet PASS 1426 PASS 1428 PASS. Page 1 Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ -Δεν εκτελείτε κάποιο loop για το πλήθος των επαναλήψεων που 1413 FAIL θα κληθεί η ανάγνωση και η εγγραφή από το αρχείο. -Το άνοιγµα και κλείσιµο του αρχείου γίνεται σωστά. Έχετε αποστείλει

Διαβάστε περισσότερα

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα. Α. Μ. Βαθμός Σχόλιο 1183 lab2 - Πολύ καλή δουλειά κατά τα άλλα 1194 1238 1239 FAIL 1240 1241 1242 1243 1244 1245 1246 - πολύ καλό (*υπάρχουν οι τελεστές = ). Ο κώδικας είναι καλά σχολιασµένος -

Διαβάστε περισσότερα

- Σωστή χρήση του προσδιοριστή const για την σταθερά pi. Καλό θα ήταν επιλέξετε κεφαλαία γράµµατα για το όνοµα της σταθεράς.

- Σωστή χρήση του προσδιοριστή const για την σταθερά pi. Καλό θα ήταν επιλέξετε κεφαλαία γράµµατα για το όνοµα της σταθεράς. ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ - Σωστή χρήση του προσδιοριστή const για την σταθερά p. Καλό θα ήταν επιλέξετε κεφαλαία γράµµατα για το όνοµα της σταθεράς. - Στην printf("enter radius: \n"); ο χαρακτήρας αλλαγής γραµµής

Διαβάστε περισσότερα

Βαθμός Σχόλια. lab8. οριακά PASS 1194 PASS

Βαθμός Σχόλια. lab8. οριακά PASS 1194 PASS Α. Μ. Βαθμός Σχόλια 1183 1194 1195 FAIL 1238 1239 - Άσχηµα ονόµατα µεταβλητών (s, t) - Δε δεσµεύεις αρκετή µνήµη για τις λέξεις που αποθηκεύονται στον πίνακα (και γι αυτό τελικά το πρόγραµµά σου κάνει

Διαβάστε περισσότερα

Παράδοση άσκησης: Εστάλη με καθυστέρηση. Να μην επαναληφθεί Προσέξτε τις νέες οδηγίες για την ονομασία του φακέλου.

Παράδοση άσκησης: Εστάλη με καθυστέρηση. Να μην επαναληφθεί Προσέξτε τις νέες οδηγίες για την ονομασία του φακέλου. ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ Παράδοση άσκησης: Εστάλη με καθυστέρηση. Να μην επαναληφθεί Προσέξτε τις νέες οδηγίες για την ονομασία του φακέλου. 357 - Σωστά αποτελέσματα - Περιγραφικά ονόματα μεταβλητών. - Δεν έχετε

Διαβάστε περισσότερα

Τα ονόµατα των φακέλων πρέπει να έχουν το επίθετά σας και όχι τα username που χρησιµοποιείτε στα εργαστήρια.

Τα ονόµατα των φακέλων πρέπει να έχουν το επίθετά σας και όχι τα username που χρησιµοποιείτε στα εργαστήρια. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Άσκηση 1η - Θα µπορούσατε να κάνετε µία do while για τον έλεγχο της επιλογής και κατά συνέπεια, µια printf/scanf για την επιλογή - ΛΑΘΟΣ: δηλώσατε το τύπο της επιλογής σαν char ενώ θα

Διαβάστε περισσότερα

Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 321 FAIL

Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 321 FAIL Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 321 FAIL Άσκηση 1η: - Δεν βάζετε σχόλια στην αρχή του κώδικα - Στοίχιση οκ, τα ονόµατα των µεταβλητών καλό είναι να είναι πιο περιγραφικά - Δεν χρησιµοποιείτε #define για να ορίσετε

Διαβάστε περισσότερα

to post PASS PASS FAIL

to post PASS PASS FAIL AEM COMMENTS - Να δίνεις περιγραφικά ονόµατα σε όλες τις µεταβλητές (τι είναι τα k, flag, temp?) - Το.katastash πρέπει να γίνεται reset σε 0 στην euresh_grammatos, µετά από κάθε κλήση στη search_the_word.

Διαβάστε περισσότερα

Sheet3_2. Τα literals (3.0, 1.5, κτλ) πρέπει να ορίζονται ως σταθερές.

Sheet3_2. Τα literals (3.0, 1.5, κτλ) πρέπει να ορίζονται ως σταθερές. AEM LAB2 0001 Δεν είναι στοιχισµένες σωστά οι εντολές µέσα στη main. 0002 Η απόδειξη εκτυπώνεται όλη σε µία γραµµή, όχι όπως ζητά η εκφώνηση: Να χρησιµοποιείς \n στο printf. 0003 0004 Οι µεταβλητές πρέπει

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2015-2016 Προθεσµία: Πέµπτη 17/12/2015, 22:00 Διαβάστε πριν ξεκινήσετε Διαβάστε την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραµµά σας πριν

Διαβάστε περισσότερα

abistarakis PASS - Σωστή κατασκευή tgz και ονοµασία αρχείων

abistarakis PASS - Σωστή κατασκευή tgz και ονοµασία αρχείων Στις επόµενες σελίδες µπορείτε να δείτε ενδεικτικούς βαθµούς και σχόλια για το lab1. Επειδή αυτό ήταν το πρώτο εργαστήριο, οι βαθµοί δε θα µετρήσουν (δηλαδή όποιος βαθµολογήθηκε µε fail δε θα πάρει απουσία)

Διαβάστε περισσότερα

Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ. οριακό PASS

Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ. οριακό PASS Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 321 οριακό 1058 FAIL - Καλή δουλειά γενικά. - Πρόσεχε λίγο τα ονόµατα συναρτήσεων/µεταβλητών. Για παράδειγµα, το όνοµα integer δεν είναι καθόλου καλό γιατί δεν περιγράφει τι κάνει η

Διαβάστε περισσότερα

lab5grades Διαδικαστικά: όλα οκ, αλλά καθυστερήσατε στην αποστολή. Να προσέχετε να στέλνετε τις ασκήσεις σας εντός της προθεσµίας.

lab5grades Διαδικαστικά: όλα οκ, αλλά καθυστερήσατε στην αποστολή. Να προσέχετε να στέλνετε τις ασκήσεις σας εντός της προθεσµίας. ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ Διαδικαστικά: όλα οκ, αλλά καθυστερήσατε στην αποστολή. Να προσέχετε να στέλνετε τις ασκήσεις σας εντός της προθεσµίας. : 449 οριακό - Λάθος στους υπολογισµούς. Σε κάθε µία επανάληψη

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

Διαβάστε περισσότερα

lab5 -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο

lab5 -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο AEM 0001 0002 0003 0004 0005 0006 0007 0008 0009 0012 COMMENTS -Ο κώδικάς σου είναι σωστός αλλά από εδώ και στο εξής προσπάθησε να βάζεις σχόλια στην µορφή που ζητάει το φυλλάδιο commenting_standard.pdf.

Διαβάστε περισσότερα

Παράδοση άσκησης: οκ, αλλά προσέξτε τις νέες οδηγίες για την ονοµασία του φακέλου.

Παράδοση άσκησης: οκ, αλλά προσέξτε τις νέες οδηγίες για την ονοµασία του φακέλου. ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ Άσκηση 1: -Σωστά αποτελέσµατα και σωστή έξοδος. -Δεν έχετε περιορισµό στην scanf για την ανάγνωση strings. Δηµιουργείτε το format του string µε χρήση της µεθόδου µε το sprintf αλλά δεν

Διαβάστε περισσότερα

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

Διαβάστε περισσότερα

Άσκηση 2: -Δεν παραδόθηκε. Το εµαιλ είχε λάθος θέµα. Έπρεπε να είναι CE120 lab6

Άσκηση 2: -Δεν παραδόθηκε. Το εµαιλ είχε λάθος θέµα. Έπρεπε να είναι CE120 lab6 Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Λάθος όνοµα αρχείου.το επίθετο βάζουµε όχι το όνοµα. 1058 FAIL -Έχεις συντακτικά λάθη και προειδοποιήσεις στο πρόγραµµα σου. -Υπαρξη σχολίου στη πρώτη γραµµή. -Σωστή δήλωση και χρήση

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 13/1/13, 22:00 Περιεχόµενα Διαδικαστικά Εκφώνηση άσκησης (Στάδιο 0, Στάδιο 1, Στάδιο 2, Στάδιο 3, Στάδιο 4, Στάδιο 5) Οδηγίες

Διαβάστε περισσότερα

- Ο τελευταίος έλεγχος στη συνάρτηση είναι περιττός. Αν έχει φτάσει µέχρι εκεί το πρόγραµµα, τότε αναγκαστικά το µήκος είναι >= του PASSWD_MIN_LEN.

- Ο τελευταίος έλεγχος στη συνάρτηση είναι περιττός. Αν έχει φτάσει µέχρι εκεί το πρόγραµµα, τότε αναγκαστικά το µήκος είναι >= του PASSWD_MIN_LEN. 7/1/2014 ΣΗΜΑΝΤΙΚΗ ΑΝΑΚΟΙΝΩΣΗ: Όπως ακούσατε και στο σηµερινό µάθηµα, θα υπάρξει ειδική ρύθµιση όσον αφορά τις εξετάσεις για όσους φοιτητές δεν πληρούν τις προϋποθέσεις είτε για τα quiz είτε για τις απουσίες

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσµία: 22/12/2016, 21:00 Διαδικαστικά Η εργασία αυτή µπορεί να γίνει σε οµάδες µέχρι 2 ατόµων. Δεν είναι απαραίτητο να συνεργαστείτε

Διαβάστε περισσότερα

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

Διαβάστε περισσότερα

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

lab2grades - Στη scanf υπολογίζετε τουλάχιστον 5 χαρακτήρες %5.2f προδιαγραφές που ζητούνται στην εκφώνηση. -

lab2grades - Στη scanf υπολογίζετε τουλάχιστον 5 χαρακτήρες %5.2f προδιαγραφές που ζητούνται στην εκφώνηση. - Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1375 - Καλή στοίχηση, σωστά ονόµατα µεταβλητών, όµως δεν έχετε δηλώσει ως σταθερές το ΦΠΑ και την τιµή ανά τετραγωνικό µέτρο για τη µοκέτα. - Στη scanf υπολογίζετε τουλάχιστον 5 χαρακτήρες

Διαβάστε περισσότερα

lab5grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ ΑΣΚΗΣΗΣ ΑΛΛΑ ΣΧΟΛΙΑ

lab5grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ ΑΣΚΗΣΗΣ ΑΛΛΑ ΣΧΟΛΙΑ 00497 PASS 02103 PASS - Δεν έχει γίνει καθόλου χρήση σταθερών όπως έχουµε ζητήσει να γίνεται για όλες τις σταθερές τιµές. - Υπάρχουν σχόλια αλλά θα µπορούσαν να ήταν πιο επεξηγηµατικά και λίγο περισσότερα

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό (με. τη C) Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

Διαβάστε περισσότερα

Δεν έστειλες την άσκηση 1, και αυτό που έστειλες ήταν σκέτο αρχείο, όχι το tgz που ζητούσε η εκφώνηση.

Δεν έστειλες την άσκηση 1, και αυτό που έστειλες ήταν σκέτο αρχείο, όχι το tgz που ζητούσε η εκφώνηση. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Οκ 321 PASS -Το σχόλιο στην αρχή του προγράµµατος δεν είναι περιγραφικό. -Προσπάθησε να χρησιµοποιείς πιο περιγραφικά ονόµατα µεταβλητών για να αποφεύγεις και τα πολλά σχόλια στον κώδικα.

Διαβάστε περισσότερα

Πανεπιστήµιο Θεσσαλίας, THMMY HY120, Σεπτέµβριος 2015 ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Πανεπιστήµιο Θεσσαλίας, THMMY HY120, Σεπτέµβριος 2015 ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΝΟΜΑΤΕΠΩΝΥΜΟ: AEM: ΜΕΡΟΣ Α: ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΩΝ ΕΠΙΛΟΓΩΝ [15 µονάδες] ΣΗΜΑΝΤΙΚΕΣ ΔΙΕΥΚΡΙΝΙΣΕΙΣ: Επιλέξτε ΜΙΑ σωστή απάντηση για κάθε ερώτηση. Λάθος απαντήσεις βαθµολογούνται αρνητικά Σε ερωτήσεις που

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 2:Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)- Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγικές Έννοιες σε Strings(Αρχικοποίηση, Ανάγνωση & Εκτύπωση) Πίνακες από Strings

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσµία: 7/1/2014, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

Διαβάστε περισσότερα

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

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

Διαβάστε περισσότερα

Βαθμός Σχόλιο. lab3_grades

Βαθμός Σχόλιο. lab3_grades Α. Μ. Βαθμός Σχόλιο 1183 1194 - Το πρόγραµµα πέφτει σε ατέρµονο loop γιατί στο while δεν έχει scanf ώστε να διαβάζει νέα επιλογή, η τιµή της επιλογής δε µπορεί να γίνει ποτέ 5 ή 6 για να τερµατίσει. -

Διαβάστε περισσότερα

ΑΕΜ ή username. Sheet2

ΑΕΜ ή username. Sheet2 ΑΕΜ ή username ΒΑΘΜΟΣ 357 ΣΧΟΛΙΑ - Σωστοί τύποι και περιγραφικά ονόµατα µεταβλητών. Αν το price_euro το είχατε price_euro_liter (όπως κάνατε και µε το price_dollar_gallon) δε θα χρειαζόταν καν διευκρινιστικό

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

lab4grades Παράδοση ασκήσεων: -Όλα καλά Άσκηση 1η: -Σωστή 357 PASS

lab4grades Παράδοση ασκήσεων: -Όλα καλά Άσκηση 1η: -Σωστή 357 PASS ΑΕΜ ΒΑΘΜΟΣ -Όλα καλά ΣΧΟΛΙΑ η: -Σωστή 357 PASS η: -Ο κώδικας για την είσοδο του µητρώου πρέπει να δοµηθεί αλλιώς γιατί εµφανίζει λάθος πριν καν δοθεί για πρώτη φορά το µητρώο. -Σωστή στοίχιση, µοναδική

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσμία: 17/1/14, 22:00 Περιεχόμενα Διαδικαστικά Οδηγίες Αποστολής Εκφώνηση άσκησης (Στάδιο 0, Στάδιο 1, Στάδιο 2, Στάδιο 3, Στάδιο

Διαβάστε περισσότερα

403 FAIL Λάθος στο πακετάρισµα του αρχείου.

403 FAIL Λάθος στο πακετάρισµα του αρχείου. ΑΕΜ ΒΑΘΜΟΣ 357 FAIL Λάθος στο πακετάρισµα του αρχείου. ΣΧΟΛΙΑ 400 FAIL 402 Έπρεπε να στείλετε ΜΟΝΟ το lab11.c Λάθος αλγόριθµος. Αµέσως µόλις συναντήστε κόµβο όπου το curr->number είναι διάφορο του number,

Διαβάστε περισσότερα

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Στόχοι Συµβολοσειρές, πίνακες Πριν ξεκινήσετε Βήµα 1: Πηγαίνετε στο φάκελο ce120 και κατασκευάστε µέσα σε αυτόν ένα φάκελο µε όνοµα

Διαβάστε περισσότερα

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος

Διαβάστε περισσότερα

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2009-20010 Προθεσµία: 15/11/09, 23:59 Στόχοι Χρήση συναρτήσεων Χρήση µονοδιάστατων πινάκων Διαχείριση συµβολοσειρών Φορµαρισµένη έξοδος δεδοµένων

Διαβάστε περισσότερα

Ενδεικτικές λύσεις και στατιστικά

Ενδεικτικές λύσεις και στατιστικά Προγραμματισμός 1 Σύντομο Quiz 25/9/9 Ενδεικτικές λύσεις και στατιστικά Ερώτηση 1: Γράψτε παρακάτω συνάρτηση η οποία δέχεται ως παραμέτρους ένα string και ένα χαρακτήρα και επιστρέφει τον αριθμό των εμφανίσεων

Διαβάστε περισσότερα

Διάλεξη 5: Δείκτες και Συναρτήσεις

Διάλεξη 5: Δείκτες και Συναρτήσεις Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 5: Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 5-1 Περιεχόμενο

Διαβάστε περισσότερα

Λύσεις για τις ασκήσεις του lab5

Λύσεις για τις ασκήσεις του lab5 Εισαγωγή Λύσεις για τις ασκήσεις του lab5 Επειδή φάνηκε να υπάρχουν αρκετά προβλήματα σχετικά με τον τρόπο σκέψης για την επίλυση των προβλημάτων του lab5, θα συνοδεύσουμε τις λύσεις με αρκετές επεξηγήσεις,

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 18/12/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Οδηγίες αποστολής άσκησης Διαδικαστικά Η εργασία

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσµία: Τετάρτη 7/12/2016, 21:00 Διαβάστε πριν ξεκινήσετε Διαβάστε όλη την εκφώνηση προσεκτικά πριν ξεκινήσετε να γράφετε κώδικα.

Διαβάστε περισσότερα

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

Διαβάστε περισσότερα

lab3grades - Δεν παραδόθηκε. - Προσπαθήστε να κάνετε την άσκηση στο σπίτι.

lab3grades - Δεν παραδόθηκε. - Προσπαθήστε να κάνετε την άσκηση στο σπίτι. 02103 FAIL προγράµµατος µε κενές γραµµές -Δεν έχετε συµπεριλάβει καθόλου σχόλια!!! -Τα ονόµατα των σταθερών είναι µε ΚΕΦΑΛΑΙΑ. Επίσης, το 20 και το 1000 έπρεπε να είναι αποθηκευµένα σε σταθερές. - Έχετε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης

ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης Στο εργαστήριο αυτό θα μελετήσουμε τον τρόπο με τον οποίο ορίζουμε στην C πολυδιάστατους πίνακες και θα δούμε πώς μπορούμε να δεσμεύουμε

Διαβάστε περισσότερα

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

Διαβάστε περισσότερα

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Η C, όπως έχουμε αναφέρει, είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε για πρώτη φορά το 1972 από τον Dennis Ritchie στα AT&T Bell

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 Προθεσµία: 8/1/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις Με µαύρο τα κοµµάτια από την εκφώνηση. Με µπλε απαντήσεις κι επεξηγήσεις. Με κόκκινο τα πιο συχνά λάθη που είδαµε. Άσκηση Παρασκευής ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις Σε αυτή την άσκηση θα γράψετε ένα πρόγραµµα

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 5ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 Η ΕΝΤΟΛΗ for Με την εντολή for δημιουργούμε βρόχους επανάληψης σε

Διαβάστε περισσότερα

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) Κεφάλαιο 9.1-9.2 Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) ( ιάλεξη 19) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1) Strings στη C Ένα string είναι µία ακολουθία αλφαριθµητικών χαρακτήρων, σηµείων στίξης κτλ. Π.χ.

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010-2011 Προθεσµία: 5/12/10, 23:59 Στόχοι structs Πίνακες Συναρτήσεις Συµβολοσειρές Χρήση µεταβλητών και σταθερών Χρήση τελεστών Χρήση δοµών

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 14 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

lab3grades οριακό PASS

lab3grades οριακό PASS ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ - Αποστολή email: διαδικαστικά οκ, αλλά στείλατε την άσκηση µε δέκα λεπτά καθυστέρηση. Στο µέλλον τόσο µεγάλη καθυστέρηση θα είναι λόγος για fail γιατί η άσκηση θα θεωρείται εκπρόθεσµη.

Διαβάστε περισσότερα

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

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Στόχοι Αναδροµή Σηµείωση: Απαγορεύονται static και global µεταβλητές. Πριν ξεκινήσετε Πηγαίνετε στο φάκελο ce120 και κατασκευάστε µέσα

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 27/11/11, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 27/11/11, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 Προθεσµία: 27/11/11, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

Διαβάστε περισσότερα

lab4grades Παρακαλούµε µη γράφετε σχόλια στα ελληνικά!

lab4grades Παρακαλούµε µη γράφετε σχόλια στα ελληνικά! 02103 - Κατα σύµβαση οι σταθερές είναι δηλωµένες µε ΚΕΦΑΛΑΙΑ - Λάθος χρήση της scanf. Το γεγονός ότι η scanf είναι αρκετά "έξυπνη" δεν σηµαίνει ότι το µοτίβο που χρησιµοποιήσατε είναι σωστό. Έπρεπε να

Διαβάστε περισσότερα

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 3: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αριθμητική Δεικτών Δείκτες και Πίνακες Παραδείγματα Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσμία: Τετάρτη 23/11/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσμία: Τετάρτη 23/11/2016, 21:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσμία: Τετάρτη 23/11/2016, 21:00 Διαβάστε πριν ξεκινήσετε Διαβάστε την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραμμά σας στο

Διαβάστε περισσότερα