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

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

Δημοσ.

Καλησπερα παιδια εχω μια απορια .

 

Εχω σκεφτει κατι και θα θελα να μου πειτε αν ειναι "σωστο" ή υπαρχει αλλος πιο ορθος προγραμματιστικα τροπος.Αυτο που θελω ειναι η main σε ενα προγραμμα να μην καθοριζει αυτη το τι θα κανει το προγραμμα, απλα να δεχεται σαν input ενα txt με εντολες και επειτα να τις εκτελει(στη συνεχεια θα παραξει ενα txt αλλα αφου εχουν εκτελεστει ολες οι εντολες του προηγουμενου txt,μια προς μια) .

 

Δηλαδη θα διαβαζει ενα αρχει της μορφης:

INSERT_NUM 6
DELETE_NUM 100
.

.

.

Kαι παει λεγοντας .

 

Το προβλημα μου ηταν στο πως η main θα διαβαζει την εντολη, να ξεχωριζει δηλαδη τι θα γινει σε μια περιπτωση που διαβασει insert απο μια που θα διαβασει delete ή οτι αλλο.

 

Σκεφτηκα να παρω το πρωτο κομματι πριν τον ακεραιο σαν string να το συγκρινω με τις 3-4 αποδεκτες εντολες και μετα με ενα switch να ξεχωρισω καθε περιπτωση.

 

Μπορει καποιος να με βοηθησει στο αν ειναι σωστος ο τροπος που σκεφτηκα και στο αν γινεται να χρησιμοποιησω string σε switch ? (Αν ναι θα του ειμουν ευγνωμον αν με βοηθουσε στην σχεδιαση της συνταξης  καθως νομιζω θα προκυψει προβλημα λογω του οτι δεν εχουν ολες οι εντολες τον ιδιο αριθμο χαρακτηρων).

  • Moderators
Δημοσ.

Καλωσήρθατε στο μαγικό κόσμο των compilers. Αυτό που θες να κάνεις είναι ιδιαίτερα δύσκολο (δύσκολο γενικά, τώρα εσύ μπορεί να θες να κάνεις κάτι πολύ απλό, δεν ξέρω). Η καλύτερη βοήθεια που μπορώ να σου δώσω είναι αυτή. Πήγαινε στο μάθημα των Μεταγλωττιστών (θεωρία & εργαστήριο), το οποίο είναι ανοιχτό προς όλους και δε χρειάζεται να κάνεις login. Στη θεωρία θα βρεις το θεωρητικό κομμάτι και στο εργαστήριο ασκήσεις για flex, bison και fsm.

Δημοσ.

εγω το βλεπω σαν να δεχεται το προγραμμα κανονικα user input, μονο που σε αυτην την περιπτωση αντι για τον user εχουμε ενα text file.

 

μπορεις να φτιαξεις μια class που να δημιουργει ενα object για καθε γραμμη του κειμενου οπου θα γινονται parse αυτες οι 2 τιμες. για δες εδω http://codereview.stackexchange.com/questions/38879/parsing-text-file-in-c

 

και μετα αναλογα τι περιεχομενα εχει το καθε object καλεις την αντιστοιχη μεθοδο που θα εκτελεσει αυτα που θες, οπως γινεται εδω http://gameprogrammingpatterns.com/command.html

  • Moderators
Δημοσ.

εγω το βλεπω σαν να δεχεται το προγραμμα κανονικα user input, μονο που σε αυτην την περιπτωση αντι για τον user εχουμε ενα text file.

 

Μπορεί. Κύριε khr1s, θα μπορούσατε να μας πείτε αναλυτικότερα τι θα είναι αυτές οι εντολές; Δηλαδή το INSERT_NUM τι ακριβώς θα κάνει; Πού θα αποθηκεύει αυτό το 6; Θα είναι μια int στην οποία θα γίνονται πράξεις; Το DELETE_NUM 100 τι θα κάνει;

Δημοσ.

Συγγνωμη που δεν εδωσα πληρη εικονα του προγραμματος . Απο πισω θα υπαρχει μια class που θα υλοποιει ΑVL tree και οι εντολες θα μπορουν να το διαχειριζονται πχ το insert θα εισαγει το νουμερο στο δενδρο επειτα αυτο θα κανει balance με left,right,left right και right left (αν αυτο χρειαζεται). Το delete θα διαγραφει το νουμερο αυτο απο το tree και μετα θα ξανακανει ελεγχο. Μετα το τελος των εντολων απο το txt θα παραγεται ενα αρχειο txt με inorder τα στοιχεια του avl.

Δημοσ.
Αυτο που θελω ειναι η main σε ενα προγραμμα να μην καθοριζει αυτη το τι θα κανει το προγραμμα, απλα να δεχεται σαν input ενα txt με εντολες και επειτα να τις εκτελει

 

 

Δεν το κατάλαβα. Δεν καθορίζει η main τι θα κάνει το πρόγραμμα. Εσύ το καθορίζεις. Όταν λες να τις εκτελεί τι ακριβώς εννοείς; Να εκτελούνται οι εντολές που ανέφερες από τον επεξεργαστή μέσω ενός προγράμματος C; Τι είναι αυτό που θέλεις να φτιάξεις;

 

Επίσης αυτές οι εντολές μου θυμίζουν αρχιτεκτονική στοίβας. Έχεις κάτι συγκεκριμένο στο μυαλό σου; Που θα γίνεται insert ένας αριθμός; Πως θα γίνεται delete; Μου φαίνεται λίγο μπερδεμένο μέχρι να μας το ξεκαθαρίσεις.

Δημοσ.

 

 

Σκεφτηκα να παρω το πρωτο κομματι πριν τον ακεραιο σαν string να το συγκρινω με τις 3-4 αποδεκτες εντολες και μετα με ενα switch να ξεχωρισω καθε περιπτωση.

.

Φτιάχνεις το πρόγραμμα σου αρχικά ώστε να μπορείς να εκτελέσεις τις λειτουργίες στο δεντρο και όταν θα είναι όλα μια χαρά τότε ...

 

Θα διαβαζεις το αρχείο θα παίρνεις την εντολή , θα τσεκάρεις οτι ειναι valid και θα καλείς το αντίστοιχο operation στο δεντρο με την δευτερη παράμετρο . Quick and dirty

Δημοσ.

Γλωσσα μεσα στη γλωσσα  :huh:

lucid-dreaming-inception-totem.png

Η αλήθεια είναι ότι και σε μένα εκεί πήγε το μυαλό, αλλά μετά άλλαξε πορεία και άρχισα να σκέφτομαι κάτι σε source code artificial inteligence & how to prevent main from taking over your system. :P Χωρίς παρεξήγηση.

Δημοσ.

Με ειπες δελαπορτα;

Μόνο αν πρότεινες προϊόντα της επιχείρησης InceptionTEK και ήσουν και CEO. ;-)

 

Κάτι μου λέει ότι ξεφύγαμε. Ας επανέλθουμε στην τάξη..

 

Λοιπόν @ts περιμένουμε.

  • Like 1
Δημοσ.

Εάν δεν έχεις περιορισμό μπορείς να φτιάξεις ένα DFA με python (που γίνεται αρκετά γρήγορα ή με flex/bison έναν parser) και θα βλέπεις εάν είναι έγκυρο το input σου. 

 

Άπαξ και είναι τότε μπορείς με "read lines" να διαβάζεις... 

 

Μία γρήγορη λύση (αφού έχεις έγκυρο input) είναι με map και method pointers (π.χ. http://stackoverflow.com/questions/14419202/c-map-of-string-and-member-function-pointer).Εάν δεν θες να κάνεις parser/validator μπορείς απλά να πετάς exceptions με κατάλληλα μηνύματα και να επιστρέφεις το λάθος στον χρήστη. 

Δημοσ.

Προκειται για ενα project που εχω να κανω για την σχολη οριστε η εκφωνηση :

 

 δίνεται ένα αρχείο κειμένου που περιέχει τις συνδέσεις μεταξύ web σελίδων.
Για παράδειγμα, αν η σελίδα 1 περιέχει ένα σύνδεσμο προς τη σελίδα 2 τότε στο αρχείο θα υπάρχει μία γραμμή
με περιεχόμενο 1 2. Υποθέστε ότι οι γραμμές υπάρχουν αποθηκευμένες με τυχαία σειρά μέσα στο αρχείο
εισόδου. Θα πρέπει να κατασκευάσετε πρόγραμμα που θα διαβάζει το αρχείο εισόδου και θα κατασκευάζει έναν
κατάλογο για τις συνδέσεις με τα ακόλουθα χαρακτηριστικά:

 

 Όλες τα διαφορετικά IDs των σελίδων αποθηκεύονται σε ένα δένδρο AVL. Τα IDs είναι θετικοί ακέραιοι
αριθμοί.

 

 Οι γείτονες της κάθε κορυφής οργανώνονται επίσης με τη βοήθεια ενός δένδρου AVL έτσι ώστε να
υποστηρίζεται εισαγωγή νέου συνδέσμου καθώς επίσης και διαγραφή υπάρχοντος συνδέσμου.

 

 Θα πρέπει επίσης να μπορείτε να τυπώσετε τον κατάλογο σε ένα αρχείο εξόδου. Κάθε γραμμή του
αρχείου αυτού αποτελείται από το ID της σελίδας, ακολουθούμενο από το πλήθος των συνδέσμων και
στη συνέχεια με τα Ids των σελίδων σε αύξουσα διάταξη. Η μορφή της κάθε γραμμής είναι:
id σελίδας, πλήθος γειτόνων, σ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 δεν υπάρχει, τότε δε συμβαίνει τίποτε και το πρόγραμμα συνεχίζει κανονικά.

 

Oπως σας ειπα το θεμα μου ειναι στο διαβασμα των εντολων απο το txt, ολα τα αλλα ξερω πως θα γινουν ειναι αρκετα ευκολο .Α και να πω οτι ειμαι πρωτοετης σε σχολη πληροφορικης αρα δεν μπορω να ξεφυγω πολυ με python κτλ , πρεπει να ναι σε c++.

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

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

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

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

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

Σύνδεση

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

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