Εδώ είναι η τελική λύση, με μια κλάση που τα έχει όλα. Είναι ο πιο γρήγορος αλλά δεν έχει την δυνατότητα όπως οι άλλοι να ξεκινήσουν από το δεύτερο ή άλλο εκτός από το πρώτο ψηφίο μέτρησης. Παρόλα αυτά έχει όλα τα άλλα με κέρδος ότι δεν κάνουμε κλήσεις σε κάθε γέμισμα ενός μετρητή για να αυξήσει τον αμέσως επόμενο. Η μετατροπή της προηγούμενης έκδοσης δεν πήρε πολύ! Τώρα έκανα τη συνάρτηση Βαλε_Αρχική_Θέση() ως τμήμα της κλάσης. Επειδή περνάω μεταβλητές τιμές την βάζω σε Σωρός Νέος {} έτσι για να μην γίνει λάθος και πάρει και άλλες τιμές!
Αλλάξτε το Bit=11 σε Bit =14
Βάλτε Φόρμα 80,40 για να βλέπετε περισσότερα
Αν θέλετε βάλτε ανά δέκα ή είκοσι μετρήσεις μια Π$=Κομ$ ώστε να περιμένει το σύστημα να πατήσετε ένα πλήκτρο για να συνεχίσει!
Κλάση ΠολυΜετρητής {
Πίνακας αρ(),μηδ()=0,μεγ()=1,μεγ1()=0
μετρητές \\ -1
σύνολο
Τμήμα ΠολυΜετρητής {
Διάβασε Ν
αν Ν>0 τότε {
.μετρητές<=Ν-1
Πίνακας .αρ(Ν),.μηδ(Ν)=0,.μεγ(Ν)=1,.μεγ1(Ν)=0
}
}
Τμήμα μετρησε {
κ=0
Αν Ταύτιση("Α") Τότε διαβασε κ
\\ ένα μπλοκ με την κυκλικά κάνει επανάληψη
\\ η εντολή κυκλικά αλλάζει μια σημαία εσωτερικά
\\ ο έλεγχος της σημαίας γίνεται στο τέλος του μπλοκ
{
κ--
.ΜέτρησεΜόνο
Αν κ>0 Τότε κυκλικά
}
}
Τμήμα ΜέτρησεΜόνο {
ι=0
.σύνολο++
{
.αρ(ι)++
\\ δεν βάζουμε αγκύλες για να δράσει το κυκλικά σε αυτές
Αν .αρ(ι)>.μεγ1(ι) Τότε .αρ(ι)=.μηδ(ι) : Αν ι<.Μετρητές Τότε ι++ : Κυκλικά
}
}
Τμήμα μετρ {
Αν Ταύτιση("ΑΑΑ") Τότε {
διάβασε ι, .μηδ(ι), .μεγ(ι) : .μεγ1(ι)=.μεγ(ι)-1+.μηδ(ι)
.αρ(ι)=.μηδ(ι)
} Αλλιώς.Αν Ταύτιση("ΑΑ") Τότε {
διάβασε ι, .μεγ(ι) : .μεγ1(ι)=.μεγ(ι)-1
.αρ(ι)=.μηδ(ι)
}
}
Συνάρτηση ολαμαζί$ {
α$=""
αν .μετρητές >0 τότε {
Για ι =0 έως .μετρητές-1 {
α$=Μορφή$(", {0}",.αρ(ι))+α$
}
}
=Μορφή$("{0}",.αρ(.μετρητές))+α$
}
Τμήμα Βαλε_Αρχική_Θέση {
Διάβασε Ν
Αν μέγεθος.σωρού>0 τότε {
Βάλε Ν '' ξαναβάζω στο σωρό!
Ν=μέγεθος.σωρού-1
Δες οκ {
Επανέλαβε {
.αρ(Ν)=(Αριθμός-.μηδ(Ν)) υπολ .μεγ(Ν) +.μηδ(Ν)
\\
Ν--
} μέχρι Ν<0
}
Αν όχι οκ τότε Άδειασε Λάθος : Λάθος "λάθος στην παράμετρο "+γραφη$(Ν)
} αλλιώς {
.μέτρησε Ν
}
}
}
\\ κυρίως πρόγραμμα:
Bit=11
Α=ΠολυΜετρητής(Bit)
Για ι= 0 έως Bit-1 {
Α.μετρ ι, 0, 2
}
Σωρός Νέος {
Α.Βαλε_Αρχική_Θέση 1,0,0,1,1,0,0,0,0,0,0
Α.Βαλε_Αρχική_Θέση 3 ' +3
}
Για Α {
Για ι=1 Έως 10 {
Τύπωσε .ολαμαζί$(), .σύνολο ' τυπώνει το σύνολο των μετρήσεων -1!
.ΜετρησεΜόνο
}
}
Ζάρια=2
Α=ΠολυΜετρητής(Ζάρια)
Για ι= 0 έως Ζάρια-1 {
Α.μετρ ι, 1, 6
}
Για Α {
Για ι=1 Έως 6**Ζάρια {
Τύπωσε .ολαμαζί$(), .σύνολο+1 ' τυπώνει το σύνολο των μετρήσεων!
.ΜετρησεΜόνο
αν ι υπολ 10=0 τότε Π$=Κομ$
}
}
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
You can feel free to write any suggestion, or idea on the subject.