Προβλήματα στη Δομή Επανάληψης

Άσκηση 4
Η τριπλέτα του Πυθαγόρα είναι μια τριάδα φυσικών αριθμών α < β < γ, για τους οποίους ισχύει ότι α2 + β2 = γ2

Για παράδειγμα, 32 + 42 = 9 + 16 = 25 = 52

Υπάρχει μόνο ένα σετ αριθμών για το οποίο ισχύει α + β + γ = 1000. Να γίνει αλγόριθμος που να βρίσκει τους αριθμούς αυτούς:

Αλγόριθμος Πυθαγόρειοι
βρέθηκε <- ΨΕΥΔΗΣ
α <- 1
β <- 2
γ <- 3
Όσο βρέθηκε = ΨΕΥΔΗΣ επανάλαβε
   Αν α^2 + β^2 = γ^2 ΚΑΙ α + β + γ = 1000 τότε
      βρέθηκε <- ΑΛΗΘΗΣ
   Αλλιώς
      γ <- γ + 1

      Αν α + β + γ > 1000 τότε
         β <- β + 1
         γ <- β + 1
      Τέλος_αν

      Αν α + β + γ > 1000 τότε
         α <- α + 1
         β <- α + 1
         γ <- β + 1
      Τέλος_αν
   Τέλος_αν
Τέλος_επανάληψης

Εμφάνισε α, β, γ
Τέλος Πυθαγόρειοι

Άσκηση 5
Στο άθλημα της Άρσης Βαρών οι αθλητές συμμετέχουν σε 2 κινήσεις το «Αρασέ» και το «Επωλέ – Ζετέ». Κάθε αθλητής, δικαιούται να εκτελέσει τρεις προσπάθειες σε κάθε κίνηση. Αφού ολοκληρώσει και τις τρεις προσπάθειες, τότε καταμετράται η προσπάθεια με το μεγαλύτερο βάρος για την κίνηση αυτή. Νικητής ανακηρύσσεται εκείνος που θα πετύχει το μεγαλύτερο άθροισμα βάρους που έχει υψώσει στις δύο κινήσεις. Σε περίπτωση ίδιου αθροίσματος μεταξύ αθλητών τη πρώτη θέση κερδίζει ο ελαφρύτερος σε βάρος. Να γίνει αλγόριθμος που για 18 αθλητές, θα διαβάζει α)το όνομά τους, β) το βάρος τους, και γ) τα βάρη που σήκωσαν σε κάθε μία από τις προσπάθειές τους και θα εμφανίζει το όνομα του νικητή.

Αλγόριθμος ΆρσηΒαρών
   ! αρχικοποίηση μεταβλητών
   ΣΒ_καλύτερου <- 0
   βάρος_καλύτερου <- 0
   όνομα_καλύτερου <- ""

   ! για κάθε έναν από τους 18 αθλητές
   Για i από 1 μέχρι 18
      Διάβασε όνομα, βάρος_αθλητή

      ! διάβασε τα βάρη που σήκωσε ο αθλητής για την κίνηση του αρασέ
      Διάβασε αρασέ1, αρασέ2, αρασέ3
      ! ... και βρες την καλύτερη
      max_αρασέ <- αρασέ1
      Αν αρασέ2 > max_αρασέ τότε
         max_αρασέ <- αρασέ2
      Τέλος_αν
      Αν αρασέ3 > max_αρασέ τότε
         max_αρασέ <- αρασέ3
      Τέλος_αν

      ! ομοίως για την κίνηση του ζετέ
      Διάβασε ζετέ1, ζετέ2, ζετέ3
      max_ζετέ <- ζετέ1
      Αν ζετέ2 > max_ζετέ τότε
         max_ζετέ <- ζετέ2
      Τέλος_αν
      Αν ζετέ3 > max_ζετέ τότε
         max_ζετέ <- ζετέ3
      Τέλος_αν

      ! υπολόγισε το συνολικό βάρος, και βρες αν είναι μεγαλύτερο από τον έως τώρα καλύτερο
      ΣΒ <- max_αρεσέ + max_ζετέ
      Αν ΣΒ > max_ΣΒ Η (ΣΒ = max_ΣΒ ΚΑΙ βάρος_αθλητή <= βάρος_καλύτερου) τότε
         ΣΒ_καλύτερου <- ΣΒ
         βάρος_καλύτερου <- βάρος_αθλητή
         όνομα_καλύτερου <- όνομα
      Τέλος_αν
   Τέλος_επανάληψης

   Εμφάνισε "Νικητής είναι ο ", όνομα_καλύτερου, " με συνολικό βάρος ", ΣΒ_καλύτερου
Τέλος ΆρσηΒαρών

Άσκηση 6
Ο πληθυσμός μιας πόλης Α είναι 30.000 και αυξάνεται ετησίως κατά 3%. Μια πόλη Β έχει πληθυσμό 45.000 και αυξάνεται ετησίως 1%. Να γίνει αλγόριθμος που θα βρίσκει σε πόσα χρόνια από τώρα ο πληθυσμός της πόλης Α θα ξεπεράσει τον πληθυσμό της πόλης Β.

Αλγόριθμος Πληθυσμοί
   πληθ_Α <- 30000
   πληθ_Β <- 45000
   χρόνια <- 0

   Όσο πληθ_Α <= πληθ_Β επανάλαβε
      ! για κάθε χρόνο που περνάει, αύξησε τον πληθυσμό της πόλης Α κατά 3% και της Β κατά 2%
      πληθ_Α <- πληθ_Α + πληθ_Α * 3 / 100
      πληθ_Β <- πληθ_Β + πληθ_Β * 1 / 100

      ! επίσης μέτρησε τα χρόνια που έχουν έως τώρα περάσει
      χρόνια <- χρόνια + 1
   Τέλος_επανάληψης

   Εμφάνισε "Μετά από ", χρόνια, " χρόνια, ο πληθυσμός της πόλης Α θα ξεπεράσει αυτόν της Β"

Τέλος Πληθυσμοί