/media/sda-magnetic/david/Dok-15-2023-11-27/informatik/ASM-DIAGRAM-GENERATOR-2024-01-28/automat6.c


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

#define EMPTY_Z -1
#define UNINIT_Z -2

int main (void) {
    time_t t;
    int i, j;
    int z [4][4];
    int v;
    int k, l;
    int n;

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

    for (i = 0;  i < 4;  i++) {
        for (j = 0;  j < 4;  j++)
            z [i][j] = j;
    }

    for (n = rand () % 100; n >= 0;  n--) {
        for (i = 0;  i < 4;  i++) {
            if ((rand () % 2) == 0) {
                for (k = 0;  k < 4;  k++) {
                    for (l = k + 1;  l < 4;  l++) {
                        if (z[i][l] > z[i][k]) {
                            t = z [i][l];
                            z [i][l] = z[i][k];
                            z [i][k] = t;
                        }
                    }
                }
            }
            else {
                for (k = 0;  k < 4;  k++) {
                    for (l = k + 1;  l < 4;  l++) {
                        if (z[i][l] < z[i][k]) {
                            t = z [i][l];
                            z [i][l] = z[i][k];
                            z [i][k] = t;
                        }
                    }
                }
            }
        }
        for (j = 0;  j < 4;  j++) {
            if ((rand () % 2) == 0) {
                for (k = 0;  k < 4;  k++) {
                    for (l = k + 1;  l < 4;  l++) {
                        if (z[l][j] > z[k][j]) {
                            t = z [l][j];
                            z [l][j] = z[k][j];
                            z [k][j] = t;
                        }
                    }
                }
            }
            else {
                for (k = 0;  k < 4;  k++) {
                    for (l = k + 1;  l < 4;  l++) {
                        if (z[l][j] < z[k][j]) {
                            t = z [l][j];
                            z [l][j] = z[k][j];
                            z [k][j] = t;
                        }
                    }
                }
            }
        }
    }


    for (i = 0;  i < 4;  i++) {
        for (j = 0;  j < 4;  j++)
            printf ("%i ", z[i][j]);
        printf ("\n");
    }

    printf ("Zustand\tEingabe\tAusgabe\tFolgezustand\n");
    for (i = 0;  i < 4;  i++) {
        for (j = 0;  j < 4;  j++)
            printf ("%i\t\t%i\t\t%i\t\t%i\n", i, j, rand () % 4, z[i][j]);
    }


return 0;
}