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
