Emihime Δημοσ. 2 Ιουνίου 2017 Δημοσ. 2 Ιουνίου 2017 Καλησπέρα, Έχω να κάνω μια εργασία για την σχολή και δεν πολυ ξέρω πώς να την ξεκινήσω, δεν κατάλαβα, είμαι πρωτοετής φοιτήτρια στην σχολή πληροφορικής και αναγκάζομαι να την κάνω μόνη, αν κάποιος μπορεί να μου δώσει μια βάση για το πώς πρέπει να την ξεκινησω θα το εκτιμούσα πολυ. Εκφώνηση: Περιγραφή. Στην εργασία αυτή δίνεται ένα αρχείο κειμένου που περιέχει τις συνδέσεις μεταξύ web σελίδων. Για παράδειγμα, αν η σελίδα 1 περιέχει ένα σύνδεσμο προς τη σελίδα 2 τότε στο αρχείο θα υπάρχει μία γραμμή με περιεχόμενο 1 2 (μεταξύ των IDs μπορεί να υπάρχει ο κενός χαρακτήρας ή TAB). Υποθέστε ότι οι γραμμές υπάρχουν αποθηκευμένες με τυχαία σειρά μέσα στο αρχείο εισόδου. Θα πρέπει να κατασκευάσετε πρόγραμμα που θα διαβάζει το αρχείο εισόδου και θα κατασκευάζει έναν κατάλογο για τις συνδέσεις με τα ακόλουθα χαρακτηριστικά: Όλες τα διαφορετικά IDs των σελίδων αποθηκεύονται σε ένα δένδρο AVL. Τα IDs είναι θετικοί ακέραιοι αριθμοι. Οι γείτονες της κάθε κορυφής οργανώνονται επίσης με τη βοήθεια ενός δένδρου AVL έτσι ώστε να υποστηρίζεται εισαγωγή νέου συνδέσμου καθώς επίσης και διαγραφή υπάρχοντος συνδέσμου. υποστηρίζεται εισαγωγή νέου συνδέσμου καθώς επίσης και διαγραφή υπάρχοντος συνδέσμου. Θα πρέπει επίσης να μπορείτε να τυπώσετε τον κατάλογο σε ένα αρχείο εξόδου. Κάθε γραμμή του αρχείου αυτού αποτελείται από το ID της σελίδας, ακολουθούμενο από το πλήθος των συνδέσμων και στη συνέχεια με τα IDs των σελίδων σε αύξουσα διάταξη. Η μορφή της κάθε γραμμής είναι:i d σελίδας, πλήθος γειτόνων, σ1, σ2, …, σκ Το πρόγραμμά σας δε θα πρέπει να διαβάζει τίποτε από το πληκτρολόγιο. Οι εντολές εισαγωγής και διαγραφής συνδέσμων καθώς και η εντολή ανάγνωσης του αρχείου εισόδου και παραγωγής του αρχείου εξόδου θα βρίσκονται μέσα στο αρχείο commands.txt που θα περιέχει τις εντολές: READ_DATA, WRITE_INDEX, INSERT_LINK, DELETE_LINK (κεφαλαία γράμματα). Δίνεται ένα παράδειγμα του αρχείου αυτού: READ_DATA input.txt INSERT_LINK 1 2 INSERT_LINK 5 6 DELETE_LINK 3 4 INSERT_LINK 6 7 WRITE_INDEX output.txt Προσέξτε ότι η εντολή READ_DATA θα υπάρχει μία φορά στην αρχή και η εντολή WRITE_INDEX μία φορά στο τέλος. Οι άλλες εντολές μπορεί να είναι είτε INSERT_LINK x y είτε DELETE_LINK x y. Αν κατά την INSERT_LINK η ακμή υπάρχει ήδη, τότε δεν εισάγεται τίποτα. Επίσης, αν η ακμή που πάμε να διαγράψουμε με την εντολή DELETE_LINK δεν υπάρχει, τότε δε συμβαίνει τίποτε και το πρόγραμμα συνεχίζει κανονικά.
anon667 Δημοσ. 2 Ιουνίου 2017 Δημοσ. 2 Ιουνίου 2017 Έχεις γράψει κάτι μέχρι στιγμής; Π.χ. το διάβασμα από το αρχείο το έχεις υλοποιήσει;
Moderators Kercyn Δημοσ. 2 Ιουνίου 2017 Moderators Δημοσ. 2 Ιουνίου 2017 Αυτό που πρέπει να διαβάσεις πολύ καλά είναι τι είναι τα AVL trees και τι ιδιότητες έχουν. Άμα το καταλάβεις αυτό μετά η υλοποίηση δεν είναι και τόσο δύσκολη. Προσπάθησε να καταλάβεις τι σου ζητάει η άσκηση, αφήνοντας απ' έξω το πώς θα το κάνεις ακριβώς. Πριν ξεκινήσεις να γράφεις κώδικα θα πρέπει να έχεις κατανοήσει ποια θα είναι η ροή του προγράμματός σου (δηλαδή, για παράδειγμα, πρώτα θα ανοίγεις το αρχείο, μετά θα διαβάζεις την πρώτη γραμμή, μετά θα διαβάζεις γραμμές μέχρι να φτάσεις στην τελευταία, και στο τέλος θα διαβάσεις και την τελευταία, κάνοντας ό,τι χρειάζεται κάθε φορά).
malvagos Δημοσ. 2 Ιουνίου 2017 Δημοσ. 2 Ιουνίου 2017 Αυτό που πρέπει να διαβάσεις πολύ καλά είναι τι είναι τα AVL trees και τι ιδιότητες έχουν. Άμα το καταλάβεις αυτό μετά η υλοποίηση δεν είναι και τόσο δύσκολη. Προσπάθησε να καταλάβεις τι σου ζητάει η άσκηση, αφήνοντας απ' έξω το πώς θα το κάνεις ακριβώς. Πριν ξεκινήσεις να γράφεις κώδικα θα πρέπει να έχεις κατανοήσει ποια θα είναι η ροή του προγράμματός σου (δηλαδή, για παράδειγμα, πρώτα θα ανοίγεις το αρχείο, μετά θα διαβάζεις την πρώτη γραμμή, μετά θα διαβάζεις γραμμές μέχρι να φτάσεις στην τελευταία, και στο τέλος θα διαβάσεις και την τελευταία, κάνοντας ό,τι χρειάζεται κάθε φορά). Αν και με κάλυψε ο kercyn , θα πρόσθετα ότι πρέπει να γνωρίζεις και τις filestream βιβλιοθήκες για να γράφεις και να διαβάζεις από αρχεία. Αν και θεωρείται βασική γνώση. Θα μπορούσα να προτείνω ένα αρκετά απλό concept Τι θα προτεινα... μια switch στην main για ανάγνωση των εντολών από το commands.txt με τα εξής χαρακτηριστικα σε καθε επαναληψη να καταλαβαινει τι εντολη/συναρτηση πρεπει να εκτελεσει απο το commands.txt καλο ειναι να εκτελειται μεχρι το τελος και να ελεγχει τη ροη του προγραμματος νομιζω ειναι ενας αρκετα βασικος/απλος πυρηνας για την συγκεκριμενη υλοποιηση.
kaliakman Δημοσ. 2 Ιουνίου 2017 Δημοσ. 2 Ιουνίου 2017 Πριν ακουμπήσεις κάτι άλλο δες αυτό που ο kercyn. Τι είναι το avl? Επίσης σας το δίνουν υλοποιημενο ή πρέπει να φτιάξεις την δομή εσύ? Αν ισχύει το δεύτερο ξεκινά από εκεί γιατί αυτό είναι το ζουμι
GReaperEx Δημοσ. 3 Ιουνίου 2017 Δημοσ. 3 Ιουνίου 2017 Τι είναι το avl? https://en.wikipedia.org/wiki/AVL_tree
kaliakman Δημοσ. 3 Ιουνίου 2017 Δημοσ. 3 Ιουνίου 2017 https://en.wikipedia.org/wiki/AVL_tree Εγώ ξέρω τι είναι το avl η κοπέλα ρώτησα αν ξέρει γιατί αυτό είναι η βάση της εργασίας.
GReaperEx Δημοσ. 3 Ιουνίου 2017 Δημοσ. 3 Ιουνίου 2017 Εγώ ξέρω τι είναι το avl η κοπέλα ρώτησα αν ξέρει γιατί αυτό είναι η βάση της εργασίας. Ουπς, συγγνώμη, κεκτημένη ταχύτητα...
BabyRage Δημοσ. 7 Ιουνίου 2017 Δημοσ. 7 Ιουνίου 2017 Πρώτο έτος σε σχολή πληροφορικής, και ζήτησαν υλοποίηση AVL δέντρου σε C++. Και δεύτερο έτος τί; Fibonacci heap; 2
_Theo_ Δημοσ. 7 Ιουνίου 2017 Δημοσ. 7 Ιουνίου 2017 Πρώτο έτος σε σχολή πληροφορικής, και ζήτησαν υλοποίηση AVL δέντρου σε C++. Και δεύτερο έτος τί; Fibonacci heap; Ποιο τμήμα αν επιτρέπεται;
george1703 Δημοσ. 7 Ιουνίου 2017 Δημοσ. 7 Ιουνίου 2017 Πληροφορική ΑΠΘ λογικά ειναι , και το μαθημα Δομές αφού είμαι και εγω στην ιδια σχολή. Δύσκολη και απαιτητική σχολή αλλα πραγματικά αξίζει(Υψηλου επιπεδου).
_Theo_ Δημοσ. 7 Ιουνίου 2017 Δημοσ. 7 Ιουνίου 2017 Πληροφορική ΑΠΘ λογικά ειναι , και το μαθημα Δομές αφού είμαι και εγω στην ιδια σχολή. Δύσκολη και απαιτητική σχολή αλλα πραγματικά αξίζει(Υψηλου επιπεδου). Καλά Δομές Δεδομένων διδάχτηκα και εγώ στο ΤΕΙ (θεωρία και εργαστήριο) δε λέει κάτι αυτό. Πολύ δύσκολο μάθημα. Το ποσοστό αποτυχίας δε στο εργαστήριο πρέπει να ήταν 70%!!
Emihime Δημοσ. 8 Ιουνίου 2017 Μέλος Δημοσ. 8 Ιουνίου 2017 Ευχαριστώ όλους για τις απαντήσεις σας.. ναι είμαι στο ΑΠΘ, τώρα προσπαθώ να δώ την θεωρία στα AVL δένδρα για να προσπαθήσω να υλοποιήσω έστω κάτι στον λιγοστό χρόνο που έχω, σίγουρα δεν θα προλάβω να την τελειώσω την εργασία μιας και αναγκάζομαι να την κάνω μόνη αλλα τουλάχιστον να μην πάρω 0, όχι δεν υλοποιήσα κάτι ακόμη. Αν επιτρέπετε να ρωτήσω, το command.txt το υλοποιώ εγώ; Διότι μου δόθηκε μόνο το input.txt.. Έχω και τις δυσκολίες μου στην C++.
Moderators Kercyn Δημοσ. 8 Ιουνίου 2017 Moderators Δημοσ. 8 Ιουνίου 2017 Το command.txt το φτιάχνεις εσύ και θα πρέπει να το κάνεις έτσι ώστε να δείξεις ότι το πρόγραμμά σου λειτουργεί. Δηλαδή να έχει μέσα inserts, deletes, insert για αντικείμενο που ήδη υπάρχει, delete για αντικείμενο που δεν υπάρχει κλπ.
alexstoubis Δημοσ. 10 Ιουνίου 2017 Δημοσ. 10 Ιουνίου 2017 πωωω.. σε καταλαβαινω.. και εγω πληροφορικη ειμαι, σε αλλο τμημα, ζητανε τρελα πραγματα 1ο ετος (οριακα σε ξενερωνουν)Ενταξει, οι δομες να πω οτι ειναι( καπως χρησιμες.. Αλλα παλουκια;Αληθεια, απευθυνονται στους φοιτητες ως ατομα που ξερουν c++ και δομες στο 1ο ετος;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα