|
Mátrixszorzás
Adott a következő fejlécállomány:
myheader.h
#ifndef _MYHEADER_H#define _MYHEADER_H 1void 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.cOBJS = $(SRCS:%.c=%.o)TARGETS = main.PHONY: cleanall: $(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 180426 452682 724
letöltés szöveges állományként
|
|