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

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

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

Transcript

1 Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Στη main: - Αποθηκεύετε το αποτέλεσµα της removepart στη µεταβλητή curr, αλλά στην κλήση της clearlist µετά περνάτε την παλιά κεφαλή της λίστας (µεταβλητή list) η οποία δεν είναι πια έγκυρη. Αυτό έχει ως αποτέλεσµα να τερµατίζει το πρόγραµµά σας µε segmentation fault FAIL FAIL - Όλα ok. Στη removepart: - Στην αναζήτηση για το first και end θα ήταν πιο "κοµψό" να κάνατε τους δύο ελέγχους στην ίδια εντολή if. - Έπρεπε να κάνετε έλεγχο αν το first είναι ίσο µε head, γιατί σε αυτή την περίπτωση η κεφαλή της λίστας αλλάζει. Επιπλέον, σε αυτή την περίπτωση το first->prev είναι NULL και η έκφραση first->prev->next θα οδηγήσει σε segmentation fault. - Έπρεπε να κάνετε έλεγχο αν το end->next είναι NULL, γιατί τότε η έκφραση end->next->prev θα οδηγήσει σε segmentation fault. -Μεταβλητές, στοίχιση, σχόλιο καλά. -Έχετε warning επειδή δηλώνετε µεταβλητή και δεν την χρησιµοποιείτε. -Ο έλεγχος που κάνετε στις for για την εύρεση της ηµεροµηνίας είναι λάθος. Η αναζήτηση θα σταµατήσει όταν θα βρει ίδιο µήνα και ίδια µέρα όπως θέλουµε, αλλά θα σταµατήσει και αν βρει ίδια µέρα χωρίς ίδιο µήνα ή ίδιο µήνα χωρίς ίδια µέρα. -Ο κώδικά σας πετάει segmentation fault. To πρόβληµα είναι στη clearlist όπου κάνετε προσπέλαση στο curr->next αφότου το curr έχει γίνει free, και ελέγχετε αν curr->next == NULL το οποίο πετάει segfault όταν το curr είναι αρχικά NULL. -Επίσης ο κώδικάς σας τρέχει και για την περίπτωση που δε βρει κάποια ηµεροµηνία, ενώ πετάει segmetation fault αν οι ηµεροµηνίες που θέλουµε είναι στην κεφαλή ή στο τέλος της λίστας. -Η clearlist είναι λάθος υλοποιηµένη. Κάθε φορά που θέλετε να σβήσετε κάποιο κόµβο έπρεπε να κρατάτε σε µια άλλη µεταβλητή πρώτα τον επόµενο και µετά να σβήνετε τον τωρινό. - Σωστός αλγόριθµος αναζήτησης των ηµεροµηνιών και έλεγχος αν η δεύτερη ηµεροµηνία έπεται της πρώτης. - Σωστή η clearlist. - Όµως πρέπει να ελέγχετε αν κάποια date είναι η κεφαλή της λίστας ή το τέλος µε start->prev==null όπου πρέπει να ανανεώνετε τη την κεφαλή της λίστας και µε end->next==null αντίστοιχα. - Επίσης, κάτι που η άσκηση ζητάει έµµεσα είναι να αποδεσµεύσετε και το χώρο από το κοµµάτι της λίστας που αφαιρείτε. Σε αυτή την περίπτωση πρέπει να κάνετε end->next=null; και να καλέσετε clearlist(start); -Μεταβλητές, σχόλιο, στοίχιση καλά. -Στη 2η for για την εύρεση της τελικής έπρεπε να ξεκινάτε από arxiki->next. -Αν εξαιρέσουµε το πιο πάνω η υλοποίησή σας δουλεύει σωστά αν δίνετε ενδιάµεσες ηµεροµηνίες. -Αν δοθούν ηµεροµηνίες που είναι στην κεφαλή ή στο τέλος της όπως και ηµεροµηνία που δεν υπάρχει τότε θα πετάξει segmetation fault. -Η clearlist είναι λάθος υλοποιηµένη. Κάθε φορά που θέλετε να σβήσετε κάποιο κόµβο έπρεπε να κρατάτε σε µια άλλη µεταβλητή πρώτα τον επόµενο και µετά να σβήνετε τον τωρινό.

2 1562 FAIL 1563 FAIL Οι δηλώσεις των συναρτήσεων βρίσκονται στο mylist.h, δεν χρειάζεται να τις ξαναδηλώσετε στο lab12.c - Στην main δεν καλείτε την printlist αφού έχετε εκτελέσει την removepart, όπως σας ζητείται στην εκφώνηση - Χρησιµοποιείτε µια βοηθητική συνάρτηση στην removepart, η οποία όµως έχει λάθος την συνθήκη της for... Το κοµµάτι ((current->date.day == search_date.day) && (current->date.month == search_date.month)); σηµαίνει ΟΣΟ βρίσκουµε ίδιες ηµεροµηνίες, η for συνεχίζει τις επαναλήψεις. Εφόσον βρεί date διάφορο του current->date, θα σταµατήσει. Άρα, η searchlist επιστρέφει κατά την πρώτη κλήση της το head και κατά την δεύτερη κλήση της το head->next. Αυτό οδηγεί σε segmentation fault παρακάτω στην removepart στην γραµµή 50, όπου γίνεται προσπέλαση του index_date1->prev->next (= index_date2->next;) το οποίο είναι ο δείκτης prev του κόµβου head, το οποίο είναι NULL - Στην removelist πρέπει να λάβετε υπόψη σας και άλλες ακραίες περιπτώσεις, όπως το date2 να είναι το τελευταίο ή το πρώτο στοιχείο της λίστας - Στην clearlist, αν το head είναι NULL, η συνθήκη του while θα προκαλέσει segmentation fault. Έπρεπε να είχατε while (current_node!= NULL) - Δεν φορτώνετε την stdlib.h µε αποτέλεσµα να µην αναγνωρίζει την free που χρησιµοποιείτε στην clearlist - Στην removepart δεν λαµβάνετε µέριµνα για καµία από τις παρακάτω περιπτώσεις (για τις οποίες προκαλείται segmentation fault): 1.Αν δεν βρεθεί η πρώτη ηµεροµηνία (δεν πρέπει να ξεκινάει καν η αναζήτηση για την δεύτερη ηµεροµηνία, αφού ο counter1->next είναι NULL) 2. Αν δεν βρεθεί η δεύτερη ηµεροµηνία, η συνάρτηση πρέπει να επιστρέψει τη λίστα όπως ήταν 3. Αν η πρώτη ηµεροµηνία είναι το head, τότε o counter1->prev είναι NULL 4. Αν η δεύτερη ηµεροµηνία είναι το τελευταίο στοιχείο της λίστας, τότε ο counter2->next είναι NULL - Όταν βρεθεί µια ηµεροµηνία, αφαιρείτε σωστά τον κόµβο αλλά δεν κάνετε free. - Δε δίνετε σωστή τιµή στο head. Είναι πάντα το τελευταίο στοιχείο πριν αυτό που αφαιρέθηκε. - Η clearlist είναι οκ ως ιδέα, αλλά αν το head είναι NULL, θα πετάξει segfault. Χρειάζεστε έναν επιπλέον έλεγχο στην αρχή. - Στην υλοποίηση της swap δε θέτετε το root->prev ίσο µε point. - Ωραία σχόλια και ονόµατα µεταβλητών, καλή στοίχιση Η εκτέλεση του κώδικα οδηγει σε κάποιο memory problem: το µήνυµα αναφέρετε σε double free, το οποίο σηµαίνει ότι προσπαθείτε να ελευθερώσετε δύο φορές κάποιο κοµµάτι µνήµης - To kate είναι αρρύθµιστο και ο κώδικας δεν έχει καλή στοίχιση. - Η clearlist έχει υλοποιηθεί σωστά. - ln 73 και 82, αν η ηµεροµηνία δε βρεθεί και επιστρέψετε NULL, τότε χάνετε την κεφαλή της λίστας... Για αυτό θέλετε return head. - Αν η κεφαλή της λίστας είναι NULL, τότε θα πεταχτεί segfault στη γραµµή Η αναζήτηση του curr2 για να βρείτε τη δεύτερη ηµεροµηνία δε θα πρέπει να ξεκινάει πάλι από head αλλά από εκεί που βρήκατε το curr1. Αλλιώς, δεν έχετε τρόπο να ελέγξετε αν η δεύτερη ηµεροµηνία έπεται της πρώτης. - Στην περίπτωση curr1->prev==null έπρεπε να θέτετε και το νέο head- >prev ίσο µε NULL. - Επίσης, γιατί αναθέτετε στα head->date τα date1 και date2; Μην παπαγαλίζετε τις διαφάνειες! Η συγκεκριµένη λίστα είναι χωρίς τερµατικό FAIL Όµοιος κώδικας µε άλλη οµάδα.

3 1570 -Ο κώδικας σας δε δουλεύει σωστά για όλες τις περιπτώσεις. Αναλυτικότερα: -Εάν υπάρχουν δύο διαφορετικές ηµεροµηνίες και δεν βρίσκονται στην αρχή ή στο τέλος της λίστας, τότε η λειτουργία είναι σωστή. -Εάν από την άλλη κάποια είναι η κεφαλή ή η ουρά, τότε έχετε segmentation fault καθώς δεν ελέγχετε αν το hmeromhnia1->prev είναι NULL (το hmeromhnia1 κεφαλή) ή αν το curr2->next είναι NULL (το curr2 ουρά). -Η δεύτερη επανάληψη έπρεπε να ξεκινάει από hmeromhnia1->next, καθώς αν θέλετε π.χ. να αφαιρέσετε από 9/9 µέχρι 9/9, ο κώδικας σας θα αφαιρέσει πραγµατικά έναν µόνο κόµβο. -Επίσης έπρεπε να καλείτε την clear και από την removepart ώστε να διαγράφετε τους κόµβους που αφαιρείτε, και όχι µόνο από τη main. -Σωστή υλοποίηση της clear. -Καλή στοίχιση -Δεν υπάρχει αρχικό σχόλιο Στη main: - Η swaplist κάνει κάποιες αλλαγές στη λίστα και µετά επιστρέφει τη νέα κεφαλή της. Εποµένως στη main έπρεπε να αποθηκεύετε το αποτέλεσµα της swaplist στη µεταβλητή list. Έτσι, θα ήταν σωστές µετά και οι κλήσεις στις printlist και clearlist όπου περνάτε τη list. - Σωστή υλοποίηση 1571 FAIL 1573 FAIL Στη swaplist: - Δεν υπολογίζετε σωστά το minimum. Η αρχικοποίηση της µεταβλητής diafora έπρεπε να γίνεται εκτός του while και όχι σε κάθε µία επανάληψη. - Η µεταβλητή last έπρεπε να παίρνει την τιµή curr πριν γίνει η πράξη curr = curr->next, αλλιώς δεν πρόκειται να κρατήσει τον τελευταίο κόµβο της λίστας αλλά το NULL. - Όταν κάνετε την προσπέλαση wanted->prev->next θα πεταχτεί segmentation fault γιατί ακριβώς πριν έχετε κάνει το wanted->prev = NULL. - Στο τέλος έπρεπε να επιστρέφετε το wanted, που είναι η νέα κεφαλή της λίστας, κι όχι το head. - Το thesh->prev->next είναι ακριβώς το ίδιο πράγµα µε το thesh και δεν έπρεπε να το κάνετε NULL. - Η εκτέλεση του προγράµµατος οδηγεί σε segmentation fault, και αυτό διότι έχετε στη σειρά 80 το εξής: head2->prev ενώ το head2 το έχετε κάνει NULL. - Έπρεπε πριν το telos->prev->next =... να γίνεται έλεγχος για το αν το telos- >prev είναι NULL (περίπτωση που το telos είναι η κεφαλή της λίστας). - Οι πράξεις σας για τις ανανεώσεις των pointers είναι λάθος. - Στην clearmem δεν κάνετε free τον τελευταίο κόµβο της λίστας. - Καλά ονόµατα µεταβλητών και καλή στοίχιση. - Να βάζετε σχόλια στο πρόγραµµα σας. - Γιατί αντιγράψατε το αρχείο mylist.h µέσα στο lab12.c; Η άσκηση δουλεύει µιά χαρά και χωρίς να το κάνετε αυτό διότι το κάνει ήδη #include - Σωστή υλοποίηση της clearlist. - Στη removepart θα έπρεπε να καλείτε και την clearlist κάθε φορά που "κόβετε" κάτι από τη λίστα. Για να µπορέσει να γίνει σωστά αυτό πρέπει πρώτα να κάνετε end-next= NULL. - Κατά τα άλλα καλή δουλειά. - Σωστός αλγόριθµος αναζήτησης των ηµεροµηνιών και έλεγχος αν η δεύτερη ηµεροµηνία έπεται της πρώτης. - Σωστή η clearlist. - Όµως πρέπει να ελέγχετε αν κάποια date είναι η κεφαλή της λίστας ή το τέλος µε start->prev==null όπου πρέπει να ανανεώνετε τη την κεφαλή της λίστας και µε end->next==null αντίστοιχα. - Επίσης, κάτι που η άσκηση ζητάει έµµεσα είναι να αποδεσµεύσετε και το χώρο από το κοµµάτι της λίστας που αφαιρείτε. Σε αυτή την περίπτωση πρέπει να κάνετε end->next=null; και να καλέσετε clearlist(start);

4 1579 FAIL FAIL - Το thesh->prev->next είναι ακριβώς το ίδιο πράγµα µε το thesh και δεν έπρεπε να το κάνετε NULL. - Η εκτέλεση του προγράµµατος οδηγεί σε segmentation fault, και αυτό διότι έχετε στη σειρά 80 το εξής: head2->prev ενώ το head2 το έχετε κάνει NULL. - Έπρεπε πριν το telos->prev->next =... να γίνεται έλεγχος για το αν το telos- >prev είναι NULL (περίπτωση που το telos είναι η κεφαλή της λίστας). - Οι πράξεις σας για τις ανανεώσεις των pointers είναι λάθος. - Στην clearmem δεν κάνετε free τον τελευταίο κόµβο της λίστας. - Καλά ονόµατα µεταβλητών και καλή στοίχιση. - Να βάζετε σχόλια στο πρόγραµµα σας. - Στην υλοποίηση της swap δε θέτετε το root->prev ίσο µε point. - Ωραία σχόλια και ονόµατα µεταβλητών, καλή στοίχιση. -Στοίχιση και µεταβλητές καλά. -Δεν έχετε σχόλιο. -Ο έλεγχος που κάνετε στις for για την εύρεση της ηµεροµηνίας είναι λάθος. Η αναζήτηση θα σταµατήσει όταν θα βρει ίδιο µήνα και ίδια µέρα όπως θέλουµε, αλλά θα σταµατήσει και αν βρει ίδια µέρα χωρίς ίδιο µήνα ή ίδιο µήνα χωρίς ίδια µέρα. -Στη δεύτερη for έπρεπε να ξεκινάτε από start->next. -Η εντολή head=start οδηγεί σε λάθος. Επιστρέφετε στην ουσία το start που είναι η αρχή του κοµµατιού που θέλουµε να σβήσουµε. Σωστό: clearlist(start); return head; -Δεν κάνετε έλεγχο για ακραίες περιπτώσεις όπως αν βάλετε µια ηµεροµηνία που είναι η κεφαλή της λίστας ή ο τελευταίος της κόµβος ή αν δεν υπάρχει καθόλου η ηµεροµηνία. - Δεν καλείτε την clearlist στο τέλος της main, αλλά τουλάχιστον είναι σωστή η υλοποίησή της. - Στην υλοποίηση σας δεν ακολουθείτε ακριβώς τις προδιαγραφές της άσκησης. Συγκεκριµένα φαίνεται να αφαιρείτε τον κόµβο από τη λίστα και όχι να κάνετε swap των τµηµάτων. - Η clearmem έχει υλοποιηθεί σωστά. - Όσον αφορά τη swaplist, η υλοποίηση σας θα µπορούσε να γίνει και πιο απλά χωρίς τη δυναµική δέσµευση του πίνακα diafores. Αλλά καλά κάνετε και τον αποδεσµεύετε κιόλας. - Ο αλγόριθµος σας µέχρι τον εντοπισµό της µικρότερης διαφοράς και την εύρεση του τελευταίου στοιχείου στη λίστα είναι σωστός. Όµως, το χαλάτε στην αλλαγή των δεικτών. Καταρχήν. head->next->next αναφέρεται πάντα προς το δείκτη στο τρίτο στοιχείο της λίστας. Στη γενική περίπτωση, αυτό δε θα έπρεπε να γίνεται πάντα NULL. Θα έπρεπε να ελέγξετε τις εξής περιπτώσεις: --- Η min διαφορά να είναι στην αρχή της λίστας, όπου δεν υπάρχει δεύτερο κοµµάτι για να γίνει swap Η min διαφορά στη µέση της λίστας, --- Η min διαφορά στο τέλος της λίστας. Ζωγραφίστε αυτές τις περιπτώσεις στο χαρτί και δείτε πώς θα έπρεπε να αλλάζουν τότε οι δείκτες για να τρέχει σωστά η λίστα. - Τέλος, στη main γιατί καλείτε clearmem(list) και clearlist(newlist). Σκεφτείτε ότι η swaplist επιστρέφει την κεφαλή της λίστας, την οποία µπορείτε να την αναθέσετε στη µεταβλητή list και όχι σε καινούρια µεταβλητή. Για αυτό αρκεί να βάλλετε clearmem(list). Όπως το κάνατε, σβήνετε δύο φορές κάθε κόµβο, γιαυτό και το πρόγραµµα τερµατίζει άδοξα µε "double free"

5 Στη main: - Δεν καλείτε την clearlist στο τέλος του προγράµµατος - Δεν υλοποιήθηκε 1589 FAIL 1590 Στη swaplist: - Η αρχικοποίηση του min σε δεν έχει καµία λογική. Τι θα γίνει αν η λίστα περιέχει µεγαλύτερες τιµές? Έπρεπε να είχατε χρησιµοποιήσει την τιµή DBL_MAX όπως υπεδείκνυε η εκφώνηση. - Χειρίζεστε τη λίστα σα να έχει τερµατικό κόµβο, ενώ δεν έχει. Το curr έπρεπε να ξεκινάει από head, όχι από head->next. - Η συνθήκη τερµατισµού του for είναι λάθος. Πρέπει να γράψετε τι θέλετε να ισχύει όσο προχωράει το loop, κι όχι τι ισχύει όταν σταµατήσει. Επιπλέον, στην αναζήτηση πρέπει να ελέγχετε και τον τελευταίο κόµβο. Εποµένως, στο πρώτο for η συνθήκη έπρεπε να είναι curr!=null και στο δεύτερο curr->next!=null; - Γιατί κάνετε το ptr_curr ίσο µε NULL? - Η αλλαγή των pointers γίνεται µε λάθος τρόπο. - Στην υλοποίηση της remove έπρεπε πριν την ανάθεση end->next->prev =... να γίνεται έλεγχος για το αν το end->next είναι NULL (περίπτωση που το end είναι ο τελευταίος κόµβος της λίστας). Έτσι αν εγώ δώσω να πάρει σαν τελευταία ηµεροµηνία το τελευταίο κόµβο, παίρνω segmentation fault. - Έπρεπε να γίνονται κάποιες ενέργειες (τερµατισµός συνάρτησης) αν κάποια από τις ηµεροµηνίες που δόθηκαν δεν υπάρχουν µέσα στη λίστα. - Σωστή υλοποίηση της clearlist, αλλά την καλείς µε λάθος παράµετρο. Η νέα κεφαλή της λίστας είναι head, όχι list. - Ωραία ονόµατα µεταβλητών, καλή στοίχιση. - Να βάζετε σχόλια στο πρόγραµµα σας! Στη main: - Δεν καλείτε την clearlist στο τέλος του προγράµµατος - Δεν υλοποιήθηκε 1595 FAIL Στη swaplist: - Η αρχικοποίηση του min σε δεν έχει καµία λογική. Τι θα γίνει αν η λίστα περιέχει µεγαλύτερες τιµές? Έπρεπε να είχατε χρησιµοποιήσει την τιµή DBL_MAX όπως υπεδείκνυε η εκφώνηση. - Χειρίζεστε τη λίστα σα να έχει τερµατικό κόµβο, ενώ δεν έχει. Το curr έπρεπε να ξεκινάει από head, όχι από head->next. - Η συνθήκη τερµατισµού του for είναι λάθος. Πρέπει να γράψετε τι θέλετε να ισχύει όσο προχωράει το loop, κι όχι τι ισχύει όταν σταµατήσει. Επιπλέον, στην αναζήτηση πρέπει να ελέγχετε και τον τελευταίο κόµβο. Εποµένως, στο πρώτο for η συνθήκη έπρεπε να είναι curr!=null και στο δεύτερο curr->next!=null; - Γιατί κάνετε το ptr_curr ίσο µε NULL? - Η αλλαγή των pointers γίνεται µε λάθος τρόπο FAIL -To πρόγραµµα σας δεν κάνει compile. Το όρισµα head που περνάτε στην κλήση της συνάρτησης δεν υπάρχει. Έπρεπε να χρησιµοποιήσετε το list. -Η υλοποίηση της removepart καθώς και της clear δεν είναι σωστές FAIL - Το πρόγραµµα δεν κάνει compile. Ακόµη κι αν δικαιολογηθεί αυτό λόγω του τεχνικού προβλήµατος που είχες, ο υπάρχων κώδικας είναι πολύ λίγος και έχει αρκετά προβλήµατα στη λογική του.

6 Στη main: - Δεν καλείς την clearlist στο τέλος του προγράµµατος - Σωστή υλοποίηση Στη removepart: - Στην αναζήτηση ηµεροµηνίας θα ήταν πιο "κοµψό" να έκανες και τους δύο ελέγχους (για day και month) στην ίδια συνθήκη if. - Πριν την πράξη end->next->prev έπρεπε να ελέγχεις αν το end->next είναι NULL και να κάνεις διαφορετικό χειρισµό σε αυτή την περίπτωση, γιατί αλλιώς θα πετάξει segmentation fault. Το end->next είναι NULL όταν το end είναι ο τελευταίος κόµβος της λίστας. -Στοίχιση και µεταβλητές καλά. -Δεν έχετε σχόλιο. -Ο έλεγχος που κάνετε στις for για την εύρεση της ηµεροµηνίας είναι λάθος. Η αναζήτηση θα σταµατήσει όταν θα βρει ίδιο µήνα και ίδια µέρα όπως θέλουµε, αλλά θα σταµατήσει και αν βρει ίδια µέρα χωρίς ίδιο µήνα ή ίδιο µήνα χωρίς ίδια µέρα. -Στη δεύτερη for έπρεπε να ξεκινάτε από start->next. -Η εντολή head=start οδηγεί σε λάθος. Επιστρέφετε στην ουσία το start που είναι η αρχή του κοµµατιού που θέλουµε να σβήσουµε. Σωστό: clearlist(start); return head; -Δεν κάνετε έλεγχο για ακραίες περιπτώσεις όπως αν βάλετε µια ηµεροµηνία που είναι η κεφαλή της λίστας ή ο τελευταίος της κόµβος ή αν δεν υπάρχει καθόλου η ηµεροµηνία. - Δεν καλείτε την clearlist στο τέλος της main, αλλά τουλάχιστον είναι σωστή η υλοποίησή της. - Καλή δουλειά, µπράβο παιδιά! - Σωστή υλοποίηση του αλγορίθµου, µε σωστούς ελέγχους, εκτός από την περίπτωση root==last όπου ξεχάσατε το head->prev=last; - Σωστή υλοποίηση της clearmem. - Ωραία σχόλια και ονόµατα µεταβλητών και καλή στοίχιση. - Εξαιρετική δουλειά, µπράβο παιδιά! - Σωστή υλοποίηση του αλγορίθµου, µε σωστούς ελέγχους. - Σωστή υλοποίηση της clearmem. - Ωραία σχόλια και ονόµατα µεταβλητών και καλή στοίχιση. -Μεταβλητές καλά. -Στοίχιση λίγο άσχηµη. -Καλό αρχικό σχόλιο. -Ο έλεγχος που κάνεις στις for για την εύρεση της ηµεροµηνίας είναι λάθος. Η αναζήτηση θα σταµατήσει όταν θα βρει ίδιο µήνα και ίδια µέρα όπως θέλουµε, αλλά θα σταµατήσει και αν βρει ίδια µέρα χωρίς ίδιο µήνα ή ίδιο µήνα χωρίς ίδια µέρα. -Μέχρι τη σειρά 78 αν και µε το πιο πάνω λάθος ο κώδικάς σου έχει λογική, από εκεί και πέρα τον περιπλέκεις χωρίς λόγο και σου πετάει segmentation fault. Προσπάθησε να ξαναλύσεις την άσκηση στο σπίτι και ζήτα βοήθεια αν έχεις κολήσει. -Η clearlist είναι λάθος υλοποιηµένη. Κάθε φορά που θες να σβήσεις κάποιο κόµβο έπρεπε να κρατάς σε µια άλλη µεταβλητή πρώτα τον επόµενο και µετά να σβήσεις τον τωρινό.

7 1613 FAIL 1617 FAIL Δεν ελήφθη άσκηση FAIL Στη main, η clear πρέπει να καλείτε µε όρισµα την νέα κεφαλή της λίστας και όχι την παλιά. -Στην clear είναι έξυπνη η ιδέα να κάνετε free κάθε φορά τον προηγούµενο κόµβο, αλλά έπρεπε να το κάνετε πιο προσεκτικά. Αν το head είναι NULL, ο πρώτος έλεγχος για curr->next θα πετάξει segmentation fault. Επίσης, στο τέλος της λίστας, όταν κάνετε το curr ίσο µε curr->next, αυτό θα γίνει NULL. Αµέσως µετά κάνετε προσπέλαση του curr->prev πράξη που και πάλι θα πετάξει segmentation fault. -Η swaplist, δεν επιστρέφει σωστό αποτέλεσµα, στην περίπτωση που η πιο κοντινή τιµή είναι η πρώτη, αφού ξεκινάτε την αναζήτηση σας από τον δεύτερο κόµβο. Επίσης, σε αυτή την περίπτωση έπρεπε να ελέγχετε κι αν το location->prev είναι NULL πριν προσπελάσετε το location->prev->next. Τέλος, η πράξη location->prev = head; κάνει το ίδιο µε το location->prev = location. Έπρεπε να το είχατε κάνει NULL. -Περισσότερη προσοχή στη στοίχιση. -Δεν υπάρχει αρχικό σχόλιο. - Σωστή γενικά υλοποίηση του αλγορίθµου, µε σωστούς ελέγχους, εκτός από την περίπτωση που δοθεί δύο φορές η ίδια ηµεροµηνία. Αν στη λίστα εµφανίζονται και οι δύο ηµεροµηνίες, θα έπρεπε να αφαιρεθεί το κοµµάτι ανάµεσά τους, ενώ στη δική σας υλοποίηση το πρόγραµµα "βρίσκει" δύο φορές τον ίδιο κόµβο. - Σωστή υλοποίηση της clearlist. - Ωραία ονόµατα µεταβλητών και καλή στοίχιση. - Ακόµη έπρεπε πριν την ανάθεση curr->prev->next =... να γίνεται έλεγχος για το αν το curr->prev είναι NULL (περίπτωση που το curr είναι η κεφαλή της λίστας). - Να βάζετε σχόλια στο πρόγραµµα σας! -Μεταβλητές, στοίχιση, σχόλιο καλά. -Έχετε warning επειδή δηλώνετε µεταβλητή και δεν την χρησιµοποιείτε. -Ο έλεγχος που κάνετε στις for για την εύρεση της ηµεροµηνίας είναι λάθος. Η αναζήτηση θα σταµατήσει όταν θα βρει ίδιο µήνα και ίδια µέρα όπως θέλουµε, αλλά θα σταµατήσει και αν βρει ίδια µέρα χωρίς ίδιο µήνα ή ίδιο µήνα χωρίς ίδια µέρα. -Ο κώδικά σας πετάει segmentation fault. To πρόβληµα είναι στη clearlist όπου κάνετε προσπέλαση στο curr->next αφότου το curr έχει γίνει free, και ελέγχετε αν curr->next == NULL το οποίο πετάει segfault όταν το curr είναι αρχικά NULL. -Επίσης ο κώδικάς σας τρέχει και για την περίπτωση που δε βρει κάποια ηµεροµηνία, ενώ πετάει segmetation fault αν οι ηµεροµηνίες που θέλουµε είναι στην κεφαλή ή στο τέλος της λίστας. -Η clearlist είναι λάθος υλοποιηµένη. Κάθε φορά που θέλετε να σβήσετε κάποιο κόµβο έπρεπε να κρατάτε σε µια άλλη µεταβλητή πρώτα τον επόµενο και µετά να σβήνετε τον τωρινό. - Καλή δουλειά, µπράβο παιδιά! - Σωστή υλοποίηση του αλγορίθµου, µε σωστούς ελέγχους, εκτός από την περίπτωση root==last όπου ξεχάσατε το head->prev=last; - Σωστή υλοποίηση της clearmem. - Ωραία σχόλια και ονόµατα µεταβλητών και καλή στοίχιση.

8 Στη main: - Αποθηκεύετε το αποτέλεσµα της removepart στη µεταβλητή curr, αλλά στην κλήση της clearlist µετά περνάτε την παλιά κεφαλή της λίστας (µεταβλητή list) η οποία δεν είναι πια έγκυρη. Αυτό έχει ως αποτέλεσµα να τερµατίζει το πρόγραµµά σας µε segmentation fault FAIL Όλα ok. Στη removepart: - Στην αναζήτηση για το first και end θα ήταν πιο "κοµψό" να κάνατε τους δύο ελέγχους στην ίδια εντολή if. - Έπρεπε να κάνετε έλεγχο αν το first είναι ίσο µε head, γιατί σε αυτή την περίπτωση η κεφαλή της λίστας αλλάζει. Επιπλέον, σε αυτή την περίπτωση το first->prev είναι NULL και η έκφραση first->prev->next θα οδηγήσει σε segmentation fault. - Έπρεπε να κάνετε έλεγχο αν το end->next είναι NULL, γιατί τότε η έκφραση end->next->prev θα οδηγήσει σε segmentation fault. -Το πρόγραµµα σας λειτουργεί σωστά εκτός από τις περιπτώσεις στις οποίες δεν υπάρχει κάποια από τις ηµεροµηνίες, καθώς δεν έχετε αντίστοιχους ελέγχους. Αντίθετα ελέγχετε σωστά, εάν η ηµεροµηνία που ψάχνετε είναι το πρώτο ή τελευταίο στοιχείο της λίστας. - Δεν έπρεπε να δεσµεύετε µνήµη για τους δείκτες first, second γιατί χρησιµοποιούνται για να δείξουν σε ήδη δεσµευµένη µνήµη. -Σωστή υλοποίηση της clear. -Καλή στοίχιση και ονόµατα µεταβλητών. -Το αρχικό σχόλιο έπρεπε να ήταν πιο περιγραφικό. -Μεταβλητές, σχόλιο, στοίχιση καλά. -Στη 2η for για την εύρεση της τελικής έπρεπε να ξεκινάτε από arxiki->next. -Αν εξαιρέσουµε το πιο πάνω η υλοποίησή σας δουλεύει σωστά αν δίνετε ενδιάµεσες ηµεροµηνίες. -Αν δοθούν ηµεροµηνίες που είναι στην κεφαλή ή στο τέλος της όπως και ηµεροµηνία που δεν υπάρχει τότε θα πετάξει segmetation fault. -Η clearlist είναι λάθος υλοποιηµένη. Κάθε φορά που θέλετε να σβήσετε κάποιο κόµβο έπρεπε να κρατάτε σε µια άλλη µεταβλητή πρώτα τον επόµενο και µετά να σβήνετε τον τωρινό. - Το πρόγραµµα δεν τρέχει σωστά µόνο στην περίπτωση όπου δεν υπάρχει η δεύτερη ηµεροµηνία, ενώ επιστρέφει την λίστα κανονικά, εφόσον δεν υπάρχει η πρώτη. - Ο έλεγχος αν η ηµεροµηνίες είναι head ή tail είναι σωστοί, εκτυπώνονται τα στοιχεία που πρέπει, εκτός από την περίπτωση που ελέγχετε στη γραµµή 77 Έπρεπε να επιστρέφετε αµέσως NULL µετά την clearlist. Στην περίπτωση της γραµµής 85 έπρεπε να θέτετε και το νέο curr->prev ίσο µε NULL. - Η clearlist είναι σωστή - Καλή προσπάθεια - Γιατί αντιγράψατε το αρχείο mylist.h µέσα στο lab12.c; Η άσκηση δουλεύει µιά χαρά και χωρίς να το κάνετε αυτό διότι το κάνει ήδη #include - Σωστή υλοποίηση της clearlist. - Στη removepart θα έπρεπε να καλείτε και την clearlist κάθε φορά που "κόβετε" κάτι από τη λίστα. Για να µπορέσει να γίνει σωστά αυτό πρέπει πρώτα να κάνετε end-next= NULL. - Κατά τα άλλα καλή δουλειά.

9 1643 FAIL Στη main, η clear πρέπει να καλείται µε όρισµα την νέα κεφαλή της λίστας και όχι την παλιά. -Στην clear είναι έξυπνη η ιδέα να κάνετε free κάθε φορά τον προηγούµενο κόµβο, αλλά έπρεπε να το κάνετε πιο προσεκτικά. Αν το head είναι NULL, ο πρώτος έλεγχος για curr->next θα πετάξει segmentation fault. Επίσης, στο τέλος της λίστας, όταν κάνετε το curr ίσο µε curr->next, αυτό θα γίνει NULL. Αµέσως µετά κάνετε προσπέλαση του curr->prev πράξη που και πάλι θα πετάξει segmentation fault. -Η swaplist, δεν επιστρέφει σωστό αποτέλεσµα, στην περίπτωση που η πιο κοντινή τιµή είναι η πρώτη, αφού ξεκινάτε την αναζήτηση σας από τον δεύτερο κόµβο. Επίσης, σε αυτή την περίπτωση έπρεπε να ελέγχετε κι αν το location->prev είναι NULL πριν προσπελάσετε το location->prev->next. Τέλος, η πράξη location->prev = head; κάνει το ίδιο µε το location->prev = location. Έπρεπε να το είχατε κάνει NULL. -Περισσότερη προσοχή στη στοίχιση. -Δεν υπάρχει αρχικό σχόλιο. - Στην clearlist δεν έπρεπε να δεσµεύετε µνήµη για τον temp γιατί απλά χρησιµοποιείται για να δείχνει σε ήδη δεσµευµένη µνήµη. Κατά τα άλλα σωστή υλοποίηση της clearlist. - Αν οι ηµεροµηνίες δεν υπάρχουν στη λίστα, οι curr και end θα περιέχουν "σκουπίδια" και θα προκληθεί segmentation fault. Κατά τα άλλα σωστή η υλοποίηση. - Ωραία σχόλια και ονόµατα µεταβλητών και καλή στοίχιση FAIL Όµοιος κώδικας µε άλλη οµάδα Η εκτέλεση του κώδικα οδηγει σε κάποιο memory problem: το µήνυµα αναφέρετε σε double free, το οποίο σηµαίνει ότι προσπαθείτε να ελευθερώσετε δύο φορές κάποιο κοµµάτι µνήµης - To kate είναι αρρύθµιστο και ο κώδικας δεν έχει καλή στοίχιση. - Η clearlist έχει υλοποιηθεί σωστά. - ln 73 και 82, αν η ηµεροµηνία δε βρεθεί και επιστρέψετε NULL, τότε χάνετε την κεφαλή της λίστας... Για αυτό θέλετε return head. - Αν η κεφαλή της λίστας είναι NULL, τότε θα πεταχτεί segfault στη γραµµή Η αναζήτηση του curr2 για να βρείτε τη δεύτερη ηµεροµηνία δε θα πρέπει να ξεκινάει πάλι από head αλλά από εκεί που βρήκατε το curr1. Αλλιώς, δεν έχετε τρόπο να ελέγξετε αν η δεύτερη ηµεροµηνία έπεται της πρώτης. - Στην περίπτωση curr1->prev==null έπρεπε να θέτετε και το νέο head- >prev ίσο µε NULL. - Επίσης, γιατί αναθέτετε στα head->date τα date1 και date2; Μην παπαγαλίζετε τις διαφάνειες! Η συγκεκριµένη λίστα είναι χωρίς τερµατικό. - Στην υλοποίηση της swap έπρεπε το loop σας να ξεκινάει από το head κι όχι το head->next.επίσης έπρεπε πριν την ανάθεση found->prev->next =... να γίνεται έλεγχος για το αν το found->prev είναι NULL (περίπτωση που το found είναι η κεφαλή της λίστας). Επίσης, στο τέλος πρέπει να κάνετε το found->prev ίσο µε NULL. - Σωστή υλοποίηση της clearmem αλλά δεν την καλείτε σωστά: Μετά την κλήση της swaplist η κεφαλή της λίστας είναι η newlist. Η µεταβλητή list είναι ένας κόµβος στο ενδιάµεσο της λίστας. Με το να κάνετε free τους κόµβους από το newlist και πέρα, γίνονται free και αυτοί από το list και πέρα, οπότε η δεύτερη κλήση στην clearmem θα κάνει διπλό free. - Ωραία ονόµατα µεταβλητών, καλή στοίχιση. - Να βάζετε σχόλια στο πρόγραµµα σας! 1654 FAIL Δεν ελήφθη άσκηση Πολύ καλή προσπάθεια, µπράβο

10 Σωστή γενικά υλοποίηση του αλγορίθµου, µε σωστούς ελέγχους, εκτός από την περίπτωση που δοθεί δύο φορές η ίδια ηµεροµηνία. Αν στη λίστα εµφανίζονται και οι δύο ηµεροµηνίες, θα έπρεπε να αφαιρεθεί το κοµµάτι ανάµεσά τους, ενώ στη δική σας υλοποίηση το πρόγραµµα "βρίσκει" δύο φορές τον ίδιο κόµβο. - Σωστή υλοποίηση της clearlist. - Ωραία ονόµατα µεταβλητών και καλή στοίχιση. - Ακόµη έπρεπε πριν την ανάθεση curr->prev->next =... να γίνεται έλεγχος για το αν το curr->prev είναι NULL (περίπτωση που το curr είναι η κεφαλή της λίστας). - Να βάζετε σχόλια στο πρόγραµµα σας! - Στην υλοποίηση της swap έπρεπε το loop σας να ξεκινάει από το head κι όχι το head->next.επίσης έπρεπε πριν την ανάθεση found->prev->next =... να γίνεται έλεγχος για το αν το found->prev είναι NULL (περίπτωση που το found είναι η κεφαλή της λίστας). Επίσης, στο τέλος πρέπει να κάνετε το found->prev ίσο µε NULL. - Σωστή υλοποίηση της clearmem αλλά δεν την καλείτε σωστά: Μετά την κλήση της swaplist η κεφαλή της λίστας είναι η newlist. Η µεταβλητή list είναι ένας κόµβος στο ενδιάµεσο της λίστας. Με το να κάνετε free τους κόµβους από το newlist και πέρα, γίνονται free και αυτοί από το list και πέρα, οπότε η δεύτερη κλήση στην clearmem θα κάνει διπλό free. - Ωραία ονόµατα µεταβλητών, καλή στοίχιση. - Να βάζετε σχόλια στο πρόγραµµα σας! Στην clearlist δεν έπρεπε να δεσµεύετε µνήµη για τον temp γιατί απλά χρησιµοποιείται για να δείχνει σε ήδη δεσµευµένη µνήµη. Κατά τα άλλα σωστή υλοποίηση της clearlist. - Αν οι ηµεροµηνίες δεν υπάρχουν στη λίστα, οι curr και end θα περιέχουν "σκουπίδια" και θα προκληθεί segmentation fault. Κατά τα άλλα σωστή η υλοποίηση. - Ωραία σχόλια και ονόµατα µεταβλητών και καλή στοίχιση. Στη main: - Η removepart κάνει κάποιες αλλαγές στη λίστα και µετά επιστρέφει τη νέα κεφαλή της. Εποµένως στη main έπρεπε να αποθηκεύετε το αποτέλεσµα της removepart στη µεταβλητή list. Έτσι, θα ήταν σωστές µετά και οι κλήσεις στις printlist και clearlist όπου περνάτε τη list. - Δεν υλοποιήθηκε FAIL Στη removepart: - Σωστή η εύρεση του start. Για την εύρεση του end έπρεπε να ξεκινάς από το start->next. Διαφορετικά, αν δοθεί δύο φορές η ίδια ηµεροµηνία, θα βρείς τον ίδιο κόµβο για το start και το end. - Αν δε βρεθεί µια από τις δύο ηµεροµηνίες, το start ή και το end θα είναι NULL. Έπρεπε να γίνεται έλεγχος γι αυτό και να τερµατίζει η συνάρτηση πριν γίνει προσπέλαση αυτών των δεικτών. - Αρχικά, θέτεις σωστά τα next, prev των start και end, αλλά µετά χαλάς τις συνδέσεις. Το curr1->next = NULL είναι ισοδύναµο µε start->next = NULL, οπότε το κοµµάτι προς αφαίρεση χάνεται. Έπρεπε να κάνεις µόνο το end->next = NULL και µετά clearlist(start) για να ελευθερώσεις το κοµµάτι ανάµεσα στο start και στο end. Τώρα ελευθερώνεις µόνο τον κόµβο start και µόνο τον κόµβο end. - Δεν υπάρχει πρόβλεψη για την περίπτωση που το start είναι ίδιο µε το head. Όχι µόνο είναι NULL το start->prev σε αυτή την περίπτωση, αλλά πρέπει να ανανεωθεί και η τιµή του head. - Δεν υπάρχει πρόβλεψη για την περίπτωση που το end->next είναι NULL. Αυτό έχει ως συνέπεια η έκφραση end->next->prev να προκαλέσει segmentation fault.

11 FAIL Στοίχιση και µεταβλητές καλά. -Δεν έχετε αρχικό σχόλιο. - Δεν καλείτε την clearlist στο τέλος της main. -Ο κώδικάς σας δουλεύει σωστά για όλες τις περιπτώσεις. -Πολύ καλή δουλειά. - Δεν φορτώνετε την stdlib.h µε αποτέλεσµα να µην αναγνωρίζει την free που χρησιµοποιείτε στην clearlist - Στην removepart δεν λαµβάνετε µέριµνα για καµία από τις παρακάτω περιπτώσεις (για τις οποίες προκαλείται segmentation fault): 1.Αν δεν βρεθεί η πρώτη ηµεροµηνία (δεν πρέπει να ξεκινάει καν η αναζήτηση για την δεύτερη ηµεροµηνία, αφού ο counter1->next είναι NULL) 2. Αν δεν βρεθεί η δεύτερη ηµεροµηνία, η συνάρτηση πρέπει να επιστρέψει τη λίστα όπως ήταν 3. Αν η πρώτη ηµεροµηνία είναι το head, τότε o counter1->prev είναι NULL 4. Αν η δεύτερη ηµεροµηνία είναι το τελευταίο στοιχείο της λίστας, τότε ο counter2->next είναι NULL - Όταν βρεθεί µια ηµεροµηνία, αφαιρείτε σωστά τον κόµβο αλλά δεν κάνετε free. - Δε δίνετε σωστή τιµή στο head. Είναι πάντα το τελευταίο στοιχείο πριν αυτό που αφαιρέθηκε. - Η clearlist είναι οκ ως ιδέα, αλλά αν το head είναι NULL, θα πετάξει segfault. Χρειάζεστε έναν επιπλέον έλεγχο στην αρχή. - Εξαιρετική δουλειά, µπράβο παιδιά! - Σωστή υλοποίηση του αλγορίθµου, µε σωστούς ελέγχους. - Σωστή υλοποίηση της clearmem. - Ωραία σχόλια και ονόµατα µεταβλητών και καλή στοίχιση. -Το πρόγραµµα σας λειτουργεί σωστά εκτός από τις περιπτώσεις στις οποίες δεν υπάρχει κάποια από τις ηµεροµηνίες, καθώς δεν έχετε αντίστοιχους ελέγχους. Αντίθετα ελέγχετε σωστά, εάν η ηµεροµηνία που ψάχνετε είναι το πρώτο ή τελευταίο στοιχείο της λίστας. - Δεν έπρεπε να δεσµεύετε µνήµη για τους δείκτες first, second γιατί χρησιµοποιούνται για να δείξουν σε ήδη δεσµευµένη µνήµη. -Σωστή υλοποίηση της clear. -Καλή στοίχιση και ονόµατα µεταβλητών. -Το αρχικό σχόλιο έπρεπε να ήταν πιο περιγραφικό. -Στοίχιση και µεταβλητές καλά. -Δεν έχετε αρχικό σχόλιο. - Δεν καλείτε την clearlist στο τέλος της main. -Ο κώδικάς σας δουλεύει σωστά για όλες τις περιπτώσεις. -Πολύ καλή δουλειά. Στη main: - Η swaplist κάνει κάποιες αλλαγές στη λίστα και µετά επιστρέφει τη νέα κεφαλή της. Εποµένως στη main έπρεπε να αποθηκεύετε το αποτέλεσµα της swaplist στη µεταβλητή list. Έτσι, θα ήταν σωστές µετά και οι κλήσεις στις printlist και clearlist όπου περνάτε τη list. - Σωστή υλοποίηση 1672 FAIL Στη swaplist: - Δεν υπολογίζετε σωστά το minimum. Η αρχικοποίηση της µεταβλητής diafora έπρεπε να γίνεται εκτός του while και όχι σε κάθε µία επανάληψη. - Η µεταβλητή last έπρεπε να παίρνει την τιµή curr πριν γίνει η πράξη curr = curr->next, αλλιώς δεν πρόκειται να κρατήσει τον τελευταίο κόµβο της λίστας αλλά το NULL. - Όταν κάνετε την προσπέλαση wanted->prev->next θα πεταχτεί segmentation fault γιατί ακριβώς πριν έχετε κάνει το wanted->prev = NULL. - Στο τέλος έπρεπε να επιστρέφετε το wanted, που είναι η νέα κεφαλή της λίστας, κι όχι το head.

12 1673 FAIL 1676 FAIL 1679 FAIL Οι δηλώσεις των συναρτήσεων βρίσκονται στο mylist.h, δεν χρειάζεται να τις ξαναδηλώσετε στο lab12.c - Στην main δεν καλείτε την printlist αφού έχετε εκτελέσει την removepart, όπως σας ζητείται στην εκφώνηση - Χρησιµοποιείτε µια βοηθητική συνάρτηση στην removepart, η οποία όµως έχει λάθος την συνθήκη της for... Το κοµµάτι ((current->date.day == search_date.day) && (current->date.month == search_date.month)); σηµαίνει ΟΣΟ βρίσκουµε ίδιες ηµεροµηνίες, η for συνεχίζει τις επαναλήψεις. Εφόσον βρεί date διάφορο του current->date, θα σταµατήσει. Άρα, η searchlist επιστρέφει κατά την πρώτη κλήση της το head και κατά την δεύτερη κλήση της το head->next. Αυτό οδηγεί σε segmentation fault παρακάτω στην removepart στην γραµµή 50, όπου γίνεται προσπέλαση του index_date1->prev->next (= index_date2->next;) το οποίο είναι ο δείκτης prev του κόµβου head, το οποίο είναι NULL - Στην removelist πρέπει να λάβετε υπόψη σας και άλλες ακραίες περιπτώσεις, όπως το date2 να είναι το τελευταίο ή το πρώτο στοιχείο της λίστας - Στην clearlist, αν το head είναι NULL, η συνθήκη του while θα προκαλέσει segmentation fault. Έπρεπε να είχατε while (current_node!= NULL) -To πρόγραµµα σας δεν κάνει compile. Το όρισµα head που περνάτε στην κλήση της συνάρτησης δεν υπάρχει. Έπρεπε να χρησιµοποιήσετε το list. -Η υλοποίηση της removepart καθώς και της clear δεν είναι σωστές. - Το πρόγραµµα σου δεν κάνει compile, έχει 1 error,1 warning. Το error αναφέρεται στο γεγονός ότι έχεις ξεχάσει το τελευταίο } ενώ το warning στο ότι ενώ δηλώνεις τη συνάρτηση listt *removepart(listt *head, datet date1, datet date2) αυτή καταλήγει να τερµατίζει σαν void. Δεν επιστέφει κάτι δηλαδή. Εάν λύσουµε το λάθος σου: - ότι και να δώσω µου επιστρέφει No such date! και αυτό γιατί δεν επιστρέφεις κάτι στην removepart. - Στη συνάρτηση removepart έπρεπε να γίνονται περισσότεροι έλεγχοι. Έπρεπε πιο σωστά να κάνεις έλεγχους για τα first->prev->next=last->next; και last->next->prev=first->prev; αν είναι NULL : first->prev == NULL κεφαλή λίστας και last->next == NULL τελευταίος κόµβος της λίστας. - Το loop που έχεις στην clearlist έπρεπε να ξεκινάει από το head και όχι head- >next. - Η στοίχιση σου είναι απαράδεκτη. - Να βάζεις πιο περιγραφικά σχόλια! -Ο κώδικας σας δε δουλεύει σωστά για όλες τις περιπτώσεις. Αναλυτικότερα: -Εάν υπάχουν δύο διαφορετικές ηµεροµηνίες και δεν βρίσκονται στην αρχή ή στο τέλος της λίστας, τότε η λειτουργία είναι σωστή. -Εάν απο την άλλη κάποια είναι η κεφαλή ή η ουρά, τότε έχετε segmentation καθώς δεν ελέγχετε αν το hmeromhnia1->prev είναι NULL (το hmeromhnia1 κεφαλή) ή αν το curr2->next είναι NULL (το curr2 ουρά). -Η δεύτερη επανάληψη έπρεπε να ξεκινάει από hmeromhnia1->next, καθώς αν θέλετε π.χ. να αφαιρέσετε από 9/9 µέχρι 9/9, ο κώδικας σας θα αφαιρέσει πραγµατικά έναν µόνο κόµβο. -Επίσης έπρεπε να καλείτε την clear και από την removepart ώστε να διαγράφετε τους κόµβους που αφαιρείτε, και όχι µόνο από τη main. -Σωστή υλοποίηση της clear. -Καλή στοίχιση -Δεν υπάρχει αρχικό σχόλιο

13 1692 Οριακό - Καλά ονόµατα µεταβλητών - Η removepart επιστρέφει τη νέα κεφαλή της λίστας την οποία αποθηκεύετε στη µεταβλητή afairese_tmima_listas. Ακολούθως, στις printlist και clearlist έπρεπε να περνάτε ως παράµετρο την afairese_tmima_listas και όχι την list που ήταν η παλιά κεφαλή (και η οποία πιθανώς να έχει ήδη σβηστεί) - Στην removepart δεν λαµβάνετε µέριµνα για καµία από τις παρακάτω περιπτώσεις (για τις οποίες προκαλείται segmentation fault): - Αν δεν βρεθεί η πρώτη ηµεροµηνία (δεν πρέπει να ξεκινάει καν η αναζήτηση για την δεύτερη ηµεροµηνία, αφού ο counter1->next είναι NULL) - Αν δεν βρεθεί η δεύτερη ηµεροµηνία, η συνάρτηση πρέπει να επιστρέψει τη λίστα όπως ήταν - Αν η πρώτη ηµεροµηνία είναι το head, τότε o counter1->prev είναι NULL - Αν η δεύτερη ηµεροµηνία είναι το τελευταίο στοιχείο της λίστας, τότε ο counter2->next είναι NULL - Η clearlist είναι σωστή 1693 FAIL Όµοιος κώδικας µε άλλη οµάδα Οριακό 1704 FAIL Όµοιος κώδικας µε άλλη οµάδα Καλά ονόµατα µεταβλητών - Η removepart επιστρέφει τη νέα κεφαλή της λίστας την οποία αποθηκεύετε στη µεταβλητή afairese_tmima_listas. Ακολούθως, στις printlist και clearlist έπρεπε να περνάτε ως παράµετρο την afairese_tmima_listas και όχι την list που ήταν η παλιά κεφαλή (και η οποία πιθανώς να έχει ήδη σβηστεί) - Στην removepart δεν λαµβάνετε µέριµνα για καµία από τις παρακάτω περιπτώσεις (για τις οποίες προκαλείται segmentation fault): - Αν δεν βρεθεί η πρώτη ηµεροµηνία (δεν πρέπει να ξεκινάει καν η αναζήτηση για την δεύτερη ηµεροµηνία, αφού ο counter1->next είναι NULL) - Αν δεν βρεθεί η δεύτερη ηµεροµηνία, η συνάρτηση πρέπει να επιστρέψει τη λίστα όπως ήταν - Αν η πρώτη ηµεροµηνία είναι το head, τότε o counter1->prev είναι NULL - Αν η δεύτερη ηµεροµηνία είναι το τελευταίο στοιχείο της λίστας, τότε ο counter2->next είναι NULL - Η clearlist είναι σωστή - Το πρόγραµµα δεν τρέχει σωστά µόνο στην περίπτωση όπου δεν υπάρχει η δεύτερη ηµεροµηνία, ενώ επιστρέφει την λίστα κανονικά, εφόσον δεν υπάρχει η πρώτη. - Ο έλεγχος αν η ηµεροµηνίες είναι head ή tail είναι σωστοί, εκτυπώνονται τα στοιχεία που πρέπει, εκτός από την περίπτωση που ελέγχετε στη γραµµή 77 Έπρεπε να επιστρέφετε αµέσως NULL µετά την clearlist. Στην περίπτωση της γραµµής 85 έπρεπε να θέτετε και το νέο curr->prev ίσο µε NULL. - Η clearlist είναι σωστή - Καλή προσπάθεια

14 1711 FAIL 1714 FAIL - Στην υλοποίηση σας δεν ακολουθείτε ακριβώς τις προδιαγραφές της άσκησης. Συγκεκριµένα φαίνεται να αφαιρείτε τον κόµβο από τη λίστα και όχι να κάνετε swap των τµηµάτων. - Η clearmem έχει υλοποιηθεί σωστά. - Όσον αφορά τη swaplist, η υλοποίηση σας θα µπορούσε να γίνει και πιο απλά χωρίς τη δυναµική δέσµευση του πίνακα diafores. Αλλά καλά κάνετε και τον αποδεσµεύετε κιόλας. - Ο αλγόριθµος σας µέχρι τον εντοπισµό της µικρότερης διαφοράς και την εύρεση του τελευταίου στοιχείου στη λίστα είναι σωστός. Όµως, το χαλάτε στην αλλαγή των δεικτών. Καταρχήν. head->next->next αναφέρεται πάντα προς το δείκτη στο τρίτο στοιχείο της λίστας. Στη γενική περίπτωση, αυτό δε θα έπρεπε να γίνεται πάντα NULL. Θα έπρεπε να ελέγξετε τις εξής περιπτώσεις: --- Η min διαφορά να είναι στην αρχή της λίστας, όπου δεν υπάρχει δεύτερο κοµµάτι για να γίνει swap Η min διαφορά στη µέση της λίστας, --- Η min διαφορά στο τέλος της λίστας. Ζωγραφίστε αυτές τις περιπτώσεις στο χαρτί και δείτε πώς θα έπρεπε να αλλάζουν τότε οι δείκτες για να τρέχει σωστά η λίστα. - Τέλος, στη main γιατί καλείτε clearmem(list) και clearlist(newlist). Σκεφτείτε ότι η swaplist επιστρέφει την κεφαλή της λίστας, την οποία µπορείτε να την αναθέσετε στη µεταβλητή list και όχι σε καινούρια µεταβλητή. Για αυτό αρκεί να βάλλετε clearmem(list). Όπως το κάνατε, σβήνετε δύο φορές κάθε κόµβο, γιαυτό και το πρόγραµµα τερµατίζει άδοξα µε "double free" - Καλό είναι να αποφεύγεις να κάνεις σύγκριση ανάµεσα σε double αριθµούς µε == γιατί τα αποτελέσµατα δεν είναι πάντα ακριβή. Στη συγκεκριµένη άσκηση δε µας ενδιέφερε καν ισότητα, αλλά µόνο ποιος κόµβος είναι αυτός που περιέχει την κοντινότερη τιµή. Εποµένως, αρκούσε στο σηµείο που δίνεις τιµή στο nearestdiff να αποθηκεύεις και τον κόµβο curr σε µια κατάλληλη µεταβλητή. - Το µόνο που κάνεις είναι να σπας τη λίστα στα δύο κοµµάτια, αλλά δεν τα "κολλάς" µεταξύ τους µε την ανάποδη σειρά όπως ήταν το ζητούµενο. Πέρα από το head1 έπρεπε να βρεις και τον τελευταίο κόµβο της λίστας (ας πούµε last), να κάνεις το last->next ίσο µε head, το head->prev ίσο µε last και να θέσεις και τα next/prev των head1, head2. - Σωστή η clearlist και οι κλήσεις των συναρτήσεων.

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

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

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

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

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

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

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

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

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

FAIL PASS PASS οριακά

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 Οριακό

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

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 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βαθμός Σχόλια. 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. - Στην συνθήκη

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

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

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

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

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

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

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

Sheet PASS 1426 PASS 1428 PASS. Page 1

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

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

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μνήμη I CS100,

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

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

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

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

Στοίβες με Δυναμική Δέσμευση Μνήμης

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

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

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

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

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

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

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

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

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

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

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

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

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

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

to post PASS PASS FAIL

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 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) Οδηγίες

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

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

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

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

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

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

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

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

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

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό

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

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

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

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές

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

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

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

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

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

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

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

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

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

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 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, Στάδιο

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως μια ακολουθία από στοιχεία τύπου window συνοδευόμενη από τις πράξεις: MakeNewWindow(L,w) Destroy(L,w) SwitchTo(L,w)

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

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

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

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

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

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

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

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

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

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Quiz-[9] Συν (+) και Πλην (-) Έστω n συνεχόμενοι θετικοί ακέραιοι από το 1 μέχρι το n.

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

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

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure

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

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 3 ο Συνδεδεµένες Λίστες Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση ΟΑΤ λίστα Ακολουθιακή λίστα Συνδεδεµένη λίστα

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

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

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

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

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

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

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

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

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

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

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

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

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

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι

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

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

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

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

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

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

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035

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

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

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

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

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

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

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

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

Οι δείκτες στη γλώσσα C

Οι δείκτες στη γλώσσα C Οι δείκτες στη γλώσσα C Δείκτης είναι µία µεταβλητή η οποία περιέχει σαν τιµή µία διεύθυνση της µνήµης Η τιµή ενός δείκτη δείχνει σε µία άλλη µεταβλητή, η οποία µπορεί να προσεγγισθεί έµµεσα µε τους ειδικούς

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

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

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

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

Χαρακτηριστικά αναδροµής

Χαρακτηριστικά αναδροµής Χαρακτηριστικά αναδροµής base case : συνθήκη τερµατισµού της αναδροµής Όταν το πρόβληµα είναι αρκετά µικρό ή απλό ώστε η λύση να είναι άµεση αναδροµικό βήµα : κλήση της ίδιας συνάρτησης για µικρότερη ή

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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

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

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

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

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

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Εντολές της LOGO (MicroWorlds Pro)

Εντολές της LOGO (MicroWorlds Pro) Εντολές της LOGO (MicroWorlds Pro) Εντολές εμφάνισης (εξόδου) και αριθμητικές πράξεις δείξε Εμφανίζει στην οθόνη έναν αριθμό, το αποτέλεσμα πράξεων, μια λέξη ή μια λίστα (ομάδα) λέξεων. δείξε 200 200 δείξε

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

ΑΕΜ ή username. Sheet2

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

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT ΘΕΩΡΙΑ Στο project αυτό έχουμε υλοποιήσει τις βασικές συναρτήσεις της stdlib της C malloc και free Η συνάρτηση malloc είναι η void *malloc(int

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

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

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

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

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες Τι είναι οι συνδεδεμένες λίστες (linked lists) Μια Συνδεδεμένη Λίστα (Σ.Λ.) είναι μια διάταξη από κόμβους που μπορούμε να τους διαχειριστούμε δυναμικά. Κάθε

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

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

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

Εισαγωγή στον δομημένο προγραμματισμό Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 12 η : Δυναμική Ανάθεση Θέσης Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1 Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } } Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

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

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

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

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