|
Mátrixszorzás
Adott a következő fejlécállomány:
myheader.h
#ifndef _MYHEADER_H #define _MYHEADER_H 1
void foo(int *, int *, int, int, int);
#endif /* myheader.h */
letöltés szöveges állományként
Írja meg a myheader.h állományban deklarált foo() függvényt
(eljárást), amely paraméterként két, egymással összeszorozható mátrix adatait kapja meg: első
két paramétere a két mátrix kezdőcíme, harmadik paramétere az első mátrix sorainak a száma
(n), negyedik paramétere az első mátrix oszlopainak a száma (k, ami
egyúttal a második mátrix sorainak a száma is), ötödik paramétere pedig a második mátrix
oszlopainak a száma (m).
Ha adott egy és egy mátrix, akkor a szorzatmátrix elemeit a következő képlettel (ún. sor-oszlop szorzással) tudja meghatározni:
, minden
1 ≤ i ≤ n és
1 ≤ j ≤ m esetén.
A foo() függvény (eljárás) feladata az, hogy a szorzatmátrix elemeit
megjelenítse a standard kimeneten. A kimenet egyes soraiba a szorzatmátrix megfelelő sorának
az elemeit kell írni, őket egymástól pontosan egy szóköz karakterrel elválasztva. Ügyeljen
rá, hogy a sor elejére és végére a függvény (eljárás) ne írjon ki felesleges szóköz
karaktereket, minden sorban az utolsó számot közvetlenül kövesse egy soremelés karakter!
Megjegyzés
A függvényt (eljárást) helyezze a foo.c nevű állományba, és ezt az állományt
küldje be megoldásként a kiértékelő rendszernek! Megoldását az alábbi állományok segítségével
tesztelheti. Megoldásának kiértékelését a tesztelő rendszer nem feltétlenül ezeknek az
állományoknak a felhasználásával végzi!
main.c
#include <stdio.h> #include <stdlib.h> #include "myheader.h"
int main() { int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int b[4][2] = {{13, 14}, {15, 16}, {17, 18}, {19, 20}}; foo(&a[0][0], &b[0][0], 3, 4, 2); return EXIT_SUCCESS; }
letöltés szöveges állományként
Makefile
SRCS = main.c foo.c OBJS = $(SRCS:%.c=%.o) TARGETS = main
.PHONY: clean
all: $(TARGETS)
main: $(OBJS) $(CC) $(OBJS) -o main
%.o: %.c $(CC) -Wall -c $< -o $@
clean: rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként
A példa tesztprogram kimenete
170 180 426 452 682 724
letöltés szöveges állományként
|
|