/media/sda-magnetic/david/Dokumente-16-2024-08-01/informatikUmathematik/excerpt20240906before/progs2sources20240801/matrixmultiplikationex.c


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NO_ELEM             -1
#define MAX_LINE_COLUMN     4
#define MIN_LINE_COLUMN     4
#define MAX_VAL             10
#define MIN_VAL             0

int main (void) {
    time_t t;
    int m, n, s, q;
    int i, j;
    int a [MAX_LINE_COLUMN + MIN_LINE_COLUMN][MAX_LINE_COLUMN + MIN_LINE_COLUMN];
    int b [MAX_LINE_COLUMN + MIN_LINE_COLUMN][MAX_LINE_COLUMN + MIN_LINE_COLUMN];

    for (i = 0;  i < MAX_LINE_COLUMN;  i++)
        for (j = 0;  j < MAX_LINE_COLUMN;  j++) {
            a [i] [j] = NO_ELEM;
            b [i] [j] = NO_ELEM;
        }

    srand ((unsigned) time (&t));

    m = (rand () % MAX_LINE_COLUMN) + MIN_LINE_COLUMN;
    n = (rand () % MAX_LINE_COLUMN) + MIN_LINE_COLUMN;
    s = (rand () % MAX_LINE_COLUMN) + MIN_LINE_COLUMN;

    for (i = 0;   i < m;  i++) {
        for (j = 0;  j < n;  j++) {
            a [i] [j] = (rand () % MAX_VAL) + MIN_VAL;
        }
    }

    for (i = 0;   i < n;  i++) {
        for (j = 0;  j < s;  j++) {
            b [i] [j] = (rand () % MAX_VAL) + MIN_VAL;
        }
    }

    if (m >= n)
        q = m;
    else
        q = n;

    printf ("m = %i,\nn = %i,\ns = %i.\n\n\n", m, n, s);

        for (i = 0;  i < q;   i++) {
            if (i < m) {
                printf ("( ");
                for (j = 0;  j < n;  j++) {
                    printf ("%i ", a [i][j]);
                }
                printf (") ");
            }
            if (i < n) {
                printf ("( ");
                for (j = 0;  j < s;  j++) {
                    printf ("%i ", b [i][j]);
                }
                printf (") ");
            }
            printf ("\n");
        }


return 0;
}