Τρίτη, 17 Ιουλίου 2018

Σπαζοκεφαλιά

Βαθμός Δυσκολίας:
4/5
Εκφώνηση Ασκησης: 

Να γραφεί πρόγραμμα το οποίο:

 -να διαβάζει τριψήφιους αριθμούς (να εκτελεί έλεγχο εγκυρότητας δεδομένων) μέχρι να δοθεί κάποιος αριθμός που να είναι κατά 1 μονάδα μικρότερος από τον προηγούμενο.

 -να καλεί υποπρόγραμμα το οποίο να μετατρέπει τις μονάδες του αριθμού σε εκατοντάδες και τις εκατοντάδες σε μονάδες (π.χ. το 123 να το μετατρέπει σε 321)

 -αν ο αριθμός που διαβάζει έχει τουλάχιστον 2 φορές το ίδιο ψηφίο

   να διαβάζει έναν δεκαδικό αριθμό (χωρίς έλεγχο εγκυρότητας) και να μετατρέπει όλο το δεκαδικό κομμάτι σε ακέραιο και το ακέραιο κομμάτι του σε δεκαδικό και να το εμφανίζει(π.χ. το 234,6834 να το κάνει 6834,234 )

  αλλιώς να εμφανίζει το πιο κοντινό πολλαπλάσιο του 5 στον τριψήφιο αριθμό που έχει διαβάσει και να τερματίζει την επανάληψη.

Επιμέλεια: Πάνος Ζυγούρος

H άσκηση συμμετέχει στον διαγωνισμό 1 Άσκηση = 1 Tablet.

 

Βαθμολογία Κριτών

Χρήστος Τσάλης Γιάννης Καψάλης Φανή Αναγνώστου Δημήτρης Τζανέκας Μίλτος Στάμος
8.1 8 8 8 8

 

Συνολική Βαθμολογία Κριτών               40.1

Συνολική Βαθμολογία από τα Likes        2

Συνολική Βαθμολογία                       42.1

 

Λύση Άσκησης: 

ΠΡΟΓΡΑΜΜΑ ΣΠΑΖΟΚΕΦΑΛΙΑ
 ΜΕΤΑΒΛΗΤΕΣ
   ΠΡΑΓΜΑΤΙΚΕΣ: Δ_ΑΡ, Δ_Μ, ΑΚ_Μ, Ν_ΑΡ
   ΑΚΕΡΑΙΕΣ: ΑΡ, ΑΡ2Μ, Δ, Ε, Κ_ΑΡ, ΤΕΜΡ
   ΛΟΓΙΚΕΣ: FLAG
 ΑΡΧΗ
   ΔΙΑΒΑΣΕ ΑΡ
   ΟΣΟ ΑΡ<100 Ή ΑΡ>999 ΕΠΑΝΑΛΑΒΕ
     ΔΙΑΒΑΣΕ ΑΡ
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   FLAG ←ΨΕΥΔΗΣ
   ΟΣΟ FLAG=ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
     Μ←(ΑΡMOD10)
     Δ←(ΑΡMOD100-Μ)/10
     Ε←(ΑΡMOD1000-Δ*10 –Μ)/100
     ΑΡ2←Σ(Μ,Δ,Ε)
     ΑΝ Μ=Δ Ή Δ=Ε Ή Μ=Ε ΤΟΤΕ
       ΔΙΑΒΑΣΕ Δ_ΑΡ
       Δ_Μ←Δ_ΑΡ - Α_Μ(Δ_ΑΡ)
       ΟΣΟ Α_Μ(Δ_Μ)<>Δ_Μ ΕΠΑΝΑΛΑΒΕ
         Δ_Μ←Δ_Μ*10
       ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
       ΑΚ_Μ←Α_Μ(Δ_ΑΡ)
       ΟΣΟ Α_Μ(ΑΚ_Μ)<>0 ΕΠΑΝΑΛΑΒΕ
         ΑΚ_Μ←ΑΚ_Μ*0,1
       ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
       Ν_ΑΡ←Δ_Μ + ΑΚ_Μ
       ΓΡΑΨΕ Ν_ΑΡ
    ΑΛΛΙΩΣ
       ΑΝ ΑΡMOD5<=2 ΤΟΤΕ
         Κ_ΑΡ←ΑΡ+ΑΡMOD5
       ΑΛΛΙΩΣ
         Κ_ΑΡ←ΑΡ+(5-ΑΡMOD5)
       ΤΕΛΟΣ_ΑΝ
       ΓΡΑΨΕ Κ_ΑΡ
      FLAG←ΑΛΗΘΗΣ
    ΤΕΛΟΣ_ΑΝ
    ΤΕΜΡ←ΑΡ
    ΔΙΑΒΑΣΕ ΑΡ
    ΑΝ ΤΕΜΡ-ΑΡ=1 ΤΟΤΕ
      FLAG=ΑΛΗΘΗΣ
    ΤΕΛΟΣ_ΑΝ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Σ(Μ,Δ,Ε):ΑΚΕΡΑΙΑ
 ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ Μ,Δ,Ε,ΑΡ
 ΑΡΧΗ
   ΑΡ← Μ*100+Δ*10+Ε
   Σ←ΑΡ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ