Γενικό Λύκειο > Μονοδιάστατοι πίνακες

Μέσος όρος 100 αριθμών με περιορισμούς

<< < (3/3)

bugman:
Η δική μου λύση με ταξινόμηση με μεταβλητές! (έτσι για να υπάρχει και κάτι άλλο)

Αλγόριθμος α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:
Merthenitis έχω την εντύπωση ότι αν ο πρώτος αριθμός (ι=1) είναι ο μεγαλύτερος όλων δεν θα παίξει

bugman:
Το έχω δοκιμάσει και παίζει!
Όπως τα έχει ορίσει, το μαχ1 είναι ο μεγαλύτερος και το μιν1 είναι ο μικρότερος.
Το έχω δοκιμάσει με 1 έως 99 + ένα 99 ακόμα, και ανακατεμένα, και με 1 συν 1 έως 99 και ανακατεμένα.

ikariofil:
Φαίνεται σωστό ύστερα από τις τελευταίες διορθώσεις

ssimaiof:
Να δώσω και εγώ μία λύση στο πιο γενικευμένο πρόβλημα :
Να υπολογιστεί ο μέσος όρος ν αριθμών χωρίς να υπολογιστούν οι κ μεγαλύτεροι και κ μικρότεροι αριθμοί.
Ενδεικτικοί Περιορισμοί   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] <- α
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

--- Τέλος κώδικα ---

Πλοήγηση

[0] Λίστα μηνυμάτων

[*] Προηγούμενη σελίδα

Μετάβαση στην πλήρη έκδοση