Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α12.21 · Κινούμενος Μέσος Όρος - sma

Εξέταση Ιανουαρίου 2025, Θέμα 3 · Δυσκολία ★★☆ · programming · Κεφάλαια: 12, 10

Κινούμενος Μέσος Όρος - sma [25 Μονάδες]

Ο κινούμενος μέσος όρος είναι παρεμφερής με τον κανονικό μέσο όρο, με μια διαφορά: ο κινούμενος μέσος όρος απαιτεί και ένα “παράθυρο” (window), δηλαδή τον αριθμό των τιμών (μετρώντας από το τέλος) που θέλουμε να λάβουμε υπόψη μας στον υπολογισμό του μέσου όρου. Για παράδειγμα, ας υποθέσουμε ότι έχουμε αυτές τις 10 τιμές:

\[9 \quad 7 \quad 7 \quad 1 \quad 4 \quad 4 \quad 4 \quad 38 \quad 8 \quad 4\]

Ο μέσος όρος αυτών των τιμών είναι \(\frac{9+7+7+1+4+4+4+38+8+4}{10} = 8.60\). Για να υπολογίσουμε τον κινούμενο μέσο, πρέπει να επιλέξουμε ένα παράθυρο, έστω 3. Τότε ο κινούμενος μέσος με παράθυρο 3 για αυτά τα στοιχεία λαμβάνει υπόψη του μόνο τα τελευταία 3:

\[9 \quad 7 \quad 7 \quad 1 \quad 4 \quad 4 \quad 4 \quad \underbrace{38 \quad 8 \quad 4}_{SMA_3}\]

και επομένως \(SMA_3 = \frac{38+8+4}{3} = 16.67\). Αντίστοιχα, μπορούν να οριστούν κινούμενοι μέσοι με μικρότερα παράθυρα (π.χ., παράθυρο 1 σημαίνει μόνο το τελευταίο στοιχείο) ή μεταλύτερα παράθυρα (π.χ., παράθυρο 10 θα λάμβανε υπόψη του όλες τις τιμές παραπάνω). Γράψτε ένα πρόγραμμα που υπολογίζει τον κινούμενο μέσο όρο με παράθυρο 10 (\(SMA_{10}\)) και ακρίβεια 2 δεκαδικών ψηφίων για όλους τους ακεραίους που θα δοθούν ως ορίσματα στο πρόγραμμα από την γραμμή εντολών. Παράδειγμα εκτέλεσης ακολουθεί:

$ ./sma 42 0 -4 9 7 7 1 4 4 4 38 8 4
The simple moving average (window 10) is: 8.60

Υπόδειξη

Τα ορίσματα βρίσκονται στο argv ως συμβολοσειρές, οπότε χρειάζεστε μετατροπή σε ακέραιο (π.χ. atoi), και τα τελευταία 10 είναι στις τελευταίες θέσεις του argv: υπολογίστε από ποιον δείκτη ξεκινάτε με βάση το argc. Αποφασίστε τι κάνετε όταν δίνονται λιγότερα από 10 ορίσματα ή κανένα, και διαιρέστε σε double για να μη χάσετε τα δεκαδικά.

Αριθμός στον οδηγό: Α12.21 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: exam-2025-jan-q3 · Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2025-jan-q3.html · Markdown (GitHub)