Suche
Suche Menü

Lösung Matrix-Addition

Ein Lösungsvorschlag zur Aufgabe Matrix-Addition.

#include<stdio.h>

// define Rows and Cols
#define ROWS 3
#define COLS 3

void fillArray(int *x,int rows, int cols);
void printArray(int *x, int rows, int cols);
int matrixAdd(int *a, int *b, int *c, int rows, int cols);

int  main() {
	// Test
	int a[ROWS][COLS], b[ROWS][COLS], c[ROWS][COLS];

	// Matrizen mit Werten füllen
	fillArray(&a[0][0], ROWS, COLS);
	fillArray(&b[0][0], ROWS, COLS);

	// Matrix A und B addieren und in Matrix C schreiben
	matrixAdd(&a[0][0], &b[0][0], &c[0][0], ROWS, COLS);

	// Ausgabe Matrizen
	printArray(&a[0][0], ROWS, COLS);
	printArray(&b[0][0], ROWS, COLS);
	printArray(&c[0][0], ROWS, COLS);
	
	return 0;
}


/*
	Matrix-Addition
	addiert Matrix a und b, Ergebnis wird in c gespeichert
	
	@author: www.c-howto.de
	@param *a: Zeiger auf int-Array
	@param *b: Zeiger auf int-Array
	@param *c: Zeiger auf int-Array
	@param rows: Zeilen der Felder
	@param rows: Spalten der Felder
*/
int matrixAdd(int *a, int *b, int *c, int rows, int cols) {
	int i, j;
	for(i=0; i<rows; i++) {
		for(j=0; j<cols; j++) {
			*(c+(i*cols)+j) = *(a+(i*cols)+j) + *(b+(i*cols)+j);
		}
		printf("\n");
	}
}

void fillArray(int *x,int rows, int cols) {
	int c=1, i, j;
	for(i=0; i<rows; i++) {
		for(j=0; j<cols; j++) {
		*(x+(i*cols)+j) = c;
		c++;
		}
	}
}

void printArray(int *x, int rows, int cols) {
	int i, j;
	printf("\n\n");
	for(i=0; i<rows; i++) {
		for(j=0; j<cols; j++) {
			printf(" %d",*(x+(i*cols)+j));
		}
		printf("\n");
	}
}

 1 2 3
 4 5 6
 7 8 9


 1 2 3
 4 5 6
 7 8 9


 2 4 6
 8 10 12
 14 16 18