Διακοπή βρόγχου while με if
Το βίντεο έχει διάρκεια 12:21, πιθανά να χρειάζεται λίγος χρόνος για την προβολή του.
Κάθε βρόγχος μπορεί να διακοπεί με την υπό συνθήκη εκτέλεση μιας εντολής break.
Η εντολή break διακόπτει την εκτέλεση του βρόγχου και μεταφέρει τον έλεγχο μετά το τέλος του βρόγχου στην αμέσως επόμενη εντολή.
Εδώ βλέπουμε το βρόγχο while, χωρίς κάποια συνθήκη. η παράσταση while (1) είναι πάντα αληθής, και ο βρόγχος μπορεί να τερματιστεί μόνο με την εκτέλεση της εντολής break.
Το πρόβλημα ζητάει τον υπολογισμό αθροίσματος και μέσου όρου άγνωστου πλήθους αριθμών, μέχρι το άθροισμα να γίνει μεγαλύτερο του 10. Δείτε μια λύση:
#include <iostream> using namespace std; int main() { int k = 0; float x; float ave, sum = 0; while (1) { cout << "Give me a number x : "; cin >> x; sum += x; k++; if (sum > 10) { break; } } ave = sum/k; cout << "sum = " << sum << endl; cout << "ave = " << ave << endl; return 0; }
Δοκιμαστική εκτέλεση:
astavrak@zeus:~$ g++ program.cpp astavrak@zeus:~$ ./a.out Give me a number x : 3 Give me a number x : 4 Give me a number x : 5 sum = 12 ave = 4
Προσοχή! το k πρέπει να αυξάνεται πριν τον έλεγχο τερματισμού. Γιατί;
Δείτε επίσης μια άλλη εκδοχή. Ας υποθέσουμε πως ο τερματισμός πρέπει να γίνεται πριν το άθροισμα ξεπεράσει το 10 (ή όποιο άλλο όριο) και όχι πριν από αυτό. Δηλαδή να μην υπολογίζεται ο τελευταίος όρος στον υπολογισμό του αθροίσματος και του μέσου όρου, εφόσον το άθροισμα ξεπερνάει το 10.
Δείτε πως μπορεί να γίνει αυτό:
#include <iostream> using namespace std; int main() { int k = 0; float x; float ave, sum = 0; while (1) { cout << "Give me a number x : "; cin >> x; if (sum+x > 10) { break; } sum += x; k++; } ave = sum/k; cout << "sum = " << sum << endl; cout << "ave = " << ave << endl; return 0; }
Δοκιμαστική εκτέλεση:
astavrak@zeus:~$ g++ program.cpp astavrak@zeus:~$ ./a.out Give me a number x : 2 Give me a number x : 5 Give me a number x : 1 Give me a number x : 2 Give me a number x : 6 sum = 10 ave = 2.5
Το όλο θέμα αντιμετωπίζεται με κατάλληλη τοποθέτηση της εντολής break, και επίσης με την τροποποίηση της συνθήκης κάτω από την οποία καλείται η εντολή break.
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.
Εκπαιδευτικό υλικό από τον
Αθανάσιο Σταυρακούδη
σας παρέχετε κάτω από την άδεια
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.