Πρόγραμμα: sorting.c (25 μονάδες)
Γράψτε ένα πρόγραμμα το οποίο παίρνει ως όρισμα το όνομα ενός αρχείου που περιέχει ονόματα παιδιών και το σκορ ταιριάσματος του κάθε παιδιού με έναν κοιτώνα του Hogwarts. Κάθε γραμμή περιέχει ακριβώς ένα όνομα ακολουθούμενο από παύλα (dash -) και από το σκορ ταιριάσματος (ένας αριθμός κινητής υποδιαστολής από το 0 μέχρι το 5). Η αντιστοιχία έχει ως εξής: 1 -> Gryffindor, 2 -> Hufflepuff, 3 -> Ravenclaw, 4 -> Slytherin. Το πρόγραμμα πρέπει να τυπώνει στην πρότυπη έξοδο το κάθε όνομα ακολουθούμενο από το όνομα του κοιτώνα που ταιριάζει καλύτερα. Παράδειγμα εκτέλεσης ακολουθεί:
$ cat names.txt
Harry Potter - 1.01
Hermione Granger - 1
Draco Malfoy - 4.9
Cho Chang - 3.5
Cedric Diggory - 1.50001
Luna Lovegood - 2.76
$ gcc -o sorting sorting.c
$ ./sorting names.txt
Harry Potter -> Gryffindor
Hermione Granger -> Gryffindor
Draco Malfoy -> Slytherin
Cho Chang -> Ravenclaw
Cedric Diggory -> Hufflepuff
Luna Lovegood -> Ravenclaw
Διαβάστε το αρχείο γραμμή-γραμμή με fgets και χωρίστε όνομα και σκορ στην παύλα (το όνομα έχει κενά, οπότε η strrchr βοηθά), μετατρέποντας το σκορ με strtod. Ο «καλύτερος» κοιτώνας είναι ο πλησιέστερος στο σκορ: μελετήστε τα 4.9, 3.5 και 1.50001 του παραδείγματος για να καταλάβετε τι γίνεται στα άκρα (0 και 5) και στις ισοπαλίες. Γραμμές χωρίς παύλα ή με σκορ εκτός [0, 5] είναι είσοδος εκτός προδιαγραφών.
Αριθμός στον οδηγό: Α18.18
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: exam-2023-fall-ex5-q3 ·
Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2023-fall-ex5-q3.html ·
Markdown (GitHub)