Αποστολέας Θέμα: Μέσος όρος 100 αριθμών με περιορισμούς  (Αναγνώστηκε 860 φορές)

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 400
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Μέσος όρος 100 αριθμών με περιορισμούς
« στις: 19 Μάρ 2019, 07:49:02 μμ »
Είναι εύκολο να βγάλει κανείς τον μέσο όρο 100 αριθμών, αλλά όχι αν υπάρχουν περιορισμοί!

Ζητάμε ένα πρόγραμμα σε ΓΛΩΣΣΑ όπου θα διαβάζει εκατό πραγματικούς αριθμούς, και αφού διαγράψει τους τρεις μεγαλύτερους και τους τρεις μικρότερους θα βγάζει τον μέσο όρο από τους υπόλοιπους 94 αριθμούς. Το προγραμματιστικό περιβάλλον, της άσκησης, δεν υποστηρίζει πίνακες, έτσι η κωδικοποίηση σε ΓΛΩΣΣΑ θα πρέπει να μην περιέχει πίνακες, και η διαδικασία να γίνεται με ένα πέρασμα. Οι αριθμοί στο άθροισμά τους δεν ξεπερνούν τα όρια των πραγματικών.

methenitis

  • Θαμώνας
  • ***
  • Μηνύματα: 42
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #1 στις: 20 Μάρ 2019, 10:37:00 πμ »
Προχειρα αυτό σκέφτηκα.
Η λογική πάντως δυο μεγαλύτερων αριθμών (χωρίς πίνακα) έχει μπει σε επαναληπτικές πανελλήνιες. Ασκηση με σκληρό δίσκο και αρχεία που αποθηκεύονται και ζητούσε , αν θυμάμαι καλά, τα δύο μεγαλύτερα αρχεία.

σ←0
Για ι απο 1 μεχρι 100
   διαβασε χ
   σ←σ+χ
   αν ι =1 τοτε
      μαχ1←χ
      μαχ2←χ
      μαχ3←χ
      μιν1←χ
      μιν2←χ
      μιν3←χ
   τελος_αν
   Αν χ>μαχ1 τοτε
      μαχ3←μαχ2
      μαχ2←μαχ1
      μαχ1←χ
   αλλιως_αν χ>μαχ2 τοτε
      μαχ3←μαχ2
      μαχ2←χ
   αλλιως_αν χ>μαχ3 τοτε
      μαχ3←χ
   τελος_αν
   Αν χ<μιν1 τοτε
      μιν3←μιν2
      μιν2←μιν1
      μιν1←χ
   αλλιως_αν χ<μιν2 τοτε
      μιν3←μιν2
      μιν2←χ
   αλλιως_αν χ<μιν3 τοτε
      μιν3←χ
   τελος_αν
τελος_επαναληψης
κ←(σ-(μαχ1+μαχ2+μαχ3+μιν1+μιν2+μιν3))/94
γραψε κ
« Τελευταία τροποποίηση: 20 Μάρ 2019, 01:59:56 μμ από methenitis »

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 400
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #2 στις: 20 Μάρ 2019, 01:28:53 μμ »
Είναι πιο δύσκολο απ' ότι φαίνεται. Ασφαλώς η λύση σου είναι λάθος. Ας δούμε και άλλες λύσεις.

ikariofil

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 117
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #3 στις: 20 Μάρ 2019, 01:49:28 μμ »
διαβασε χ1, χ2, χ3
Αν χ1>χ2 και χ1>χ3 τότε
    μαχ1←χ1
    Αν χ2>χ3 τότε
        μαχ2←χ2
        μαχ3←χ3
    Αλλιώς
        μαχ2←χ3
        μαχ3←χ2
    Τέλος_αν
Αλλιώς_Αν χ2>χ1 και χ2>χ3 τότε
    μαχ1←χ2
    Αν χ1>χ3 τότε
        μαχ2←χ1
        μαχ3←χ3
    Αλλιώς
        μαχ2←χ3
        μαχ3←χ1
    Τέλος_αν
Αλλιώς
    μαχ1←χ3
    Αν χ1>χ2 τότε
        μαχ2←χ1
        μαχ3←χ2
    Αλλιώς
        μαχ2←χ2
        μαχ3←χ1
    Τέλος_αν
Τέλος_αν
Αν χ1<χ2 και χ1<χ3 τότε
    μιν1←χ1
    Αν χ2<χ3 τότε
        μιν2←χ2
        μιν3←χ3
    Αλλιώς
        μιν2←χ3
        μιν3←χ2
    Τέλος_αν
Αλλιώς_Αν χ2<χ1 και χ2<χ3 τότε
    μιν1←χ2
    Αν χ1<χ3 τότε
        μιν2←χ1
        μιν3←χ3
    Αλλιώς
        μιν2←χ3
        μιν3←χ1
    Τέλος_αν
Αλλιώς
    μιν1←χ3
    Αν χ1<χ2 τότε
        μιν2←χ1
        μιν3←χ2
    Αλλιώς
        μιν2←χ2
        μιν3←χ1
    Τέλος_αν
Τέλος_αν
σ←χ1+χ2+χ3
Για ι απο 4 μεχρι 100
   διαβασε χ
   σ←σ+χ
   Αν χ>μαχ1 τοτε
      μαχ3←μαχ2
      μαχ2←μαχ1
      μαχ1←χ
   αλλιως_αν χ>μαχ2 τοτε
      μαχ3←μαχ2
      μαχ2←χ
   αλλιως_αν χ>μαχ3 τοτε
      μαχ3←χ
   τελος_αν
   Αν χ<μιν1 τοτε
      μιν3←μιν2
      μιν2←μιν1
      μιν1←χ
   αλλιως_αν χ<μιν2 τοτε
      μιν3←μιν2
      μιν2←χ
   αλλιως_αν χ<μιν3 τοτε
      μιν3←χ
   τελος_αν
τελος_επαναληψης
κ←(σ-(μαχ1+μαχ2+μαχ3+μιν1+μιν2+μιν3)) / 94
γραψε κ

methenitis

  • Θαμώνας
  • ***
  • Μηνύματα: 42
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #4 στις: 20 Μάρ 2019, 02:03:51 μμ »
Είναι πιο δύσκολο απ' ότι φαίνεται. Ασφαλώς η λύση σου είναι λάθος. Ας δούμε και άλλες λύσεις.

Μάλλον δεν έχω καταλάβει καλά. Το έτρεξα για 20 αριθμούς και δεν είδα κάτι λάθος.

Υπάρχει κάτι που χάνω?? Στην εκφώνηση εννοώ.

υ.γ. Ειχα ξεχάσει να διαιρέσω για το μο αλλά δεν νομίζω να αναφέρεσαι σε αυτο.

ntzios kostas

  • Καθηγητής Πληροφορικής
  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 599
    • Ανάπτυξη Εφαρμογών
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #5 στις: 20 Μάρ 2019, 02:11:51 μμ »
Λάθος είναι οι αρχικοποιήσεις σου.
Το μάθημα Ανάπτυξη Εφαρμογών δεν έχει σαν στόχο την εκμάθηση κάποιου συγκεκριμένου προγραμματιστικού περιβάλλοντος ούτε την καλλιέργεια προγραμματιστικών δεξιοτήτων από τη μεριά των μαθητών. Δεν αποσκοπεί στη λεπτομερειακή εξέταση της δομής, του ρεπερτορίου και των συντακτικων κανόνων κάποιας γλώσσας...

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 400
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #6 στις: 20 Μάρ 2019, 02:59:07 μμ »
Σωστός ο ntzios kostas. Για την άλλη λύση που δόθηκε, κρατώ σιγή ιχθύος. Πάντως καλό είναι μαζί με τον κώδικα να δίνεται και μια επεξήγηση για κάθε μεταβλητή, περί της χρησιμότητάς της.
Δηλαδή θα ήθελα "σημειώσεις" στο κώδικα!

methenitis

  • Θαμώνας
  • ***
  • Μηνύματα: 42
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #7 στις: 20 Μάρ 2019, 03:38:01 μμ »
Μπορείτε να μου πείτε ενα παράδειγμα τιμών (δεδομένων ,έστω οτι θα δώσει 10 τιμές )που θα ειναι το λάθος γιατι κάτι μου διαφεύγει.


Σημείωση:Το βρήκα το παράδειγμα :)
« Τελευταία τροποποίηση: 20 Μάρ 2019, 03:56:13 μμ από methenitis »

methenitis

  • Θαμώνας
  • ***
  • Μηνύματα: 42
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #8 στις: 20 Μάρ 2019, 04:24:11 μμ »
Λογικά τώρα ειναι οκ...Ελπίζω


αλγοριθμος α1
σ←0
Για ι απο 1 μεχρι 100
   διαβασε χ
   σ←σ+χ
   αν ι =1 τοτε!αρχικοποιήση την πρώτη ,μονο τα max
      μαχ1←χ !το πρωτο μεγαλυτερο
      μαχ2←χ !το δευτερο μεγαλυτερ
      μαχ3←χ  !το τρίτο μεγαλυτερο   
   αλλιως_αν ι=2 τοτε!δευτερη θέτει σαν πρώτο max1 ή δευτερο στο max2
      Αν χ>μαχ1 τοτε
         μαχ1←χ
      αλλιως
         μαχ2←χ
      Τελος_αν
   αλλιως_αν ι=3 τοτε
      Αν χ>μαχ1 τοτε
            μαχ3←μαχ2
            μαχ2←μαχ1
            μαχ1←χ
         αλλιως_αν χ>μαχ2 τοτε
            μαχ3←μαχ2
            μαχ2←χ
        αλλιως!εδώ δεν χρειάζεται να ελέγξει. Πρέπει να το αλλάξει.
            μαχ3←χ
         τελος_αν
!τα μεγιστα στα ελάχιστα ανάποδα.
   μιν1←μαχ3 !το μικροτερο απο ολα
   μιν2←μαχ2 !το δευτερο μικρότερο
   μιν3←μαχ1 ! το τρίτο μικροτερο
   αλλιως !για ι>3
         Αν χ>μαχ1 τοτε
            μαχ3←μαχ2
            μαχ2←μαχ1
            μαχ1←χ
         αλλιως_αν χ>μαχ2 τοτε
            μαχ3←μαχ2
            μαχ2←χ
         αλλιως_αν χ>μαχ3 τοτε
            μαχ3←χ
         τελος_αν
         Αν χ<μιν1 τοτε
            μιν3←μιν2
            μιν2←μιν1
            μιν1←χ
         αλλιως_αν χ<μιν2 τοτε
           μιν3←μιν2
            μιν2←χ
        αλλιως_αν χ<μιν3 τοτε
            μιν3←χ
         τελος_αν
τελος_αν
τελος_επαναληψης
κ←(σ-(μαχ1+μαχ2+μαχ3+μιν1+μιν2+μιν3))/94
γραψε κ
τελος α1
« Τελευταία τροποποίηση: 20 Μάρ 2019, 04:37:09 μμ από methenitis »

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 400
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #9 στις: 20 Μάρ 2019, 06:14:28 μμ »
 Είναι σωστό!
(εγώ έκανα πριν λάθος στην εκτέλεση)

Απλά είναι καλύτερο να έχει την Αν ι>3 σαν πρώτη Αν, γιατί αυτή θα παίξει περισσότερες φορές. Εδώ υπάρχει και η εναλλακτική να έχουμε για τους πρώτους 3 αριθμούς ξεχωριστή επανάληψη πριν από τους επόμενους 97. Κάτι που κάνει ο Ηλίας παραπάνω!
Επίσης να προσθέσω ότι η απλή αντιγραφή τον μαχ1...μαχ3 στα μιν1...μιν3 είναι καλύτερη από τον υπολογισμό ξανά που κάνει ο Ηλίας!

« Τελευταία τροποποίηση: 20 Μάρ 2019, 06:41:34 μμ από bugman »

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 400
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #10 στις: 20 Μάρ 2019, 07:48:50 μμ »
Η δική μου λύση με ταξινόμηση με μεταβλητές! (έτσι για να υπάρχει και κάτι άλλο)

Αλγόριθμος α2
σ←0
Διάβασε α1,α2,α3,α5,α6,α7
σ←α1+α2+α3+α5+α6+α7
Για ι απο 7 μεχρι 100
   Διάβασε α4
   σ←σ+α4
   οκ←Αληθές
   Όσο οκ Επανάλαβε
      οκ←Ψευδές
      Αν α1>α2 Τότε
         π←α1
         α1←α2
         α2←π
         οκ←Αληθές
      Τέλος_αν
      Αν α2>α3 Τότε
         π←α2
         α2←α3
         α3←π
         οκ←Αληθές
      Τέλος_αν
      Αν α3>α4 Τότε
         π←α3
         α3←α4
         α4←π
         οκ←Αληθές
      Τέλος_αν
      Αν α4>α5 Τότε
         π←α4
         α4←α5
         α5←π
         οκ←Αληθές
      Τέλος_αν
      Αν α5>α6 Τότε
         π←α5
         α5←α6
         α6←π
         οκ←Αληθές
      Τέλος_αν
      Αν α6>α7 Τότε
         π←α6
         α6←α7
         α7←π
         οκ←Αληθές
      Τέλος_αν
   Τελος_επαναληψης
Τελος_επαναληψης
κ←(σ-α1-α2-α3-α5-α6-α7)/94
Γράψε κ
Τέλος α2

ikariofil

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 117
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #11 στις: 20 Μάρ 2019, 09:03:11 μμ »
Merthenitis έχω την εντύπωση ότι αν ο πρώτος αριθμός (ι=1) είναι ο μεγαλύτερος όλων δεν θα παίξει

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 400
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #12 στις: 20 Μάρ 2019, 09:50:41 μμ »
Το έχω δοκιμάσει και παίζει!
Όπως τα έχει ορίσει, το μαχ1 είναι ο μεγαλύτερος και το μιν1 είναι ο μικρότερος.
Το έχω δοκιμάσει με 1 έως 99 + ένα 99 ακόμα, και ανακατεμένα, και με 1 συν 1 έως 99 και ανακατεμένα.

ikariofil

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 117
  • Γράψτε το προσωπικό σας σλόγκαν!
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #13 στις: 21 Μάρ 2019, 10:10:49 πμ »
Φαίνεται σωστό ύστερα από τις τελευταίες διορθώσεις

ssimaiof

  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 23
Απ: Μέσος όρος 100 αριθμών με περιορισμούς
« Απάντηση #14 στις: 21 Μάρ 2019, 10:23:10 πμ »
Να δώσω και εγώ μία λύση στο πιο γενικευμένο πρόβλημα :
Να υπολογιστεί ο μέσος όρος ν αριθμών χωρίς να υπολογιστούν οι κ μεγαλύτεροι και κ μικρότεροι αριθμοί.
Ενδεικτικοί Περιορισμοί   20 <= ν <= 1000,   0 <= κ <= 10
Βασίζεται στην Ταξινόμηση Ευθείας Εισαγωγής (Straight Insertion Sort) τροποποιημένη βέβαια για τις ανάγκες της άσκησης.

Κώδικας: [Επιλογή]
ΠΡΟΓΡΑΜΜΑ Εξαίρεση_Κ_Max_Min
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ν, κ, i, t1, t2
  ΠΡΑΓΜΑΤΙΚΕΣ: α, Αθρ, ΜΟ, Max[11], Min[11]
ΑΡΧΗ
  ΓΡΑΨΕ 'Δώστε πλήθος αριθμών ν :  '
  ΔΙΑΒΑΣΕ ν
  ΟΣΟ ν < 20 Η ν > 1000 ΕΠΑΝΑΛΑΒΕ
    ΓΡΑΨΕ 'ΛΑΘΟΣ !!   Πρέπει 20 <= ν <= 1000'
    ΓΡΑΨΕ 'Ξαναδώστε πλήθος αριθμών ν :  '
    ΔΙΑΒΑΣΕ ν
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΡΑΨΕ 'Δώστε πλήθος αριθμών προς εξαίρεση κ :  '
  ΔΙΑΒΑΣΕ κ
  ΟΣΟ κ < 0 Η κ > 10 ΕΠΑΝΑΛΑΒΕ
    ΓΡΑΨΕ 'ΛΑΘΟΣ !!   Πρέπει 0 <= κ <= 10'
    ΓΡΑΨΕ 'Ξαναδώστε πλήθος αριθμών προς εξαίρεση κ :  '
    ΔΙΑΒΑΣΕ κ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΡΑΨΕ 'Δώστε τον 1ο αριθμό :  '
  ΔΙΑΒΑΣΕ α
  Min[1] <- α
  Max[1] <- α
  Αθρ <- α
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ ν
    ΓΡΑΨΕ 'Δώστε τον ', i, 'ο αριθμό :  '
    ΔΙΑΒΑΣΕ α
    Αθρ <- Αθρ + α
    ΑΝ i <= κ ΤΟΤΕ
      t1 <- i - 1
    ΑΛΛΙΩΣ
      t1 <- κ
    ΤΕΛΟΣ_ΑΝ
    t2 <- t1
    ΚΑΛΕΣΕ Ρύθμισε_Max(Max, α, t1)
    ΚΑΛΕΣΕ Ρύθμισε_Min(Min, α, t2)
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ κ
    Αθρ <- Αθρ - Max[i] - Min[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ ν = κ + κ ΤΟΤΕ
    ΓΡΑΨΕ 'Δεν υπάρχουν αριθμοί για μέσο όρο'
  ΑΛΛΙΩΣ
    ΜΟ <- Αθρ/(ν - κ - κ)
    ΓΡΑΨΕ 'Μέσος Όρος = ', ΜΟ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Ρύθμισε_Max(Max, α, t)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: t
  ΠΡΑΓΜΑΤΙΚΕΣ: α, Max[11]
  ΛΟΓΙΚΕΣ: L
ΑΡΧΗ
  L <- α > Max[t]
  ΟΣΟ L ΕΠΑΝΑΛΑΒΕ
    Max[t + 1] <- Max[t]
    t <- t - 1
    ΑΝ t = 0 ΤΟΤΕ
      L <- ΨΕΥΔΗΣ
    ΑΛΛΙΩΣ
      L <- α > Max[t]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  Max[t + 1] <- α
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ Ρύθμισε_Min(Min, α, t)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: t
  ΠΡΑΓΜΑΤΙΚΕΣ: α, Min[11]
  ΛΟΓΙΚΕΣ: L
ΑΡΧΗ
  L <- α < Min[t]
  ΟΣΟ L ΕΠΑΝΑΛΑΒΕ
    Min[t + 1] <- Min[t]
    t <- t - 1
    ΑΝ t = 0 ΤΟΤΕ
      L <- ΨΕΥΔΗΣ
    ΑΛΛΙΩΣ
      L <- α < Min[t]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  Min[t + 1] <- α
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ