Δίνονται οι πίνακες Σ1(Κ,Κ) και Π1(Κ,Κ) που περιέχουν τα αποτελέσματα των αγώνων ομίλου του EuroBasket. Ο πίνακας Σ1 περιέχει τα αποτελέσματα των αγώνων (Ν (νίκη) ή Η (ήττα)), ενώ ο πίνακας Π1 τη διαφορά πόντων για κάθε αγώνα. Να γραφεί πρόγραμμα το οποίο θα βρίσκει και θα εκτυπώνει την τελική βαθμολογία του ομίλου. Σε περίπτωση ισοβαθμίας προηγείται η ομάδα που έχει την καλύτερη διαφορά πόντων από τις ισόβαθμές της.
Παρατήρηση: Τα στοιχεία της κύριας διαγωνίου δεν περιέχουν καμία πληροφορία (καμία ομάδα δεν παίζει με τον εαυτό της!). Ο πίνακας περιέχει στοιχεία μόνο κάτω ή πάνω από τη διαγώνιό του, είναι δηλαδή τριγωνικός (κάθε ομάδα παίζει μόνο μία φορά με κάθε αντίπαλο).
ΛΥΣΗ:
ΠΡΟΓΡΑΜΜΑ Πρωτάθλημα ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΕΣ : Σ1[5, 5], ΟΜΑΔΑ[5], βοηθητική1 ! Έστω 5 ομάδες στον όμιλο ΑΚΕΡΑΙΕΣ : Π1[5, 5], ΒΑΘΜΟΙ[5], ΔΙΑΦΟΡΑ[5], i, j, βοηθητική2 ΑΡΧΗ !Αρχικοποίηση Πινάκων ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΒΑΘΜΟΙ[i]<--0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΔΙΑΦΟΡΑ[i]<--0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Εισαγωγή στοιχείων ΟΜΑΔΑ, Π1, Σ1 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΡΑΨΕ 'ΔΩΣΕ ΟΝΟΜΑ ΟΜΑΔΑΣ ', i ΔΙΑΒΑΣΕ ΟΜΑΔΑ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'Δώστε Nίκη (Ν) /Ήττα (H)' ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΙΑ j ΑΠΟ i+1 ΜΕΧΡΙ 5 ! Άνω τριγωνικός ΓΡΑΨΕ 'Ομάδα ', ΟΜΑΔΑ [i], 'εναντίον ομάδας ', ΟΜΑΔΑ[j] ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ Σ1[i, j] ΜΕΧΡΙΣ_ΟΤΟΥ (Σ1[i, j] = 'Ν') Η (Σ1[i, j] = 'Η') ΓΡΑΨΕ 'Διαφορά πόντων για τον αγώνα αυτό' ΔΙΑΒΑΣΕ Π1[i, j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Οι ομάδες, που συμμετέχουν, σε ένα αγώνα, βαθμολογούνται με ! α. δύο βαθμούς (2), στη περίπτωση νίκης ! β. ένα βαθμό (1), στη περίπτωση ήττας. ! H διαφορά πόντων προσμετράται μόνο στον νικητή. ! α' τρόπος, αποτελεσματικότερος αλλά δυσκολότερος (βλ. τέλος) ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4 ! διόρθωση στο άνω όριο,5(14.3.17) ΓΙΑ j ΑΠΟ i+1 ΜΕΧΡΙ 5 ΑΝ (Σ1[i, j] = 'N') ΤΟΤΕ ΒΑΘΜΟΙ[i] <-- ΒΑΘΜΟΙ[i] + 2 ΒΑΘΜΟΙ[j] <-- ΒΑΘΜΟΙ[j] + 1 ΔΙΑΦΟΡΑ[i] <-- ΔΙΑΦΟΡΑ[i] + Π1[i, j] ΑΛΛΙΩΣ ΒΑΘΜΟΙ[i] <-- ΒΑΘΜΟΙ[i] + 1 ΒΑΘΜΟΙ[j] <-- ΒΑΘΜΟΙ[j] + 2 ΔΙΑΦΟΡΑ[j] <-- ΔΙΑΦΟΡΑ[j] + Π1[i, j] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Ταξινόμηση ευθείας ανταλλαγής παράλληλων πινάκων ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 5 ΓΙΑ j ΑΠΟ 5 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1 ΑΝ (ΒΑΘΜΟΙ[j-1] < ΒΑΘΜΟΙ[j]) ΤΟΤΕ ! φθίνουσα ταξινόμηση ως προς τη βαθμολογία ! αντιμετάθεση πίνακα βαθμολογίας βοηθητική2 <-- ΒΑΘΜΟΙ[j-1] ΒΑΘΜΟΙ[j-1] <-- ΒΑΘΜΟΙ[j] ΒΑΘΜΟΙ[j] <-- βοηθητική2 ! ταυτόχρονη αντιμετάθεση πίνακα διαφορών βοηθητική2 <-- ΔΙΑΦΟΡΑ[j-1] ΔΙΑΦΟΡΑ[j-1] <-- ΔΙΑΦΟΡΑ[j] ΔΙΑΦΟΡΑ[j] <-- βοηθητική2 ! ταυτόχρονη αντιμετάθεση πίνακα ονομάτων βοηθητική1 <-- ΟΜΑΔΑ[j-1] ΟΜΑΔΑ[j-1] <-- ΟΜΑΔΑ[j] ΟΜΑΔΑ[j] <-- βοηθητική1 ΑΛΛΙΩΣ_ΑΝ (ΒΑΘΜΟΙ[j-1] = ΒΑΘΜΟΙ[j]) ΤΟΤΕ !σε περίπτωση ισοβαθμίας !φθίνουσα ταξινόμηση ως προς τη διαφορά πόντων ! αντιμετάθεση πίνακα διαφορών ΑΝ (ΔΙΑΦΟΡΑ[j-1] < ΔΙΑΦΟΡΑ[j]) ΤΟΤΕ βοηθητική2 <-- ΔΙΑΦΟΡΑ[j-1] ΔΙΑΦΟΡΑ[j-1] <-- ΔΙΑΦΟΡΑ[j] ΔΙΑΦΟΡΑ[j] <-- βοηθητική2 !ταυτόχρονη αντιμετάθεση πίνακα ονομάτων βοηθητική1 <-- ΟΜΑΔΑ[j-1] ΟΜΑΔΑ[j-1] <-- ΟΜΑΔΑ[j] ΟΜΑΔΑ[j] <-- βοηθητική1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ 'ΤΕΛΙΚΗ ΚΑΤΑΤΑΞΗ:' ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΡΑΨΕ ΟΜΑΔΑ[i], ' ΒΑΘΜΟΙ ', ΒΑΘΜΟΙ[i], 'ΔΙΑΦΟΡΑ ΠΟΝΤΩΝ ', ΔΙΑΦΟΡΑ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
! β' τρόπος, (απλούστερος) για τον υπολογισμό της βαθμολογίας ...... ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΙΑ j ΑΠΟ 5 ΜΕΧΡΙ 5 ΑΝ i > j ΤΟΤΕ ΑΝ (Σ1[i, j] = 'N') ΤΟΤΕ ΒΑΘΜΟΙ[i] <-- ΒΑΘΜΟΙ[i] + 2 ΒΑΘΜΟΙ[j] <-- ΒΑΘΜΟΙ[j] + 1 ΔΙΑΦΟΡΑ[i] <-- ΔΙΑΦΟΡΑ[i] + Π1[i, j] ΑΛΛΙΩΣ ΒΑΘΜΟΙ[i] <-- ΒΑΘΜΟΙ[i] + 1 ΒΑΘΜΟΙ[j] <-- ΒΑΘΜΟΙ[j] + 2 ΔΙΑΦΟΡΑ[j] <-- ΔΙΑΦΟΡΑ[j] + Π1[i, j] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
.....
Πρόσφατα σχόλια