Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

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

 

Εκφώνηση:

 Περιγραφή. Στην εργασία αυτή δίνεται ένα αρχείο κειμένου που περιέχει τις συνδέσεις μεταξύ 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 δεν υπάρχει, τότε δε συμβαίνει τίποτε και το πρόγραμμα συνεχίζει κανονικά.

 

  • Moderators
Δημοσ.

Αυτό που πρέπει να διαβάσεις πολύ καλά είναι τι είναι τα AVL trees και τι ιδιότητες έχουν. Άμα το καταλάβεις αυτό μετά η υλοποίηση δεν είναι και τόσο δύσκολη. Προσπάθησε να καταλάβεις τι σου ζητάει η άσκηση, αφήνοντας απ' έξω το πώς θα το κάνεις ακριβώς. Πριν ξεκινήσεις να γράφεις κώδικα θα πρέπει να έχεις κατανοήσει ποια θα είναι η ροή του προγράμματός σου (δηλαδή, για παράδειγμα, πρώτα θα ανοίγεις το αρχείο, μετά θα διαβάζεις την πρώτη γραμμή, μετά θα διαβάζεις γραμμές μέχρι να φτάσεις στην τελευταία, και στο τέλος θα διαβάσεις και την τελευταία, κάνοντας ό,τι χρειάζεται κάθε φορά).

Δημοσ.

Αυτό που πρέπει να διαβάσεις πολύ καλά είναι τι είναι τα AVL trees και τι ιδιότητες έχουν. Άμα το καταλάβεις αυτό μετά η υλοποίηση δεν είναι και τόσο δύσκολη. Προσπάθησε να καταλάβεις τι σου ζητάει η άσκηση, αφήνοντας απ' έξω το πώς θα το κάνεις ακριβώς. Πριν ξεκινήσεις να γράφεις κώδικα θα πρέπει να έχεις κατανοήσει ποια θα είναι η ροή του προγράμματός σου (δηλαδή, για παράδειγμα, πρώτα θα ανοίγεις το αρχείο, μετά θα διαβάζεις την πρώτη γραμμή, μετά θα διαβάζεις γραμμές μέχρι να φτάσεις στην τελευταία, και στο τέλος θα διαβάσεις και την τελευταία, κάνοντας ό,τι χρειάζεται κάθε φορά).

 

Αν και με κάλυψε ο kercyn , θα πρόσθετα ότι πρέπει να γνωρίζεις και τις filestream βιβλιοθήκες για να γράφεις και να διαβάζεις από αρχεία. Αν και θεωρείται βασική γνώση.

 

Θα μπορούσα να προτείνω ένα αρκετά απλό concept

 

 

Τι θα προτεινα...

μια switch στην main για ανάγνωση των εντολών από το commands.txt με τα εξής χαρακτηριστικα

  • σε καθε επαναληψη να καταλαβαινει τι εντολη/συναρτηση πρεπει να εκτελεσει απο το commands.txt
  • καλο ειναι να εκτελειται μεχρι το τελος
  • και να ελεγχει τη ροη του προγραμματος

νομιζω ειναι ενας αρκετα βασικος/απλος πυρηνας για την συγκεκριμενη υλοποιηση.

 

 

Δημοσ.

Πριν ακουμπήσεις κάτι άλλο δες αυτό που ο kercyn.

 

Τι είναι το avl? Επίσης σας το δίνουν υλοποιημενο ή πρέπει να φτιάξεις την δομή εσύ? Αν ισχύει το δεύτερο ξεκινά από εκεί γιατί αυτό είναι το ζουμι

Δημοσ.

Εγώ ξέρω τι είναι το avl :P η κοπέλα ρώτησα αν ξέρει γιατί αυτό είναι η βάση της εργασίας.

 

Ουπς, συγγνώμη, κεκτημένη ταχύτητα... :D

Δημοσ.

Πρώτο έτος σε σχολή πληροφορικής, και ζήτησαν υλοποίηση AVL δέντρου σε C++. Και δεύτερο έτος τί; Fibonacci heap;

  • Like 2
Δημοσ.

Πρώτο έτος σε σχολή πληροφορικής, και ζήτησαν υλοποίηση AVL δέντρου σε C++. Και δεύτερο έτος τί; Fibonacci heap;

 

 

 

 

Ποιο τμήμα αν επιτρέπεται;

Δημοσ.

Πληροφορική ΑΠΘ λογικά ειναι , και το μαθημα Δομές αφού είμαι και εγω στην ιδια σχολή. Δύσκολη και απαιτητική σχολή αλλα πραγματικά αξίζει(Υψηλου επιπεδου). 

Δημοσ.

Πληροφορική ΑΠΘ λογικά ειναι , και το μαθημα Δομές αφού είμαι και εγω στην ιδια σχολή. Δύσκολη και απαιτητική σχολή αλλα πραγματικά αξίζει(Υψηλου επιπεδου). 

 

 

 

Καλά Δομές Δεδομένων διδάχτηκα και εγώ στο ΤΕΙ (θεωρία και εργαστήριο) δε λέει κάτι αυτό. Πολύ δύσκολο μάθημα. Το ποσοστό αποτυχίας δε στο εργαστήριο πρέπει να ήταν 70%!!

Δημοσ.

Ευχαριστώ όλους για τις απαντήσεις σας.. ναι είμαι στο ΑΠΘ, τώρα προσπαθώ να δώ την θεωρία στα AVL δένδρα για να προσπαθήσω να υλοποιήσω έστω κάτι στον λιγοστό χρόνο που έχω, σίγουρα δεν θα προλάβω να την τελειώσω την εργασία μιας και αναγκάζομαι να την κάνω μόνη αλλα τουλάχιστον να μην πάρω 0, όχι δεν υλοποιήσα κάτι ακόμη.

Αν επιτρέπετε να ρωτήσω, το command.txt το υλοποιώ εγώ; Διότι μου δόθηκε μόνο το input.txt.. Έχω και τις δυσκολίες μου στην C++.

  • Moderators
Δημοσ.

Το command.txt το φτιάχνεις εσύ και θα πρέπει να το κάνεις έτσι ώστε να δείξεις ότι το πρόγραμμά σου λειτουργεί. Δηλαδή να έχει μέσα inserts, deletes, insert για αντικείμενο που ήδη υπάρχει, delete για αντικείμενο που δεν υπάρχει κλπ.

Δημοσ.

πωωω.. σε καταλαβαινω.. και εγω πληροφορικη ειμαι, σε αλλο τμημα, ζητανε τρελα πραγματα 1ο ετος (οριακα σε ξενερωνουν)
Ενταξει, οι δομες να πω οτι ειναι(;) καπως χρησιμες.. Αλλα παλουκια;
Αληθεια, απευθυνονται στους φοιτητες ως ατομα που ξερουν c++ και δομες στο 1ο ετος;

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...