Σημαντικό: φροντίζουμε τα προγράμματά μας να είναι ευανάγνωστα, αποδοτικά (σε χώρο και χρόνο) και να έχουν έξοδο όμοια με τα παραδείγματα εκτέλεσης καθώς αυτό είναι μέρος της βαθμολόγησης. Για οποιαδήποτε είσοδο εκτός προδιαγραφών το πρόγραμμα πρέπει να τερματίζει με exit code 1 και αντίστοιχο μήνυμα σφάλματος.
Γράψτε ένα πρόγραμμα που παίρνει δεκαδικούς ακεραίους ως ορίσματα από την γραμμή εντολών και τυπώνει για κάθε έναν από αυτούς εάν έχει έναν άρτιο αριθμό από bits που είναι 1 (even parity). Για παράδειγμα ο αριθμός 5 είναι ο 101 στο δυαδικό και επομένως έχει άρτιο αριθμό από bits που είναι 1. Αντίθετα ο αριθμός 7 (111 στο δυαδικό) έχει περιττό αριθμό από bits που έχουν τεθεί στο 1. Παράδειγμα εκτέλεσης ακολουθεί:
$ ./parity 5 7 64 65 987234 97823462
Number 5 has even parity
Number 7 does not have even parity
Number 64 does not have even parity
Number 65 has even parity
Number 987234 has even parity
Number 97823462 does not have even parity
$ ./parity 92873847981279843
Number 92873847981279843 has even parity
$ ./parity 92873847981279844
Number 92873847981279844 does not have even parity
Γράψτε ένα πρόγραμμα που διαβάζει από την πρότυπη είσοδο (stdin) ένα κωδικοποιημένο (ως δεκαεξαδικοί χαρακτήρες) κείμενο και το τυπώνει στην πρότυπη έξοδο (stdout) αποκωδικοποιημένο. Με την δεκαεξαδική κωδικοποίηση κάθε δύο δεκαεξαδικά ψηφία αντιστοιχούν σε έναν χαρακτήρα. Για παράδειγμα τα ψηφία 4b αντιστοιχούν στον δεκαεξαδικό 0x4b που αντιστοιχούν στον χαρακτήρα ascii 'K'. Η αποκωδικοποίηση του υπόλοιπου κειμένου συνεχίζει με τον ίδιο τρόπο. Οποιοσδήποτε χαρακτήρας εισόδου δεν είναι δεκαεξαδικός (a-f, A-F, 0-9) μπορεί να αγνοηθεί. Παράδειγμα εκτέλεσης ακολουθεί:
$ gcc -o decode decode.c
$ cat encoded_message.txt
4b65657020796F7572206661636520616C7761797320
746f77617264207468652073756e7368696e652c2061�
6e6420736861646f77732077696c6c2066616c6c2062
6568696e6420796f752e
$ ./decode < encoded_message.txt
Keep your face always toward the sunshine, and shadows will fall behind you.
Γράψτε ένα πρόγραμμα που παίρνει ως ορίσματα δύο ονόματα αρχείων που περιέχουν πίνακες αριθμών κινητής υποδιαστολής και στην συνέχεια τυπώνει το γινόμενο των δύο πινάκων με ακρίβεια δύο δεκαδικών ψηφίων. Στην πρώτη γραμμή κάθε αρχείου περιέχονται οι διαστάσεις του πίνακα (γραμμές και στήλες). Σύμφωνα με τον ορισμό, το γινόμενο δύο πινάκων A (
Παράδειγμα εκτέλεσης ακολουθεί:
$ gcc -o mat_mult mat_mult.c
$ cat mat1.txt
2 3
1.12 2.01 3.22
4.08 5.02 6.05
$ cat mat2.txt
3 2
7 7.99
9.09 10.0
11.11 12.21
$ ./mat_mult mat1.txt mat2.txt
61.89 68.37
141.41 156.67
Γράψτε ένα πρόγραμμα το οποίο παίρνει ως όρισμα το όνομα ενός αρχείου που περιέχει πακέτα ακολουθούμενα από κόμμα ,
και στην συνέχεια έναν αύξοντα αριθμό (packet id) που δείχνει που έπρεπε να βρίσκονται κανονικά στην σειρά των πακέτων και τυπώνει τα πακέτα ταξινομημένα σε αύξουσα σειρά με βάση τους αύξοντες αριθμούς. Παράδειγμα επιτυχούς εκτέλεσης ακολουθεί:
$ gcc -o packet packet.c
$ cat unordered.txt
Hello from five,5
This is the first packet,1
Continuing with seven,7
Almost there,9
Middle of the sequence,6
Starting to make sense,8
The very last packet,10
Second in line,2
Getting closer,4
Third packet coming through,3
$ ./packet unordered.txt
This is the first packet,1
Second in line,2
Third packet coming through,3
Getting closer,4
Hello from five,5
Middle of the sequence,6
Continuing with seven,7
Starting to make sense,8
Almost there,9
The very last packet,10