ΑΣΚΗΣΗ ΓΙΑ DIV KAI MOD

Ξεκίνησε από sarantop, 06 Δεκ 2009, 05:45:02 ΜΜ

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

sarantop

ΜΙΑ ΑΣΚΗΣΗ ΠΟΥ ΛΥΝΩ ΓΙΑ  ΤΟΥΣ ΤΕΛΕΣΤΕΣ DIV ΚΑΙ ΜΟD:

Ομάδα μαθητών στα πλαίσια κάποιας περιβαλλοντικής εκδρομής θα διαμείνει σε ξενοδοχείο. Η ομάδα μπορεί να αποτελείται από 2 καθηγητές και από 4 μέχρι και 15 μαθητές. Το ξενοδοχείο έχει δίκλινα και τρίκλινα δωμάτια. Στο δίκλινο η διανυκτέρευση κοστίζει 70€ ενώ στο  τρίκλινο 90€. Για την κατανομή των μαθητών στα δωμάτια ισχύουν τα εξής:
Οι συνοδοί καθηγητές καταλαμβάνουν 1 δίκλινο. Οι μαθητές καταλαμβάνουν όσο το δυνατόν περισσότερα τρίκλινα. Επίσης  ποτέ δεν μένει κάποιος  μαθητής μόνος του σε ένα δίκλινο. (πχ.  7 μαθητές κατανέμονται σε 1 τρικλ. και 2 δικλ. ενώ οι 8 σε 2 τρικλ και 1 δικλ ).
Να γραφεί αλγόριθμος που θα διαβάζει πόσα βράδια θέλει να μείνει η ομάδα και το πλήθος των μαθητών που την  αποτελούν. Αν το πλήθος των μαθητών δεν είναι σωστό να εκτυπώνεται  μήνυμα λάθους και ο αλγόριθμος να σταματά. Ο αλγόριθμος να υπολογίζει και να εκτυπώνει το ποσό που θα πληρώσει η ομάδα .

Η ΛΥΣΗ ΠΟΥ ΔΙΝΩ ΓΙΑ ΤΙΣ 3 ΠΕΡΙΠΤΩΣΕΙΣ ΥΠΟΛΟΙΠΟΥ ΣΤΗΝ ΑΚΕΡΑΙΑ ΔΙΑΙΡΕΣΗ ΜΕ ΤΟ 3 ΕΙΝΑΙ

ΠΡΟΓΡΑΜΜΑ ΞΕΝΟΔΟΧΕΙΟ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΠΛ, Τ, Δ, ΗΜΕΡ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΠΟΣΟ
ΑΡΧΗ

  ΔΙΑΒΑΣΕ ΠΛ, ΗΜΕΡ
 
  ΑΝ ΠΛ MOD 3 = 0 ΤΟΤΕ
    Τ <- ΠΛ DIV 3
    Δ <- 0
  ΑΛΛΙΩΣ_ΑΝ ΠΛ MOD 3 = 1 ΤΟΤΕ
    Τ <- ΠΛ DIV 3 - 1
    Δ <- 2
  ΑΛΛΙΩΣ
    Τ <- ΠΛ DIV 3
    Δ <- 1
  ΤΕΛΟΣ_ΑΝ
  Δ <- Δ + 1
  ΠΟΣΟ <- (Τ*90 + Δ*70)*ΗΜΕΡ
  ΓΡΑΨΕ ΠΟΣΟ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΞΕΝΟΔΟΧΕΙΟ

gthal

Ωραία άσκηση,
αν και μάλλον δύσκολη (?)

να προτείνω και έναν άλλο τρόπο υπολογισμού των δωματίων?

   Τ← ΠΛ div 3
   ΥΠΟΛ← ΠΛ mod 3
   Αν ΥΠΟΛ=1 τότε
      Τ← Τ-1
      ΥΠΟΛ← ΥΠΟΛ+3
   Τέλος_αν
   Δ← ΥΠΟΛ  div 2 + 1
Φιλικά,
Γιώργος Θαλασσινός

evry

Μια και χρησιμοποιούμε div/mod ας τα χρησιμοποιήσουμε στο έπακρον  >:D

ΑΡΧΗ
  ΔΙΑΒΑΣΕ ΠΛ, ΗΜΕΡ
  Τ <- ΠΛ div 3 + (ΠΛ mod 3) mod 2
  Δ <- 1 + (3 - ΠΛ mod 3) mod 3
  ΠΟΣΟ <- (Τ*90 + Δ*70)*ΗΜΕΡ
  ΓΡΑΨΕ ΠΟΣΟ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΞΕΝΟΔΟΧΕΙΟ

  Επειδή βιάζομαι (είναι και πρωί) μπορεί κάτι να μου ξέφυγε, αλλά γενικά νομίζω δουλεύει
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

gthal

χα χα !  ωραίος!
δουλεύει, αν    Τ <- ΠΛ div 3 - (ΠΛ mod 3) mod 2
(το Δ ομολογώ δεν καταλαβαίνω πώς και γιατί   :)  )

Φιλικά,
Γιώργος Θαλασσινός

evry


  Βασικά παρατηρώ ότι όταν ΠΛ mod 3 = 1 θέλω να είναι 2 και όταν  ΠΛ mod 3 = 2 θέλω να είναι 1, οπότε από εκεί η παράσταση που ψάχνω είναι η (3 - ΠΛ mod 3). Το πρόβλημα εδώ είναι πως αν το ΠΛ mod 3 = 0 κάνει 3 που δεν το θέλω, εκεί θέλω να κάνει 0. Οπότε τι καλύτερο από το να βάλω mod 3.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

sarantop

Ευχαριστώ και τους 2 σας. Τη λύση του Γιώργου την προτιμώ κυρίως για το πρόβλημα με το ΑΤΜ (κάθε ποσό<>30 να δίνεται με 50€ και 20€ μόνο ).
Κάνω μεγάλη υπόκλιση στον Ευριπίδη και δεν κρύβω ότι θα ήθελα από κάποιον αυτή την απάντηση όταν ανέβασα την άσκηση!!!!

terzantonis

Καλησπέρα κι από μένα,
Πραγματικά πολύ ωραία άσκηση και ακόμα πιο ωραία η λύση του Ευριπίδη!
Μια επισήμανση μονάχα. Επικεντρωνόμαστε στο έξυπνο κομμάτι της άσκησης και παραμερίζουμε το απλό...
η εκφώνηση αναφέρει :
"..Αν το πλήθος των μαθητών δεν είναι σωστό να εκτυπώνεται  μήνυμα λάθους και ο αλγόριθμος να σταματά..."
Κι επειδή τα δεδομένα μας λένε ότι :
"Η ομάδα μπορεί να αποτελείται από 2 καθηγητές και από 4 μέχρι και 15 μαθητές."
Αρκεί να βάλουμε σε ένα έλεγχο τις λύσεις που παρουσιάσατε σε 2 εκδοχές.
Η λαϊκή λύση η δική μου είναι η εξής (τεσταρισμένη όχι εξονυχιστικά στο pseudoglossa.gr):
Αλγόριθμος Diamoni
	Εμφάνισε 'Dose ari8mo ma8iton:'
	Διάβασε ma8ites
	Εμφάνισε 'Dose ari8mo dianyxtereyseon:'
	Διάβασε dianyxt
	Αν ma8ites>=4 και ma8ites<=15 τότε 
		trikl← ma8ites div 3
		dikl← 1
		Αν (ma8ites mod 3)=1 τότε 
			trikl← trikl-1
			dikl← 3
		αλλιώς_αν (ma8ites mod 3)=2 τότε 
			dikl← 2
		Τέλος_αν 
		Εμφάνισε 'Apaitountai ', dikl, 'diklina kai ', trikl, 'triklina'
		kostos← dianyxt* (dikl*70 + trikl*90)
		Εμφάνισε 'To kostos ths diamonhs ths omadas einai ', kostos, 'euro'
	αλλιώς 
		Εμφάνισε 'to pli8os ton ma8iton einai la8os!'
	Τέλος_αν 
Τέλος Diamoni


elenitaaaaa

μια απορια... το  "Τ← ΠΛ div ΤΡΙΚ"    αν ειχε δοθει στο ΤΡΙΚ η τιμη 3, ισχυει??