Εργαστήριο Τεχνολογίας Λογισμικού
+1 vote
246 views

Η υποβολή μου στο specker1n βγάζει αυτό το μήνυμα. Τι μπορεί να φταίει;

in progtech by (570 points)
edited by | 246 views

1 Answer

+1 vote
Best answer

Υπήρχε ένα μικρό glitch στον grader και στην υποβολή σου εμφανίζεται σαν το:

Something's wrong. Check: State::next or State::getPlaying

να είναι η σωστή συμπεριφορά. Στην πραγματικότητα, αυτό είναι που πρέπει να κοιτάξεις στον κώδικά σου. Το διόρθωσα και αν υποβάλεις πάλι τον ίδιο κώδικα θα δεις ότι η γραμμή αυτή θα εμφανίζεται με κόκκινο (X) αντί για πράσινο (τικ).

Όπως βλέπεις στο υπόλοιπο μήνυμα που εμφανίζεται, το συγκεκριμένο test case ξεκινάει με τρεις σωρούς νομισμάτων στους οποίους υπάρχουν αρχικά 4, 5 και 6 νομίσματα (γραμμή 2 και γραμμή 11). Στην κατάσταση αυτή, προσπαθεί να εφαρμόσει την κίνηση να πάρει 3 νομίσματα από το σωρό 0 και να βάλει 3 νομίσματα στο σωρό 1 (γραμμή 13). Η κίνηση αυτή απαγορεύεται, γιατί τα νομίσματα που παίρνεις σε μια κίνηση πρέπει να είναι αυστηρά περισσότερα από αυτά που βάζεις. Επομένως, η State::next θα πρέπει να πετάξει εξαίρεση (γραμμή 14) και ο κώδικάς σου το κάνει σωστά αυτό (αλλιώς θα έβλεπες κάτι κακό στη γραμμή 14). Αμέσως μετά όμως, καλείται η State::getPlaying που πρέπει να επιστρέψει 0, γιατί η άκυρη κίνηση δεν πρέπει να έχει μετρήσει και ο επόμενος παίκτης που πρέπει να παίξει είναι ακόμα ο 0. Στη δική σου περίπτωση, αυτό δε συμβαίνει και το μήνυμα σού λέει ότι έχεις κάτι λάθος είτε στη συνάρτηση State::next (που αυξάνεις το μετρητή πριν ελέγξεις την εγκυρότητα της κίνησης), είτε στην State::getPlaying (που αναφέρει λάθος παίκτη). Πιθανολογώ ότι το λάθος σου είναι το πρώτο.

by (9.5k points)
selected by

301 questions

289 answers

288 comments

770 users