Δοκιμή διαδαστικών προβλημάτων τοπικά
Δοκιμή διαδαστικών προβλημάτων τοπικά
Ένα από τα 4 θέματα του φετινού διαγωνισμού είναι διαδραστικό. Μας έχει δωθεί αρχείο zip με τα αρχεία που χρειάζονται για δοκιμή του διαδραστικού περιβάλλοντος τοπικά, αλλά ακόμα να δωθούν οδηγίες σχετικά με την χρήση αυτών των αρχείων.
Υποτίθεται ότι θα δινόταν σύντομα οδηγός για διαδραστικά προβλήματα. Η 1η φάση τελειώνει σε λιγότερο από 5 ημέρες. Έχετε καμιά ιδέα πως θα μπορούσα να κάνω τοπικές δοκιμές; Χρησιμοποιώ C++
Υποτίθεται ότι θα δινόταν σύντομα οδηγός για διαδραστικά προβλήματα. Η 1η φάση τελειώνει σε λιγότερο από 5 ημέρες. Έχετε καμιά ιδέα πως θα μπορούσα να κάνω τοπικές δοκιμές; Χρησιμοποιώ C++
Βασισμένος ανήρ.
Re: Δοκιμή διαδαστικών προβλημάτων τοπικά
Βασισμένος ανήρ.
Re: Δοκιμή διαδαστικών προβλημάτων τοπικά
Τελικά ήταν απλώς εξήγηση των διαδραστικών προβλημάτων γενικά, όχι εξήγηση της χρήσης του grader.zip. Το πρόβλημα ακόμη εκρεμμεί.
Βασισμένος ανήρ.
Re: Δοκιμή διαδαστικών προβλημάτων τοπικά
Καλημέρα. Μερικές unofficial οδηγίες για C++ που αφορούν το πρόβλημα finding για όσους δεν έχουν εξοικειωθεί με τις έννοιες compile, link, εκτελέσιμο αρχείο, βιβλιοθήκη κλπ. και δεν ξέρουν πως να αξιοποιήσουν το συμπιεσμένο αρχείο που δίνεται μαζί με την εκφώνηση.
Ο τρόπος που λειτουργεί αυτή η κατηγορία διαδραστικών προβλημάτων έχει εξηγηθεί στο βίντεο του κ. Παπασπύρου.
Εδώ θα συζητηθεί μόνο το πως να τα δοκιμάσουμε στον υπολογιστή μας (τοπικά) όταν γράφουμε κώδικα σε C++.
Ο κώδικας είναι μοιρασμένος ανάμεσα στο δικό σας αρχείο finding.cpp και στο έτοιμο grader.cpp και οι συναρτήσεις των δυο αρχείων αλληλοεπιδρούν. Άρα όταν κάνετε compile, πρέπει να κάνετε compile δυο αρχείων, του δικού σας finding.cpp και του grader.cpp και αυτά θα ενωθούν (link) σε ένα εκτελέσιμο αρχείο.
Προτείνεται να έχετε στον ίδιο φάκελο όλα τα αρχεία του φακέλου cpp που περιέχονται στο συμπιεσμένο αρχείο.
Ένα πρότυπο παράδειγμα (skeleton) για να προσθέσετε τη λύση σας, σας δίνεται στο αρχείο finding.cpp. Άρα, απλά τροποποιήστε το finding.cpp και συμπληρώστε τη λύση σας.
Στην περίπτωση που δουλεύετε σε λειτουργικό σύστημα linux, τότε από το τερματικό σας, τρέχετε τo script που κάνει ταυτόχρονα compile και link πληκτρολογώντας την εντολή ./compile_cpp.sh και αν δεν έχετε συντακτικά λάθη, πληκτρολογώντας την εντολή ./run_cpp.sh το δοκιμάζετε και βλέπετε τα αποτελέσματα.
Στην περίπτωση που δουλεύετε σε Windows, τότε το τι πρέπει να πληκτρολογήσετε, εξαρτάτε από τον compiler που έχετε εγκαταστήσει. Π.χ. με visual studio community, ανοίγετε ένα Developer Command Prompt και πληκτρολογείτε την εντολή
και αν δεν έχετε συντακτικά λάθη, θα παραχθεί το αρχείο finding.exe που μπορείτε να το τρέξετε πληκτρολογώντας την εντολή
Αν δουλεύετε με κάποιο ide όπως CodeBlocks ή Visual Studio, φτιάξτε ένα project και προσθέστε τα δύο αρχεία finding.cpp και grader.cpp μέσα του. Κάνοντας build θα παραχθεί το εκτελέσιμο αρχείο που μπορείτε να τρέξετε και να δείτε τα αποτελέσματα στην οθόνη σας.
ΥΓ: Το αρχείο grader.cpp που παρέχεται μαζί με το πρόβλημα είναι ενδεικτικό αλλά λειτουργικό για να κάνετε τις δοκιμές σας τοπικά. Στον διαγωνισμό ενδέχεται να είναι διαφορετικό (για λόγους ασφαλείας κυρίως).
Ο τρόπος που λειτουργεί αυτή η κατηγορία διαδραστικών προβλημάτων έχει εξηγηθεί στο βίντεο του κ. Παπασπύρου.
Εδώ θα συζητηθεί μόνο το πως να τα δοκιμάσουμε στον υπολογιστή μας (τοπικά) όταν γράφουμε κώδικα σε C++.
Ο κώδικας είναι μοιρασμένος ανάμεσα στο δικό σας αρχείο finding.cpp και στο έτοιμο grader.cpp και οι συναρτήσεις των δυο αρχείων αλληλοεπιδρούν. Άρα όταν κάνετε compile, πρέπει να κάνετε compile δυο αρχείων, του δικού σας finding.cpp και του grader.cpp και αυτά θα ενωθούν (link) σε ένα εκτελέσιμο αρχείο.
Προτείνεται να έχετε στον ίδιο φάκελο όλα τα αρχεία του φακέλου cpp που περιέχονται στο συμπιεσμένο αρχείο.
Ένα πρότυπο παράδειγμα (skeleton) για να προσθέσετε τη λύση σας, σας δίνεται στο αρχείο finding.cpp. Άρα, απλά τροποποιήστε το finding.cpp και συμπληρώστε τη λύση σας.
Στην περίπτωση που δουλεύετε σε λειτουργικό σύστημα linux, τότε από το τερματικό σας, τρέχετε τo script που κάνει ταυτόχρονα compile και link πληκτρολογώντας την εντολή ./compile_cpp.sh και αν δεν έχετε συντακτικά λάθη, πληκτρολογώντας την εντολή ./run_cpp.sh το δοκιμάζετε και βλέπετε τα αποτελέσματα.
Στην περίπτωση που δουλεύετε σε Windows, τότε το τι πρέπει να πληκτρολογήσετε, εξαρτάτε από τον compiler που έχετε εγκαταστήσει. Π.χ. με visual studio community, ανοίγετε ένα Developer Command Prompt και πληκτρολογείτε την εντολή
Κώδικας: Επιλογή όλων
cl /EHsc finding.cpp grader.cpp
και αν δεν έχετε συντακτικά λάθη, θα παραχθεί το αρχείο finding.exe που μπορείτε να το τρέξετε πληκτρολογώντας την εντολή
Κώδικας: Επιλογή όλων
finding
ΥΓ: Το αρχείο grader.cpp που παρέχεται μαζί με το πρόβλημα είναι ενδεικτικό αλλά λειτουργικό για να κάνετε τις δοκιμές σας τοπικά. Στον διαγωνισμό ενδέχεται να είναι διαφορετικό (για λόγους ασφαλείας κυρίως).
Re: Δοκιμή διαδαστικών προβλημάτων τοπικά
Κατάφερα να παράγω το εκτελέσιμο αρχείο χρησιμοποιώντας Visual Studio. Όταν το έτρεξα με ρώτησε: Insert number of subtask
Δεν καταλαβαίνω....
Δεν καταλαβαίνω....
Σα βγεις στον πηγαιμό για την Ιθάκη, να εύχεσαι να 'ναι μακρύς ο δρόμος
Re: Δοκιμή διαδαστικών προβλημάτων τοπικά
Ο κώδικας που χρησιμοποίησες είχε αυτό το μήνυμα μέσα του γι αυτό στο τύπωσε. Αν θέλεις στείλε τον κώδικα σου και τον αριθμό του προβλήματος στο οποίο αναφέρεαι για περισσότερες διευκρινήσεις.
Τα executable (.exe) που παράγονται από το compile-link θα χρειαστούν το αρχεία εισόδου για να παράγει αποτελέσματα. Ο κώδικας σου μάλλον περιμένει το αρχείο εισόδου να το πληκτρολογήσεις (κρίνοντας από το μήνυμα).
Re: Δοκιμή διαδαστικών προβλημάτων τοπικά
http://pdp.gr/default.asp?pid=6&la=1&fid=1
στον παραπάνω σύνδεσμο βρήκα το συμπιεσμένο αρχείο grader.zip
Τα testcases και τον κώδικα τα βρήκα στη σελίδα: https://pdp-archive.github.io/37-PDP/index
Όταν εκτελώ το πρόγραμμα με την εντολή:
βγαίνει το μήνυμα
το οποίο υπάρχει στο αρχείο grader.cpp
στον παραπάνω σύνδεσμο βρήκα το συμπιεσμένο αρχείο grader.zip
Τα testcases και τον κώδικα τα βρήκα στη σελίδα: https://pdp-archive.github.io/37-PDP/index
Όταν εκτελώ το πρόγραμμα με την εντολή:
Κώδικας: Επιλογή όλων
./finding
Κώδικας: Επιλογή όλων
Insert number of subtask
Σα βγεις στον πηγαιμό για την Ιθάκη, να εύχεσαι να 'ναι μακρύς ο δρόμος
Re: Δοκιμή διαδαστικών προβλημάτων τοπικά
Το finding είναι ένα διαλογικό πρόγραμμα, δηλαδή δεν έχει ξεκάθαρο αρχείο input να διαβάσει με cin/scanf και να παράγει ξεκάθαρο αρχείο output με printf/cout αλλά καλεί κάποιες (κρυφές) συναρτήσεις όπως η query() για να λάβει τα δεδομένα εισόδου.
Αν λοιπόν έγραφες μόνο το finding.cpp αυτό δεν θα γινόταν link ώστε να παράγει το executable finding.exe διότι θα λείπουν οι συναρτήσεις query/getD/getN/answer..
Για δικιά σου ευκολία, μαζί με την εκφώνηση σου έδωσαν ένα απλό αρχείο grader.cpp που έχει αυτές τις συναρτήσεις που θα χρειαστείς. Προφανώς οι συναρτήσεις του grader θα χρειαστεί να διαβάσουν τα δεδομένα από κάποιο αρχείο εισόδου ή από το πληκτρολόγιο ώστε να τις στείλουν στο πρόγραμμα σου όταν καλέσεις τις getD/getN/query/answer...
Αν θέλεις δες κάποιο testcase και πληκτρολόγησε τα νούμερα που σου δίνει στα prompts που βγάζει το executable πρόγραμμα που έβγαλε το visual studio.
Αν λοιπόν έγραφες μόνο το finding.cpp αυτό δεν θα γινόταν link ώστε να παράγει το executable finding.exe διότι θα λείπουν οι συναρτήσεις query/getD/getN/answer..
Για δικιά σου ευκολία, μαζί με την εκφώνηση σου έδωσαν ένα απλό αρχείο grader.cpp που έχει αυτές τις συναρτήσεις που θα χρειαστείς. Προφανώς οι συναρτήσεις του grader θα χρειαστεί να διαβάσουν τα δεδομένα από κάποιο αρχείο εισόδου ή από το πληκτρολόγιο ώστε να τις στείλουν στο πρόγραμμα σου όταν καλέσεις τις getD/getN/query/answer...
Αν θέλεις δες κάποιο testcase και πληκτρολόγησε τα νούμερα που σου δίνει στα prompts που βγάζει το executable πρόγραμμα που έβγαλε το visual studio.