Ntzios Kostas
Νεοφερμένος
Ο Ntzios Kostas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 50 ετών και Καθηγητής. Έχει γράψει 56 μηνύματα.
23-01-09
14:14
Μπορείς να κρατήσεις τα ονόματα σε ένα δεύτερο πίνακα για να αποφύγεις όλες αυτές τις αντιμεταθέσεις
Δεν νομίζω ότι γίνεται αυτό, γιατί εκτός από το όνομα στο τέλος ζητάει και τις 6 μετρήσεις του. Αν δεν τις ζήταγε, τότε πράγματι γινόταν.
Μία λύση που είναι αρκετά πιο πολύπλοκη είναι να κατασκευάσουμε έναν πίνακα που σε κάθε θέση του κ θα βάλουμε το κ και θα αντιμεταθέτουμε τα στοιχεία αυτού του πίνακα. Μετά την ταξινόμηση στη θέση του 1 για παράδειγμα, θα βρίσκεται η θέση του αθλητή -στους άλλους δύο πίνακες- ο οποίος βγήκε πρώτος. Αν τον πίνακα αυτό τον ονομάσουμε Θ τότε αφού υπολογίστηκαν οι τελικές βαθμολογίες των μαθητών έχουμε:
Code:
....
για κ από 1 μέχρι 15
Θ[κ]<-κ
τέλος_επανάληψης
!ταξινόμηση
για i από 2 μέχρι 15
για j από 15 μέχρι i με_βήμα -1
Αν Καλ_Με[j]>Καλ_Με[j-1] τότε
αντιμετάθεσε Καλ_Με[j], Καλ_Με[j-1]
αντιμετάθεσε Θ[j], Θ[j-1]
τέλος_αν
τέλος_επανάληψης
τέλος_επανάληψης
εμφάνισε Ον[Θ[1]], Ον[Θ[2]], Ον[Θ[3]]
διάβασε όνομα
βρέθηκε<-ψευδής
αθλ_που_βρέθηκε<-0
αθλ<-1
όσο αθλ<=15 και βρέθηκε = ψευδής επανάλαβε
αν Ον[αθλ] = όνομα τότε
αθλ_που_βρέθηκε<-αθλ
βρέθηκε<-αληθής
αλλιώς
αθλ<-αθλ+1
τέλος_αν
τέλος_επαναληψης
αν βρέθηκε = αληθής τότε
για pos από 1 μέχρι 15
αν Θ[pos] = αθλ_που_βρέθηκε τότε
εμφάνισε pos [COLOR=Gray]!είναι η σειρά κατάταξης του αθλητή που βρέθηκε[/COLOR]
τέλος_αν
τέλος_επανάληψης
για βολ από 1 μέχρι 6
εμφάνισε Με[αθλ_που_βρέθηκε, βολ]
τέλος_επανάληψης
αλλιώς
εμφάνισε 'δεν υπάρχει αυτό το όνομα'
τέλος_αν
....
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Ntzios Kostas
Νεοφερμένος
Ο Ntzios Kostas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 50 ετών και Καθηγητής. Έχει γράψει 56 μηνύματα.
21-01-09
22:17
Θα σου δώσω και άλλη μία λύση (ίδια βασικά με του Παναγιώτη) η οποία απλά δεν χρησιμοποιεί το i και το j κατά την εισαγωγή και εμφάνιση των αποτελεσμάτων. Δες την μπορεί να σε βοηθήσει.Σε εναν αγωνα ακοντιου συμμετείχαν 15 αθλητές.Κάθε αθλητής εχει δικαιωμα 6 βολών.Να γραφει αλγοριθμος που ν διαβάζει τ ονομα και τισ 6 μετρήσεις καθε αθλητη και ν εμφανιζει:A)ΤΗν καλυτερη προσπαθεια καθε αθλητη
Β)τα ονόματα τςν τριών πρώτων αθλητών
Γ)ΝΑ ΔΙΑΒαζει τ ονομα ενος αθλητη κ ν εμφανιζει την θέση στην τελική κατάταξη ΚΑΙ ολες τις προσπαθειες του.....
Code:
[COLOR=Gray]!για κάθε αθλητή από τον 1ο μέχρι και τον 15ο [/COLOR]
για αθλ από 1 μέχρι 15
διάβασε Ον[αθλ]
[COLOR=Gray]!για κάθε βολή του από τον 1η μέχρι και τον 15η [/COLOR]
για βολ από 1 μέχρι 6
διάβασε Με[αθλ,βολ] [COLOR=Gray]!διάβασε την μέτρηση του αθλητή στη βολή[/COLOR]
τέλος_επανάληψης
τέλος_επανάληψης
[COLOR=Gray]!υπολογισμός της καλύτερης βολής κάθε αθλητή.[/COLOR]
για αθλ από 1 μέχρι 15
Καλ_Με[αθλ]<-Με[αθλ,1] ![COLOR=Gray]ως καλύτερη μέτρηση του αθλητή θέτω την μέτρηση του αθλητή στην 1η βολή[/COLOR]
για βολ από 2 μέχρι 6
αν Με[αθλ,βολ]>Καλ_Με[αθλ] τότε
Καλ_Με[αθλ]<- Με[αθλ, βολ] [COLOR=Gray]!η καλύτερη [/COLOR][COLOR=Gray]μέτρηση [/COLOR][COLOR=Gray]του αθλητή είναι ώρα να αλλάξει.[/COLOR]
τέλος_αν
τέλος_επανάληψης
εμφάνισε Καλ_Με[αθλ]
τέλος_επανάληψης
[COLOR=Gray]!ταξινόμηση των στοιχείων του πίνακα με τις Καλύτερες Μετρήσεις στην οποία πρέπει να αντιμετατεθούν και οι έξι επιδόσεις των αθλητών[/COLOR]
για i από 2 μέχρι 15
για j από 15 μέχρι i με_βήμα -1
αν Καλ_Με[j]>Καλ_Με[j-1] τότε
αντιμετάθεσε Καλ_Με[j],Καλ_Με[j-1]
αντιμετάθεσε Ον[j],Oν[j-1]
για βολ από 1 μέχρι 6
αντιμετάθεσε Με[j,βολ], Με[j-1,βολ]
τέλος_επανάληψης
τέλος_αν
τέλος_επανάληψης
τέλος_επανάληψης
εμφάνισε Ον[1],Ον[2],Ον[3]
[COLOR=Gray]!εισαγωγή ονόματος[/COLOR]
διάβασε όνομα
[COLOR=Gray]!ξεκινάει η αναζήτηση[/COLOR]
βρέθηκε<-ψευδής
αθλ_που_βρέθηκε<-0 ![COLOR=Gray]ο αθλητής που βρέθηκε[/COLOR]
αθλ<-1
όσο αθλ<=15 και βρέθηκε= ψευδής επανάλαβε
αν Ον[αθλ] = όνομα τότε
βρέθηκε<-αληθής
αθλ_που_βρέθηκε<-αθλ [COLOR=Gray]!ο αθλητής που βρέθηκε είναι ο συγκεκριμένος αθλητής[/COLOR]
αλλιώς
αθλ<-αθλ+1[COLOR=Gray]!να πάμε να ελέγξουμε τον επόμενο αθλητή[/COLOR]
τέλος_αν
τέλος_επανάληψης
αν βρέθηκε = αληθής τότε
εμφάνισε Ον[αθλ_που_βρεθ]
[COLOR=Gray] !για κάθε βολή από την πρώτη μέχρι και την 6η [/COLOR]
για βολ από 1 μέχρι 6
[COLOR=Gray]!εμφάνισε την μέτρηση του αθλητή που βρέθηκε, στην αντίστοιχη βολή [/COLOR]
εμφάνισε Με[αθλ_που_βρεθ,βολ]
τέλος_αν
αλλιώς
εμφάνισε "δεν υπάρχει αυτό το όνομα"
τέλος_αν
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.