Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
372 views

Αντιμετωπίζω το εξής πρόβλημα κατά την υποβολή άσκησης στον grader.

Συγκεκριμένα, υπέβαλα την specker1n.cpp και στην αρχή ο grader έβγαζε ένα (όχι ιδιαίτερα κατανοητό) compile error, το οποίο αντιμετώπισα κάπως στην τύχη. Άλλαξα κάτι που εκ πρώτης όψεως δεν φαινόταν να παίζει ρόλο: μια friend συνάρτηση (την υπερφόρτωση του "<<") την είχα βάλει να παίρνει την τιμή ενός private πεδίου με getter, αντί απευθείας από την κλάση. Η άσκηση έγινε δεκτή μετά από αυτή την αλλαγή.

Στην specker2n.cpp αντιμετωπίζω το ίδιο πρόβλημα, με την προσθήκη ότι μετά το κλασσικο μήνυμα compile λάθους, ο compiler γκρινιάζει κι άλλο λέγοντας ότι δεν έχει οριστεί η κλάση Game. Αυτή όμως αφορά την επόμενη άσκηση.

Το error message είναι:

your-solution.cpp:206:1: error: stray '#' in program  
your-solution.cpp:206:3: error: 'line' does not name a type  
your-solution.cpp: In function 'int main()':  
your-solution.cpp:305:3: error: 'Game' was not declared in this scope  
your-solution.cpp:305:8: error: expected ';' before 'game'  
your-solution.cpp:310:7: error: 'game' was not declared in this scope  
your-solution.cpp:315:7: error: 'game' was not declared in this scope  
your-solution.cpp:322:3: error: 'game' was not declared in this scope

Τι μπορεί να φταίει;

in progtech by (330 points)
edited by | 372 views

2 Answers

0 votes
Best answer

Όσων αφορά το specker1n θα πρότεινα να ανεβάσεις και το compile error που σου βγάζει. Επίσης το σφάλμα στο βγάζει μόνο στον grader ή και στον compile στον τοπικό;

Όσων αφορά το specker2n φαίνεται να υπάρχει στον κώδικα ένα #, σε σημείο που δεν έπρεπε να υπάρχει. Αν το πρόγραμμα κάνει compile στον τοπικό, τότε θα σου πρότεινα να προσθέσεις μια κενή σειρά στο τέλος του αρχείου σου. (όπως είχε πει ο κ. Παπασπύρου για να γίνει σωστά η υποβολή στον grader πρέπει να υπάρχει κενή σειρά στο τέλος του αρχείου).
Αν όμως το πρόγραμμα δεν κάνει compile ούτε στον τοπικό, τότε θα σου πρότεινα να ξαναδείς όλα τα σημεία όπου έχεις # στο πρόγραμμά σου και να βεβαιωθείς οτι είναι σωστά γραμμένα. Υπενθυμίζω ότι οι εντολές προς τον preprocessor (ό,τι ξεκινάει με #) θα πρέπει να πιάνουν μια ολόκληρη σειρά. Αν και πάλι δεν βρίσκεις κάτι, θα πρέπει να απευθυνθείς σε κάποιον βοηθό στο εργαστήριο. (θα σου έλεγα να στείλεις τον κώδικα, αλλά θα ήταν μάλλον κακή ιδέα να δημοσιευτεί στο q2a κώδικας που λύνει άσκηση προς παράδοση).

by (2.9k points)
selected by
0

Το compile error στην specker1n.cpp ήταν ακριβώς το ίδιο με αυτό της specker2n.cpp. Πρόσθεσα μερικές κενές σειρές στον κώδικα της specker2n.cpp και η υποβολή πέρασε. Οπότε μάλλον το ίδιο θα είχα κάνει και στην specker1n.cpp τυχαία και δεν θα το είχα καταλάβει. Ευχαριστώ πολύ.

0 votes

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

Πολλοί editors επιτρέπουν η τελευταία γραμμή να μην τελειώνει με το χαρακτήρα αλλαγής γραμμής και αυτό είναι πρόβλημα όταν τα αρχεία αυτά δίνονται στον compiler της C++. Φροντίστε να μη συμβαίνει με τα προγράμματά σας. Αν θέλετε να είστε βέβαιοι, ψάξτε τις επιλογές του editor που χρησιμοποιείτε. Ως τελευταία επιλογή, αφήστε μία κενή γραμμή στο τέλος του αρχείου σας.

by (9.5k points)

301 questions

289 answers

288 comments

903 users