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

Α12.18 · Πολλαπλασιασμός Πινάκων

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

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

Γράψτε ένα πρόγραμμα που παίρνει ως ορίσματα δύο ονόματα αρχείων που περιέχουν πίνακες αριθμών κινητής υποδιαστολής και στην συνέχεια τυπώνει το γινόμενο των δύο πινάκων με ακρίβεια δύο δεκαδικών ψηφίων. Στην πρώτη γραμμή κάθε αρχείου περιέχονται οι διαστάσεις του πίνακα (γραμμές και στήλες). Σύμφωνα με τον ορισμό, το γινόμενο δύο πινάκων A (\(a_{ij}\)) και B (\(b_{jk}\)) είναι ένας πίνακας C όπου \(c_{ij} = \sum_{k=1}^n a_{ik}b_{kj}\)

Παράδειγμα εκτέλεσης ακολουθεί:

$ 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

Υπόδειξη

Διαβάστε πρώτα τις διαστάσεις και δεσμεύστε δυναμικά τον πίνακα με το σωστό μέγεθος· ελέγξτε ότι το αρχείο ανοίγει και ότι περιέχει όσα στοιχεία δηλώνουν οι διαστάσεις. Το γινόμενο ορίζεται μόνο όταν οι στήλες του πρώτου ισούνται με τις γραμμές του δεύτερου· αλλιώς είναι είσοδος εκτός προδιαγραφών.

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