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