Κατάταξη 3 αριθμών

Ξεκίνησε από olga_ath, 04 Δεκ 2009, 02:29:29 ΜΜ

« προηγούμενο - επόμενο »

evry

Είχα την εντύπωση ότι συντακτικά λάθη έχουμε στα προγράμματα όπου ο κώδικας περνάει από μεταγλωττιστή και έχουμε γενικά πιο αυστηρή σύνταξη.
Έχουμε συντακτικά λάθη και στην ψευδογλώσσα?

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Νίκος Αδαμόπουλος

Αν έχουμε λάθος στη σύνταξη γιατί όχι; Μεταγλωττιστές τώρα είμαστε εμείς!  ;)

evry

Άψογα, σύμφωνα λοιπόν με τον δικό μου μεταγλωττιστή  :D, δεν κοιτάω για τέλος_αν, αλλά
αναγνωρίζω τις εμφωλευμένες από τη στοιχειοθέτηση, δηλαδή πόσα κενά πάνε μέσα (identation);)

Πάντως σοβαρά τώρα, πιστεύω ότι στην ψευδογλώσσα υπάρχει μια ανεκτικότητα σε συντακτικά λάθη σε σχέση με το πρόγραμμα.
Φυσικά το τέλος_αν που ξέχασα είναι λίγο πιο σοβαρό από ένα απλό συντακτικό λάθος :police:

Παράθεση από: Νίκος Αδαμόπουλος στις 04 Δεκ 2009, 11:23:18 ΜΜ
Αν έχουμε λάθος στη σύνταξη γιατί όχι; Μεταγλωττιστές τώρα είμαστε εμείς!  ;)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Νίκος Αδαμόπουλος

Παράθεση από: evry στις 04 Δεκ 2009, 11:37:43 ΜΜ
Πάντως σοβαρά τώρα, πιστεύω ότι στην ψευδογλώσσα υπάρχει μια ανεκτικότητα σε συντακτικά λάθη σε σχέση με το πρόγραμμα.

Προφανώς υπάρχει....!

Αλλά σε αυτή σου τη φράση... μόλις... μίλησες για συντακτικά λάθη στην ψευδογλώσσα!  >:D

jgalano

Μια ίσως πιο απλή λύση:

Αλγόριθμος ΕναΔυοΤρια
  Διάβασε α, β, γ
  πρώτος ← α
  Αν β > πρώτος τότε
    πρώτος ← β
  Τέλος_αν
  Αν γ > πρώτος τότε
    πρώτος ← γ
  Τέλος_αν
 τρίτος ← α
 Αν β < τρίτος τότε
    τρίτος ← β
 Τέλος_αν
 Αν γ < τρίτος τότε
    τρίτος ← γ
 Τέλος_αν
 δεύτερος ← α + β + γ – πρώτος – τρίτος
 Εμφάνισε πρώτος, δεύτερος, τρίτος
 Τέλος ΕναΔυοΤρια

evry

  Η λύση με την αφαίρεση είναι σίγουρα έξυπνη, αλλά δεν νομίζω ότι είναι πιο απλή. Για την ακρίβεια θα έλεγα ότι είναι η πιο δυσνόητη από τις 2 που αναφέρθηκαν προηγουμένως. Ο λόγος που την χαρακτηρίζεις απλή φαντάζομαι πως είναι η χρήση μόνο της απλής επιλογής, αφού δεν έχει ούτε αλλιώς, ούτε αλλιώς_αν ούτε σύνθετες συνθήκες και για αυτό φαίνεται πιο απλή.
   Δεν ξέρω όμως αν αυτό αρκεί για να καταλάβει κάποιος έναν αλγόριθμο. Το καλύτερο πιστεύω πως είναι να δώσεις σε κάποιον (ή να τον οδηγήσεις να βρει) μια λύση που θα μπορούσε να επινοήσει και μόνος του. Δηλαδή μια λύση που περιγράφει τον τρόπο σκέψης που θα ακολουθούσε ένας μαθητής για να διατάξει αυτούς τους αριθμούς. Έτσι μπορεί οι προηγούμενες λύσεις να φαίνονται πιο σύνθετες, αποτελούν όμως την αποτύπωση σε ψευδογλώσσα ενός "φυσιολογικού" τρόπου διάταξης αριθμών.
    Επίσης εμμένω πολύ στην λύση που έδωσε ο Στάθης διότι έχει μεγάλη διδακτική αξία αφού είναι ουσιαστικά η insertion sort για 3 αριθμούς.
   Η λύση πάντως είναι καλή :)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

Παράθεση από: gpapargi στις 04 Δεκ 2009, 05:45:08 ΜΜ
Λύνεται και χωρίς καθόλου εντολή επιλογής. Τη λύνω έτσι στους δυνατούς μαθητές μου. Δε γράφω τη λύση μήπως θέλει κάποιος να τη δοκιμάσει
Πάντως Γιώργο, αν θες, σε μια - δυο μέρες ανέβασε την λύση αυτή.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

gpapargi

Παναγιώτη όταν έγραψα ότι η λύση γίνεται χωρίς καθόλου επιλογή έκανα λάθος. Από αφηρημάδα δε θυμόμουν τη λύση. Ήθελα να πω ότι βγαίνει χωρίς αλλιώς η αλλιως_αν δηλαδή βγαίνει με σκέτη απλή επιλογή Αν... τελος_αν. Αυτή λέω στους καλούς μαθητές.

Βέβαια αφού έκανα το λάθος έψαξα να δω αν βγαίνει και χωρίς καθόλου εντολή επιλογής όπως είπα αρχικά. Τελικά από τι είδα βγαίνει και έτσι (αν δε μου ξέφυγε κάτι),  αλλά είναι κάτι σαν μαθηματικός γρίφος και δε θα το έλεγα σε μαθητή. Όποιος θέλει ας το δει αλλά με επιφύλαξη γιατί είναι πιθανόν δύσκολο πρόβλημα που ξεφεύγει από την υλη. 

Νίκος Αδαμόπουλος

... Και το ψάχνω κάτι ώρες! Αυτό που βρήκες προϋποθέτει κάτι; Π.χ. να είναι ακέραιοι;

alkisg

Η παρακάτω λύση μπορεί να γραφεί σε μία μόνο γραμμή.
Απλά την έγραψα με υποπρογράμματα για να είναι αναγνώσιμη, ενώ δεν περιέχει καμία ΑΝ.
Η επανάληψη είναι απλά για να δοκιμαστούν όλοι οι συνδυασμοί.

Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ Βαθμολόγηση
ΣΤΑΘΕΡΕΣ
  ΓΒ = 13
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΠΒ, ΠΒ_συν_3, ΠΒ_πλην_3
ΑΡΧΗ
  ΓΙΑ ΠΒ ΑΠΟ 0 ΜΕΧΡΙ 20
    ΠΒ_συν_3 <- Αρνητικός(ΠΒ - ΓΒ - 3) + 3 + ΓΒ
    ΠΒ_πλην_3 <- Θετικός(ΓΒ - ΠΒ_συν_3 - 3) + ΠΒ_συν_3
    ΓΡΑΨΕ 'Ο προφορικός βαθμός ', ΠΒ, ' προσαρμόζεται σε ', ΠΒ_πλην_3
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Θετικός(χ): ΠΡΑΓΜΑΤΙΚΗ
! Επιστρέφει χ αν το χ είναι θετικό, αλλιώς 0.
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: χ
ΑΡΧΗ
  Θετικός <- (χ + Α_Τ(χ))/2
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΣΥΝΑΡΤΗΣΗ Αρνητικός(χ): ΠΡΑΓΜΑΤΙΚΗ
! Επιστρέφει χ αν το χ είναι αρνητικό, αλλιώς 0.
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: χ
ΑΡΧΗ
  Αρνητικός <- (χ - Α_Τ(χ))/2
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


Αποτελέσματα:
Ο προφορικός βαθμός 0.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 1.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 2.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 3.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 4.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 5.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 6.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 7.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 8.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 9.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 10.00 προσαρμόζεται σε 10.00
Ο προφορικός βαθμός 11.00 προσαρμόζεται σε 11.00
Ο προφορικός βαθμός 12.00 προσαρμόζεται σε 12.00
Ο προφορικός βαθμός 13.00 προσαρμόζεται σε 13.00
Ο προφορικός βαθμός 14.00 προσαρμόζεται σε 14.00
Ο προφορικός βαθμός 15.00 προσαρμόζεται σε 15.00
Ο προφορικός βαθμός 16.00 προσαρμόζεται σε 16.00
Ο προφορικός βαθμός 17.00 προσαρμόζεται σε 16.00
Ο προφορικός βαθμός 18.00 προσαρμόζεται σε 16.00
Ο προφορικός βαθμός 19.00 προσαρμόζεται σε 16.00
Ο προφορικός βαθμός 20.00 προσαρμόζεται σε 16.00


Υ.Γ. η λύση διατίθεται με άδεια public domain, μπορεί να χρησιμοποιηθεί οπουδήποτε.  ;) ;D

pgrontas

 :o
Προς αυτή την κατεύθυνση το πάλεψα και εγώ αλλά δεν το κατάφερα μέχρι τέλους.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

ntzios kostas

#26
Δείτε και αυτή τη λύση:

ΠΡΟΓΡΑΜΜΑ φγ
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΠΒ, ΓΒ, ατ, κ
  ΑΚΕΡΑΙΕΣ: όρος

ΑΡΧΗ
  ΔΙΑΒΑΣΕ ΓΒ, ΠΒ
  ατ <- Α_Τ(ΠΒ - ΓΒ) 
  όρος <- Α_Μ(1 - Α_Μ(ατ/3)/20) 
  κ <- Α_Μ((ΠΒ - ΓΒ)/20 + 1)*2 - 1
  ΠΒ <- ΠΒ*όρος + (1 - όρος)*κ*3 + ΓΒ*(1 - όρος) 
  ΓΡΑΨΕ  ΠΒ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ 


όπου αν κάνετε τις πράξεις όρος = 1 αν η |ΠΒ-ΓΒ|<=3 και όρος =0 αν |ΠΒ-ΓΒ|>3
επίσης το κ=1 αν ΠΒ>=ΓΒ και κ=-1 αν ΠΒ<ΓΒ
Θεωρούμε ότι οι βαθμοί ανοίκουν στο [1,20].
Το μάθημα Ανάπτυξη Εφαρμογών δεν έχει σαν στόχο την εκμάθηση κάποιου συγκεκριμένου προγραμματιστικού περιβάλλοντος ούτε την καλλιέργεια προγραμματιστικών δεξιοτήτων από τη μεριά των μαθητών. Δεν αποσκοπεί στη λεπτομερειακή εξέταση της δομής, του ρεπερτορίου και των συντακτικων κανόνων κάποιας γλώσσας...

Νίκος Αδαμόπουλος

Προς την κατεύθυνση του Άλκη το έψαχνα κι εγώ ... αλλά για να μη λέμε πως αντιγράψαμε .... το γύρισα προς τελείως άλλη λογική! Ο κώδικας εννοείται πως δεν είναι καθόλου αποδοτικός .....  ;D

Το ΗΜ δουλεύει με μοίρες, ενώ το Α_Μ ας δουλεύει όπως θέλει!

ΠΡΟΓΡΑΜΜΑ Βαθμολόγηση
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΠΒ, ΓΒ, ΠΒΔ
  ΑΚΕΡΑΙΕΣ: δ1, δ2, μείωση, αύξηση, ίδιο
ΑΡΧΗ
  ΓΙΑ ΠΒ ΑΠΟ 15 ΜΕΧΡΙ 15 ΜΕ_ΒΗΜΑ 0.1
    ΓΙΑ ΓΒ ΑΠΟ 1 ΜΕΧΡΙ 20 ΜΕ_ΒΗΜΑ 0.1

      δ1 <- Α_Μ((ΠΒ - ΓΒ)/3) 
      δ2 <- Α_Μ((ΓΒ - ΠΒ)/3) 
      μείωση <- Α_Μ(ΗΜ(δ1) + 0.99)            ! 0: όχι, 1: ναι
      αύξηση <- Α_Μ(ΗΜ(δ2) + 0.99)           ! 0: όχι, 1: ναι
      ίδιο <- (μείωση - 1)*(αύξηση - 1)         ! 0: όχι, 1: ναι

      ΠΒΔ <- ΠΒ*ίδιο + (ΓΒ + 3)*μείωση + (ΓΒ - 3)*αύξηση

      ΓΡΑΨΕ 'Γρ: ', ΓΒ, ' - Πρ: ', ΠΒ, ' - Δ.Πρ: ', ΠΒΔ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Γρ: 10.00 - Πρ: 15.00 - Δ.Πρ: 13.00
Γρ: 10.10 - Πρ: 15.00 - Δ.Πρ: 13.10
Γρ: 10.20 - Πρ: 15.00 - Δ.Πρ: 13.20
Γρ: 10.30 - Πρ: 15.00 - Δ.Πρ: 13.30
Γρ: 10.40 - Πρ: 15.00 - Δ.Πρ: 13.40
Γρ: 10.50 - Πρ: 15.00 - Δ.Πρ: 13.50
Γρ: 10.60 - Πρ: 15.00 - Δ.Πρ: 13.60
Γρ: 10.70 - Πρ: 15.00 - Δ.Πρ: 13.70
Γρ: 10.80 - Πρ: 15.00 - Δ.Πρ: 13.80
Γρ: 10.90 - Πρ: 15.00 - Δ.Πρ: 13.90
Γρ: 11.00 - Πρ: 15.00 - Δ.Πρ: 14.00
Γρ: 11.10 - Πρ: 15.00 - Δ.Πρ: 14.10
Γρ: 11.20 - Πρ: 15.00 - Δ.Πρ: 14.20
Γρ: 11.30 - Πρ: 15.00 - Δ.Πρ: 14.30
Γρ: 11.40 - Πρ: 15.00 - Δ.Πρ: 14.40
Γρ: 11.50 - Πρ: 15.00 - Δ.Πρ: 14.50
Γρ: 11.60 - Πρ: 15.00 - Δ.Πρ: 14.60
Γρ: 11.70 - Πρ: 15.00 - Δ.Πρ: 14.70
Γρ: 11.80 - Πρ: 15.00 - Δ.Πρ: 14.80
Γρ: 11.90 - Πρ: 15.00 - Δ.Πρ: 14.90
Γρ: 12.00 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.10 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.20 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.30 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.40 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.50 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.60 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.70 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.80 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 12.90 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.00 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.10 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.20 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.30 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.40 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.50 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.60 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.70 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.80 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 13.90 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.00 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.10 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.20 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.30 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.40 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.50 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.60 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.70 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.80 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 14.90 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.00 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.10 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.20 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.30 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.40 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.50 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.60 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.70 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.80 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 15.90 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.00 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.10 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.20 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.30 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.40 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.50 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.60 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.70 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.80 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 16.90 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.00 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.10 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.20 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.30 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.40 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.50 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.60 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.70 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.80 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 17.90 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 18.00 - Πρ: 15.00 - Δ.Πρ: 15.00
Γρ: 18.10 - Πρ: 15.00 - Δ.Πρ: 15.10
Γρ: 18.20 - Πρ: 15.00 - Δ.Πρ: 15.20
Γρ: 18.30 - Πρ: 15.00 - Δ.Πρ: 15.30
Γρ: 18.40 - Πρ: 15.00 - Δ.Πρ: 15.40
Γρ: 18.50 - Πρ: 15.00 - Δ.Πρ: 15.50
Γρ: 18.60 - Πρ: 15.00 - Δ.Πρ: 15.60
Γρ: 18.70 - Πρ: 15.00 - Δ.Πρ: 15.70
Γρ: 18.80 - Πρ: 15.00 - Δ.Πρ: 15.80
Γρ: 18.90 - Πρ: 15.00 - Δ.Πρ: 15.90
Γρ: 19.00 - Πρ: 15.00 - Δ.Πρ: 16.00
Γρ: 19.10 - Πρ: 15.00 - Δ.Πρ: 16.10
Γρ: 19.20 - Πρ: 15.00 - Δ.Πρ: 16.20
Γρ: 19.30 - Πρ: 15.00 - Δ.Πρ: 16.30
Γρ: 19.40 - Πρ: 15.00 - Δ.Πρ: 16.40
Γρ: 19.50 - Πρ: 15.00 - Δ.Πρ: 16.50
Γρ: 19.60 - Πρ: 15.00 - Δ.Πρ: 16.60
Γρ: 19.70 - Πρ: 15.00 - Δ.Πρ: 16.70
Γρ: 19.80 - Πρ: 15.00 - Δ.Πρ: 16.80
Γρ: 19.90 - Πρ: 15.00 - Δ.Πρ: 16.90
Γρ: 20.00 - Πρ: 15.00 - Δ.Πρ: 17.00



sarantop

Παράθεση από: olga_ath στις 04 Δεκ 2009, 02:29:29 ΜΜ
Χαίρεται

Με αφετηρία την (περίπλοκη βέβαια) υλοποιίηση της εύρεσης μεγίστου/ελαχίστου με εμφωλευμένες και πολλαπλές επιλογές σκέφτηκα την συνημμένη υλοποίηση για την κατάταξη τριών αριθμών α,β,γ.

!Πρόγραμμα που κατατάσσει
!αριθμούς σύμφωνα με την τιμή τους

ΠΡΟΓΡΑΜΜΑ καταταξη
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: α,β,γ, μεγιστος, δευτερος, τριτος
ΑΡΧΗ
  ΔΙΑΒΑΣΕ α,β,γ
  ΑΝ α>=β ΚΑΙ α>=γ ΤΟΤΕ
    μεγιστος  <-- α
    !Πρωτη Περιπτωση
    ΑΝ β>γ ΤΟΤΕ
      δευτερος <-- β
      τριτος <-- γ
    ΑΛΛΙΩΣ
      δευτερος <--  γ
      τριτος <-- β
    ΤΕΛΟΣ_ΑΝ
  ΑΛΛΙΩΣ
    ΑΝ β>=α ΚΑΙ β>=γ ΤΟΤΕ
      μεγιστος <-- β
      !Δευτερη Περίπτωση
      ΑΝ α>γ ΤΟΤΕ
        δευτερος <-- α
        τριτος <-- γ
      ΑΛΛΙΩΣ
        δευτερος <--  γ
        τριτος <-- α
      ΤΕΛΟΣ_ΑΝ
    ΑΛΛΙΩΣ
      ΑΝ γ>=α ΚΑΙ γ>=β ΤΟΤΕ
        μεγιστος <-- γ
        !Τρίτη Περίπτωση
        ΑΝ α>β ΤΟΤΕ
          δευτερος <-- α
          τριτος <-- β
        ΑΛΛΙΩΣ
          δευτερος <--  β
          τριτος <-- α
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΑΝ
  ΓΡΑΨΕ μεγιστος, δευτερος,τριτος
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ               


1. Υπάρχει κάποια πιο απλή υλοποίηση που δεν έχω υπόψιν μου για την κατάταξη 3 αριθμών με δεδομένη την ύλη μέχρι και την δομή επιλογής.
2. Υπάρχει κάποια λύση που μπορεί να γενικευτεί και για περισσότερες από 3 μεταβλητές;

3. Στην πολλαπλή δομή επιλογής ΑΝ... .....ΤΟΤΕ
                                                    ΑΛΛΙΩΣ_ΑΝ.....ΤΟΤΕ
                                                    ΑΛΛΙΩΣ
                                                    ΤΕΛΟΣ_ΑΝ

εχω δει ασκήσεις που δεν υπάρχει το ΑΛΛΙΩΣ. Αυτό θεωρείται σωστό; Αν το χρησιμοποιήσουν οι μαθητές για υλοποίηση αλγόριθμου ή προγραμματος βαθμολογούνται αρνητικά άραγε;

Ευχαριστώ προκαταβολικά

Ολγα

ΓΙΑ 3 ΑΡΙΘΜΟΥΣ ΜΠΟΡΕΙΣ ΝΑ ΒΡΕΙΣ ΤΟΝ ΜΕΓΙΣΤΟ ΚΑΙ ΤΟΝ ΕΛΑΧΙΣΤΟ ΜΕ ΤΟ ΚΛΑΣΙΚΟ ΤΡΟΠΟ. ΤΟΤΕ Ο ΕΝΔΙΑΜΕΣΟΣ ΕΙΝΑΙ ΤΟ ΑΘΡΟΙΣΜΑ ΤΩΝ ΤΡΙΩΝ ΠΛΙΝ ΤΟΝ ΜΕΓΙΣΤΟ ΠΛΙΝ ΤΟΝ ΕΛΑΧΙΣΤΟ

gpapargi

Περιγράφω κι εγώ τη δική μου σκέψη:
Ο προφορικός βαθμός αν αλλάξει θα αλλάξει είτε κατά 3 είτε κατά -3. Άρα αν γίνει η αλλαγή θα γίνει κατά την ποσότητα 3* (πρ-γρ)/Α_Τ(πρ-γρ). Παρατηρείστε ότι η ποσότητα (πρ-γρ)/Α_Τ(πρ-γρ) είναι 1 ή -1 δηλαδή δίνει το πρόσημο καθορίζοντας αν θα προστεθεί ή θα αφαιρεθεί το 3. Έτσι η λύση που λέω στους μαθητές με σκέτη απλή επιλογή είναι η παραπάνω βάζοντάς την μέσα σε μια Αν Α_Τ(πρ-γρ>5).

Για να μη χρησιμοποιηθεί καθόλου εντολή επιλογής θέλουμε κάτι σαν διακόπτη που θα γίνεται 0 αν η διαφορά των 2 βαθών είναι 5 και κάτω ή 1 αν είναι 6 και πάνω. Ο διακόπτης απλά θα πολλαπλασιαστεί με την παραπάνω ποσότητα και θα προστεθεί στον γραπτό βαθμό.

Πάμε στην κατασκευή του διακόπτη. Η πρώτη σκέψη είναι η απόσταση των 2 αριθμών (απόλυτη διαφορά)  να γίνει div με 6. Δίνει 0 για διαφορές από 5 και κάτω και 1, 2, 3 για μεγαλύτερες διαφορές. Οπότε το μόνο που μένει είναι να φτιάξουμε μια συνάρτηση που δίνει 0 αν το όρισμά της είναι 0 και 1 αν το όρισμα είναι 1, 2, 3 και να βάλουμε μέσα το (απόσταση_βαθμών div 6).
Εδώ μια σκέψη ήταν να πάρουμε ένα πολυώνυμο τρίτου βαθμού p(x)=a0 + a1*x + a2*x^2 +a3*x^3 που λόγω 4 συντελεστών έχει τους βαθμούς ελευθερίας που χρειάζεται για να περνάει από τα 4 σημεία μας. Λύνοντας το σύστημα (γίνεται και αλλιώς)
p(0)=0
p(1)=1
p(2)=1
p(3)=1
βρίσκουμε p(x)=11/6 * x –x^2 + x^3/6
Μέσα στο πολυώνυμο μπαίνει το (απόσταση_βαθμών div 6) και έτοιμος ο διακόπτης.