Realakias Δημοσ. 23 Σεπτεμβρίου 2019 Δημοσ. 23 Σεπτεμβρίου 2019 (επεξεργασμένο) Γεια σας παιδιά. Έχω να κάνω τον κώδικα από κάτω και δεν μπορώ να βρω πως θα κάνω ένα δυο πράγματα, όπως το να κάνω το πρόγραμμα να δουλεύει πλήρως σωστά. πχ βάζω 1 1 1 Q και μου λέει ερρορ όπως πρέπει. Βάζω 1 2 3 4 Q και μου βγάζει δεύτερο μικρότερο=2 (σωστό), αλλά όταν βάζω 1 1 1 4 q μου βγάζει ερρορ δεν βρέθηκε 2ο μικρότερο. ο κώδικας μου μέχρι στιγμής είναι ο επισυναπτομενος. Τα ζητούμενα: Take an unknown number of integers as input and print the second smallest number. (δουλεύει) If there is no second smallest number in the sequence the program should print an error message and quit. (δουλεύει εν μέρη) Write a function that takes a vector as argument and that returns an int containing the second smallest number. If no such number exists, the function should throw an exception that in turn is caught in main. (δουλεύει) Your program should compute its answer with a complexity no worse than O ( n ). Note that this requirement excludes, e.g., sorting the sequence of numbers. Your program should compute its answer with a complexity no worse than O ( n ). Note that this requirement excludes, e.g., the use of sorting algorithms on the sequence of numbers. The program should read integers from cin until something non-numeric is entered. (δουλεύει) Ευχαριστώ second-smallest.cpp Επεξ/σία 23 Σεπτεμβρίου 2019 από Realakias
Επισκέπτης Δημοσ. 23 Σεπτεμβρίου 2019 Δημοσ. 23 Σεπτεμβρίου 2019 (επεξεργασμένο) Πάνε αρκετά χρόνια από την τελευταία φορά που έγραψα C++, αλλά δεν πειράζει, δεν βλέπω να έχει τίποτα ιδιαίτερο ο κώδικας: Για πάμε λοιπόν να δούμε τι κάνεις, εκεί που σου σκάει: 1) Ετοιμάζεις ένα διάνυσμα vector = [1,1,1,4] 2) Αρχικοποιείς το smallest και το secSmallest στα vector[0] = 1 και vector[1] = 1 3) Loop: i) number = vector[0] = 1, άρα δεν μπαίνει στα if ii) number = vector[1] = 1, άρα δεν μπαίνει στα if iii) number = vector[2] = 1, άρα δεν μπαίνει στα if iv) number = vector[3] = 4, το οποίο και πάλι όμως δεν μπαίνει στα if, αφού το secSmallest σου είναι το 1. Όσο για το runtime error, θα το παίρνεις πάντα όταν έχεις βάλει στο vector σου ίδια ψηφία στις θέσεις 0,1, γιατί δεν τροποποιείς ποτέ το vector. Οπότε, ξανασκέψου λίγο τη διαδικασία, και πήγαινε βήμα - βήμα τον κώδικά σου, να δεις ακριβώς τι κάνει. A, παρεμπιπτόντως, θα πρέπει και να χειριστείς το ενδεχόμενο "unknown number of integers" <= 2 Επεξ/σία 23 Σεπτεμβρίου 2019 από Orestis_G
Realakias Δημοσ. 23 Σεπτεμβρίου 2019 Μέλος Δημοσ. 23 Σεπτεμβρίου 2019 4 ώρες πριν, Orestis_G είπε Πάνε αρκετά χρόνια από την τελευταία φορά που έγραψα C++, αλλά δεν πειράζει, δεν βλέπω να έχει τίποτα ιδιαίτερο ο κώδικας: Για πάμε λοιπόν να δούμε τι κάνεις, εκεί που σου σκάει: 1) Ετοιμάζεις ένα διάνυσμα vector = [1,1,1,4] 2) Αρχικοποιείς το smallest και το secSmallest στα vector[0] = 1 και vector[1] = 1 3) Loop: i) number = vector[0] = 1, άρα δεν μπαίνει στα if ii) number = vector[1] = 1, άρα δεν μπαίνει στα if iii) number = vector[2] = 1, άρα δεν μπαίνει στα if iv) number = vector[3] = 4, το οποίο και πάλι όμως δεν μπαίνει στα if, αφού το secSmallest σου είναι το 1. Όσο για το runtime error, θα το παίρνεις πάντα όταν έχεις βάλει στο vector σου ίδια ψηφία στις θέσεις 0,1, γιατί δεν τροποποιείς ποτέ το vector. Οπότε, ξανασκέψου λίγο τη διαδικασία, και πήγαινε βήμα - βήμα τον κώδικά σου, να δεις ακριβώς τι κάνει. A, παρεμπιπτόντως, θα πρέπει και να χειριστείς το ενδεχόμενο "unknown number of integers" <= 2 Ευχαριστώ για την απάντηση. Το έψαξα αλλά δεν κατάφερα να το φτιάξω. Επίσης η περίπτωση του number of integers <2 φτιάχτηκε, την έφτιαξα δλδ.
Realakias Δημοσ. 24 Σεπτεμβρίου 2019 Μέλος Δημοσ. 24 Σεπτεμβρίου 2019 Το βρήκα! Παρακαλώ κάποιος διαχειριστής να το κλειδώσει.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα