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

Βοήθεια σε c++


Realakias

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

Δημοσ. (επεξεργασμένο)

Γεια σας παιδιά. Έχω να κάνω τον κώδικα από κάτω και δεν μπορώ να βρω πως θα κάνω ένα δυο πράγματα, όπως το να κάνω το πρόγραμμα να δουλεύει πλήρως σωστά.

πχ βάζω 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 LaTeX: O\left(n\right)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 LaTeX: O\left(n\right)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

Επεξ/σία από Realakias
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Πάνε αρκετά χρόνια από την τελευταία φορά που έγραψα 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

Επεξ/σία από Orestis_G
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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 φτιάχτηκε, την έφτιαξα δλδ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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