Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α19.11 · Πρωτάθλημα

Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #13, Θέμα 3 · Δυσκολία ★★★ · programming · Κεφάλαια: 19, 17, 18

Πρόγραμμα: league.c

Γράψτε ένα πρόγραμμα το οποίο παίρνει ως όρισμα ένα αρχείο με αποτελέσματα αγώνων ανάμεσα σε ομάδες και στο τέλος τυπώνει όλες τις ομάδες ταξινομημένες σε αύξουσα σειρά με βάση την βαθμολογία τους. Σε περίπτωση ισοβαθμίας, χρησιμοποιούμε την διαφορά γκολ για να αποφασίσουμε ποια ομάδα είναι πρώτη. Μια ομάδα παίρνει 3 βαθμούς σε περίπτωση νίκης, 1 βαθμό σε περίπτωση ισοπαλίας και 0 βαθμούς εάν χάσει. Το αρχείο θα περιέχει έναν αγώνα ανά γραμμή και η μορφή του θα είναι: ΟΜΑΔΑ1-ΟΜΑΔΑ2,ΓΚΟΛ1-ΓΚΟΛ2 όπου ΓΚΟΛ1 είναι τα γκολ που έβαλε η ΟΜΑΔΑ1 και αντίστοιχα για τα ΓΚΟΛ2/ΟΜΑΔΑ2. Παράδειγμα εκτέλεσης ακολουθεί:

$ gcc -o league league.c
$ cat games.txt
ΑΕΚ-Πανιώνιος,4-2
Ιωνικός-Παναχαϊκή,3-0
Ξάνθη-Ολυμπιακός,1-5
Παναθηναϊκός-Ακράτητος,3-1
Άρης-Ηρακλής,2-2
ΠΑΟΚ-ΠΑΣ Γιάννινα,2-3
ΠΑΟΚ-Παναχαϊκή,2-0
Ξάνθη-Ηρακλής,1-2
Ολυμπιακός-ΠΑΣ Γιάννινα,1-0
Πανιώνιος-Παναθηναϊκός,0-2
Άρης-ΑΕΚ,2-2
Ιωνικός-Ακράτητος,3-3
$ ./league games.txt
Ολυμπιακός, 6, (6 - 1)
Παναθηναϊκός, 6, (5 - 1)
Ιωνικός, 4, (6 - 3)
ΑΕΚ, 4, (6 - 4)
Ηρακλής, 4, (4 - 3)
ΠΑΟΚ, 3, (4 - 3)
ΠΑΣ Γιάννινα, 3, (3 - 3)
Άρης, 2, (4 - 4)
Ακράτητος, 1, (4 - 6)
Πανιώνιος, 0, (2 - 6)
Ξάνθη, 0, (2 - 7)
Παναχαϊκή, 0, (0 - 5)

Υπόδειξη

Κρατήστε ένα struct ανά ομάδα (όνομα, βαθμοί, γκολ υπέρ, γκολ κατά) σε δυναμικό πίνακα, και για κάθε αγώνα βρείτε ή προσθέστε τις δύο ομάδες. Τα ονόματα είναι UTF-8 και μπορεί να έχουν κενά, οπότε χωρίστε τη γραμμή στα - και , και όχι στα κενά. Ταξινομήστε με qsort με βαθμούς και μετά διαφορά γκολ.

Αριθμός στον οδηγό: Α19.11 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: exam-2023-fall-ex13-q3 · Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2023-fall-ex13-q3.html · Markdown (GitHub)