Συνάδελφοι, θα ήθελα τις ιδέες σας.
Έχω πίνακα Ν θέσεων ταξινομημένο με τυχαία ονόματα αλλά κάποια ίδια.
Ποιος είναι ο καλύτερος τρόπος να βρω το πλήθος των διαφορετικών ονομάτων και το πλήθος από το καθένα;
π.χ. Έχω 2 ονόματα. Η Αθηνά εμφανίζεται 8 φορές, ο Γιώργος εμφανίζεται 17 φορές κτλ.
Ευχαριστώ προκαταβολικά.
Δεδομένα:
Π: ['Αθηνά', 'Αθηνά', 'Γιώργος', 'Γιώργος', 'Γιώργος', 'Γιώργος', 'Παναγιώτης'], Ν: 7
Αποτελέσματα:
Ο: ['Αθηνά', 'Γιώργος', 'Παναγιώτης', '', '', '', ''], Ε: [2, 4, 1, 0, 0, 0, 0], Μ: 3
Δηλαδή θα διατρέξεις τον πίνακα μόνο μία φορά.
Κάθε φορά που βρίσκεις διαφορετικό όνομα, θα αυξάνεις τον μετρητή Μ.
Θα προσθέτεις το όνομα που βρήκες σε έναν νέο πίνακα Ο (Ονόματα).
Και παράλληλα θα αυξάνεις τους μετρητές εμφανίσεων, που θα τους κρατάς σε νέο πίνακα Ε.
Άρα στο παραπάνω παράδειγμα βρέθηκαν Μ=3 διαφορετικά ονόματα, που βρίσκονται στον πίνακα Ο, με τις αντίστοιχες εμφανίσεις τους στον πίνακα Ε.
Με τη συγκεκριμένη εκφώνηση το πρόβλημα μπορεί να λυθεί και χωρίς πίνακες Ο και Ε (κατευθείαν ΓΡΑΨΕ με το που τα υπολογίζεις), αλλά είναι πιο παραστατικό και επαναχρησιμοποιήσιμο με τους πίνακες Ο και Ε.
Μία εναλλακτική λύση χωρίς ταξινόμηση του αρχικού πίνακα:
ΠΡΟΓΡΑΜΜΑ ΜΟΝΑΔΙΚΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:i,k,Π[10]
ΧΑΡΑΚΤΗΡΕΣ:ΟΝ[10],Ξ[10]
ΑΡΧΗ
ΟΝ[1] <-- 'ΑΝΤΩΝΗΣ'
ΟΝ[2] <-- 'ΑΝΤΩΝΗΣ'
ΟΝ[3] <-- 'ΑΝΤΩΝΗΣ'
ΟΝ[4] <-- 'ΓΙΩΡΓΟΣ'
ΟΝ[5] <-- 'ΓΙΩΡΓΟΣ'
ΟΝ[6] <-- 'ΚΩΣΤΑΣ'
ΟΝ[7] <-- 'ΜΑΝΩΛΗΣ'
ΟΝ[8] <-- 'ΜΑΝΩΛΗΣ'
ΟΝ[9] <-- 'ΝΙΚΟΣ'
ΟΝ[10] <-- 'ΝΙΚΟΣ'
k <-- 1
Ξ[1] <-- ΟΝ[1]
Π[1] <-- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 10
ΑΝ ΟΝ [ i ] = ΟΝ [ i - 1 ] ΤΟΤΕ
Π [ k ] <-- Π [ k ]+1
ΑΛΛΙΩΣ
k <-- k+1
Ξ [ k ] <-- ΟΝ [ i ]
Π [ k ] <-- 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ k
ΓΡΑΨΕ Ξ [ i ] , Π [ i ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΜΟΝΑΔΙΚΑ-ΔΙΑΧΩΡΙΣΜΟΣ.psc (https://alkisg.mysch.gr/steki/index.php?action=dlattach;attach=6943;type=preview;file)
Σας ευχαριστώ πάρα πολύ όλους.