Re: Aufgaben und Übungen,

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

#define MAX_SPECIAL_STATES      3
#define MAX_STATES              8
#define MIN_STATE               1
#define SPECIAL_STATE_1         1
#define SPECIAL_STATE_2         2
#define SPECIAL_STATE_3         3
#define MAX_INPUTS              2

int main (void) {
    time_t t;
    int i;
    int q [MAX_SPECIAL_STATES];
    int j;
    int a [MAX_STATES];
    int b [MAX_STATES];
    int x [MAX_STATES];

    srand ((int)time (\&amp;t));

    q [SPECIAL_STATE_1] = (rand () % MAX_STATES) + MIN_STATE;
    while ((q [SPECIAL_STATE_2] = ((rand () % MAX_SPECIAL_STATES)+MIN_STATE)) == q [SPECIAL_STATE_1]);
    while (((q [SPECIAL_STATE_3] = ((rand () % MAX_STATES)+MIN_STATE)) == q [SPECIAL_STATE_1]) || (q [SPECIAL_STATE_3] == q [SPECIAL_STATE_2]));
    j = rand () % MAX_INPUTS;

    printf ("Zur Sicherheit: %i %i %in", q [SPECIAL_STATE_1], q [SPECIAL_STATE_2], q [SPECIAL_STATE_3]);

    printf ("ZustandttFolge-Zustand fuertAusgangn");
    printf ("tttx=0tx=1ttttn");
    for (i = MIN_STATE;  i < (MAX_STATES+MIN_STATE);  i++) {
        if (i == q [SPECIAL_STATE_1]) {
            a [q [SPECIAL_STATE_1] - MIN_STATE] = q [SPECIAL_STATE_2];
            b [q [SPECIAL_STATE_1] - MIN_STATE] = q [SPECIAL_STATE_3];
            x [q [SPECIAL_STATE_1] - MIN_STATE] = j;
        }
        else if (i == q [SPECIAL_STATE_2]) {
            a [q [SPECIAL_STATE_2] - MIN_STATE] = q [SPECIAL_STATE_3],
            b [q [SPECIAL_STATE_2] - MIN_STATE] = q [SPECIAL_STATE_1];
            x [q [SPECIAL_STATE_2] - MIN_STATE] = j;
        }
        else if (i == q [SPECIAL_STATE_3]) {
            a [q [SPECIAL_STATE_3] - MIN_STATE] = q [SPECIAL_STATE_1];
            b [q [SPECIAL_STATE_3] - MIN_STATE] = q [SPECIAL_STATE_2];
            x [q [SPECIAL_STATE_3] - MIN_STATE] = j;
        }
        else {
             a [i - MIN_STATE] = (rand () % MAX_STATES) + 1;
             b [i - MIN_STATE] = (rand () % MAX_STATES) + 1;
             x [i - MIN_STATE] = (rand () % MAX_INPUTS);
        }
    }
    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++)
        printf ("%ittt%it%itttt%in", i - MIN_STATE,  a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);
return 0;
}

// Gut ich habe von der Deep search jetzt erst Mal die Adjezensliste geschrieben

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

#define MAX_STATES          128
#define MAX_INPUT           2

int main (void) {
    time_t t;
    int a [MAX_STATES];
    int b [MAX_STATES];
    int x [MAX_STATES];
    int i;

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

    for (i = 0;  i < MAX_STATES;   i++) {
        a [i] = rand () % MAX_STATES;
        b [i] = rand () % MAX_STATES;
        x [i] = rand () % MAX_INPUT:
    }

return 0;
}

Ich meinte nicht vcard, sondern csv. Ich habe mich damit nie so recht beschäftigt und es wird an der zeit.

// So, ich bin mit meinem Programm schon weiter

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

#define MAX_SPECIAL_STATES      3
#define MAX_STATES              8
#define MIN_STATE               1
#define SPECIAL_STATE_1         1
#define SPECIAL_STATE_2         2
#define SPECIAL_STATE_3         3
#define MAX_INPUTS              2

void printraw (int a [], int b [], int x []) {
    int i;
    printf ("ZustandttFolge-Zustand fuertAusgangn");
    printf ("tttx=0tx=1ttttn");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++)
        printf ("%ittt%it%itttt%in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);

return;
}

void printcsv (int a [], int b [], int x []) {
    int i;
    printf ("Zustand,FolgeZustandx=0,FolgeZustandx=1,Ausgaben");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++)
        printf ("%i,%i,%i,%in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);

return;
}

void readcsv (int a [], int b [], int x []) {
    int i;
    int j;
    scanf ("Zustand,FolgeZustandx=0,FolgeZustandx=1,Ausgaben");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++) {
        scanf ("%i,%i,%i,%in", \&amp;j, \&amp;a [i - MIN_STATE], \&amp;b [i - MIN_STATE], \&amp;x [i - MIN_STATE]);
        if (j != i) {
            fprintf (stderr, "IO-Errorn");
            exit (1);
        }

    }

return;
}

void createnew (int a [], int b [], int x []) {
    time_t t;
    int i;
    int q [MAX_SPECIAL_STATES];
    int j;

    srand ((int)time (\&amp;t));

    q [SPECIAL_STATE_1] = (rand () % MAX_STATES) + MIN_STATE;
    while ((q [SPECIAL_STATE_2] = ((rand () % MAX_SPECIAL_STATES)+MIN_STATE)) == q [SPECIAL_STATE_1]);
    while (((q [SPECIAL_STATE_3] = ((rand () % MAX_STATES)+MIN_STATE)) == q [SPECIAL_STATE_1]) || (q [SPECIAL_STATE_3] == q [SPECIAL_STATE_2]));
    j = rand () % MAX_INPUTS;

    //printf ("Zur Sicherheit: %i %i %in", q [SPECIAL_STATE_1], q [SPECIAL_STATE_2], q [SPECIAL_STATE_3]);

    for (i = MIN_STATE;  i < (MAX_STATES+MIN_STATE);  i++) {
        if (i == q [SPECIAL_STATE_1]) {
            a [q [SPECIAL_STATE_1] - MIN_STATE] = q [SPECIAL_STATE_2];
            b [q [SPECIAL_STATE_1] - MIN_STATE] = q [SPECIAL_STATE_3];
            x [q [SPECIAL_STATE_1] - MIN_STATE] = j;
        }
        else if (i == q [SPECIAL_STATE_2]) {
            a [q [SPECIAL_STATE_2] - MIN_STATE] = q [SPECIAL_STATE_3],
            b [q [SPECIAL_STATE_2] - MIN_STATE] = q [SPECIAL_STATE_1];
            x [q [SPECIAL_STATE_2] - MIN_STATE] = j;
        }
        else if (i == q [SPECIAL_STATE_3]) {
            a [q [SPECIAL_STATE_3] - MIN_STATE] = q [SPECIAL_STATE_1];
            b [q [SPECIAL_STATE_3] - MIN_STATE] = q [SPECIAL_STATE_2];
            x [q [SPECIAL_STATE_3] - MIN_STATE] = j;
        }
        else {
             a [i - MIN_STATE] = (rand () % MAX_STATES) + 1;
             b [i - MIN_STATE] = (rand () % MAX_STATES) + 1;
             x [i - MIN_STATE] = (rand () % MAX_INPUTS);
        }
    }
}

int main (int argc, char *argv []) {
    int a [MAX_STATES];
    int b [MAX_STATES];
    int x [MAX_STATES];

#define CREATE_NEW      0
#define READ_CSV        1
#define PRINT_RAW       0
#define PRINT_TEX       1
#define PRINT_CSV       2
#define PRINT_SOLVE     3
#define PRINT_TEX_STATE 3
#define PRINT_NO_HELP   0
#define PRINT_HELP      1

    int argi;
    int createnew_readcsv = CREATE_NEW;
    int printraw_printtex_print_csv = PRINT_RAW;
    int printhelp = PRINT_NO_HELP;

    for (argi = 1;  argi < argc;  argi++) {
        if ((strcmp ("--create-new", argv [argi]) == 0) || (strcmp ("-n", argv [argi]) == 0))
            createnew_readcsv = CREATE_NEW;
        if ((strcmp ("--read-csv", argv [argi]) == 0) || (strcmp ("-s", argv [argi]) == 0))
            createnew_readcsv = READ_CSV;
        if ((strcmp ("--print-raw", argv [argi]) == 0) || (strcmp ("-r", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_RAW;
        if ((strcmp ("--print-csv", argv [argi]) == 0) || (strcmp ("-c", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_CSV;
        if ((strcmp ("--print-tex", argv [argi]) == 0) || (strcmp ("-t", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_TEX;
        if ((strcmp ("--print-tex-state", argv [argi]) == 0) || (strcmp ("-x", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_TEX_STATE;
        if ((strcmp ("--solve", argv [argi]) == 0) || (strcmp ("-l", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_SOLVE;
        if ((strcmp ("--help", argv [argi]) == 0) || (strcmp ("-h", argv [argi]) == 0))
            printhelp = PRINT_HELP;
    }
    if (printhelp == PRINT_HELP) {
        printf ("--create-newn-nnn");
        printf ("--read-csvn-rnn");
        printf ("--print-rawn-snn");
        printf ("--print-csvn-cnn");
        printf ("--print-texn-tnn");
        printf ("--helpn-hnn");
        return 2;
    }
    if (createnew_readcsv == CREATE_NEW)
        createnew (a, b, x);
    else if (createnew_readcsv == READ_CSV)
        readcsv (a, b, x);
    if (printraw_printtex_print_csv == PRINT_RAW)
        printraw (a, b, x);
    else if (printraw_printtex_print_csv == PRINT_TEX);
    else if (printraw_printtex_print_csv == PRINT_CSV)
        printcsv (a, b, x);
    else if (printraw_printtex_print_csv == PRINT_TEX_STATE);
    else if (printraw_printtex_print_csv == PRINT_SOLVE);

return 0;
}

Zustand,FolgeZustandx=0,FolgeZustandx=1,Ausgabe
1,6,4,1
2,4,8,1
3,6,1,0
4,1,6,1
5,4,5,1
6,4,1,1
7,8,5,1
8,8,8,0

Zustand,FolgeZustandx=0,FolgeZustandx=1,Ausgabe
1,3,2,1
2,1,3,1
3,2,1,1
4,8,2,0
5,2,1,1
6,4,1,1
7,2,5,1
8,5,7,1

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

#define MAX_SPECIAL_STATES      3
#define MAX_STATES              8
#define MIN_STATE               1
#define SPECIAL_STATE_1         1
#define SPECIAL_STATE_2         2
#define SPECIAL_STATE_3         3
#define MAX_INPUTS              2

void printraw (int a [], int b [], int x []) {
    int i;
    printf ("ZustandttFolge-Zustand fuertAusgangn");
    printf ("tttx=0tx=1ttttn");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++)
        printf ("%ittt%it%itttt%in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);

return;
}

void printcsv (int a [], int b [], int x []) {
    int i;
    printf ("Zustand,FolgeZustandx=0,FolgeZustandx=1,Ausgaben");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++)
        printf ("%i,%i,%i,%in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);

return;
}

void printtex (int a [], int b [], int x []) {
    int i;
    printf ("\documentclass [a4paper]{article}n");
    printf ("\usepackage{german}n");
    printf ("\begin{document}n");
    printf ("\begin{tabular}{|c||c|c||c|}");
    n");
    printf ("Zustand \&amp; \multicolumn {2}{||c||}{Folge-Zustand fuer}\&amp; Ausgangn");
    n");
    printf BITTE IM PDF NACHGUCKEN
    n");
    n");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++) {
        printf ("%i \&amp; %i \&amp; %i \&amp; %in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);
        n");
    }
    printf ("\end{tabular}n");
    printf ("\end{document}n");

return;
}

void readcsv (int a [], int b [], int x []) {
    int i;
    int j;
    scanf ("Zustand,FolgeZustandx=0,FolgeZustandx=1,Ausgaben");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++) {
        scanf ("%i,%i,%i,%in", \&amp;j, \&amp;a [i - MIN_STATE], \&amp;b [i - MIN_STATE], \&amp;x [i - MIN_STATE]);
        if (j != i) {
            fprintf (stderr, "IO-Errorn");
            exit (1);
        }

    }

return;
}

void createnew (int a [], int b [], int x []) {
    time_t t;
    int i;
    int q [MAX_SPECIAL_STATES];
    int j;

    srand ((int)time (\&amp;t));

    q [SPECIAL_STATE_1] = (rand () % MAX_STATES) + MIN_STATE;
    while ((q [SPECIAL_STATE_2] = ((rand () % MAX_SPECIAL_STATES)+MIN_STATE)) == q [SPECIAL_STATE_1]);
    while (((q [SPECIAL_STATE_3] = ((rand () % MAX_STATES)+MIN_STATE)) == q [SPECIAL_STATE_1]) || (q [SPECIAL_STATE_3] == q [SPECIAL_STATE_2]));
    j = rand () % MAX_INPUTS;

    //printf ("Zur Sicherheit: %i %i %in", q [SPECIAL_STATE_1], q [SPECIAL_STATE_2], q [SPECIAL_STATE_3]);

    for (i = MIN_STATE;  i < (MAX_STATES+MIN_STATE);  i++) {
        if (i == q [SPECIAL_STATE_1]) {
            a [q [SPECIAL_STATE_1] - MIN_STATE] = q [SPECIAL_STATE_2];
            b [q [SPECIAL_STATE_1] - MIN_STATE] = q [SPECIAL_STATE_3];
            x [q [SPECIAL_STATE_1] - MIN_STATE] = j;
        }
        else if (i == q [SPECIAL_STATE_2]) {
            a [q [SPECIAL_STATE_2] - MIN_STATE] = q [SPECIAL_STATE_3],
            b [q [SPECIAL_STATE_2] - MIN_STATE] = q [SPECIAL_STATE_1];
            x [q [SPECIAL_STATE_2] - MIN_STATE] = j;
        }
        else if (i == q [SPECIAL_STATE_3]) {
            a [q [SPECIAL_STATE_3] - MIN_STATE] = q [SPECIAL_STATE_1];
            b [q [SPECIAL_STATE_3] - MIN_STATE] = q [SPECIAL_STATE_2];
            x [q [SPECIAL_STATE_3] - MIN_STATE] = j;
        }
        else {
             a [i - MIN_STATE] = (rand () % MAX_STATES) + 1;
             b [i - MIN_STATE] = (rand () % MAX_STATES) + 1;
             x [i - MIN_STATE] = (rand () % MAX_INPUTS);
        }
    }
}

int main (int argc, char *argv []) {
    int a [MAX_STATES];
    int b [MAX_STATES];
    int x [MAX_STATES];

#define CREATE_NEW      0
#define READ_CSV        1
#define PRINT_RAW       0
#define PRINT_TEX       1
#define PRINT_CSV       2
#define PRINT_SOLVE     3
#define PRINT_TEX_STATE 3
#define PRINT_NO_HELP   0
#define PRINT_HELP      1

    int argi;
    int createnew_readcsv = CREATE_NEW;
    int printraw_printtex_print_csv = PRINT_RAW;
    int printhelp = PRINT_NO_HELP;

    for (argi = 1;  argi < argc;  argi++) {
        if ((strcmp ("--create-new", argv [argi]) == 0) || (strcmp ("-n", argv [argi]) == 0))
            createnew_readcsv = CREATE_NEW;
        if ((strcmp ("--read-csv", argv [argi]) == 0) || (strcmp ("-s", argv [argi]) == 0))
            createnew_readcsv = READ_CSV;
        if ((strcmp ("--print-raw", argv [argi]) == 0) || (strcmp ("-r", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_RAW;
        if ((strcmp ("--print-csv", argv [argi]) == 0) || (strcmp ("-c", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_CSV;
        if ((strcmp ("--print-tex", argv [argi]) == 0) || (strcmp ("-t", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_TEX;
        if ((strcmp ("--print-tex-state", argv [argi]) == 0) || (strcmp ("-x", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_TEX_STATE;
        if ((strcmp ("--solve", argv [argi]) == 0) || (strcmp ("-l", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_SOLVE;
        if ((strcmp ("--help", argv [argi]) == 0) || (strcmp ("-h", argv [argi]) == 0))
            printhelp = PRINT_HELP;
    }
    if (printhelp == PRINT_HELP) {
        printf ("--create-newn-nnn");
        printf ("--read-csvn-rnn");
        printf ("--print-rawn-snn");
        printf ("--print-csvn-cnn");
        printf ("--print-texn-tnn");
        printf ("--helpn-hnn");
        return 2;
    }
    if (createnew_readcsv == CREATE_NEW)
        createnew (a, b, x);
    else if (createnew_readcsv == READ_CSV)
        readcsv (a, b, x);
    if (printraw_printtex_print_csv == PRINT_RAW)
        printraw (a, b, x);
    else if (printraw_printtex_print_csv == PRINT_TEX)
        printtex (a, b, x);
    else if (printraw_printtex_print_csv == PRINT_CSV)
        printcsv (a, b, x);
    else if (printraw_printtex_print_csv == PRINT_TEX_STATE);

    else if (printraw_printtex_print_csv == PRINT_SOLVE);

return 0;
}

Image state2024020_e.jpeg-1

Image state2024020_f.jpeg-1

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

#define MAX_SPECIAL_STATES      3
#define MAX_STATES              8
#define MIN_STATE               1
#define SPECIAL_STATE_1         1
#define SPECIAL_STATE_2         2
#define SPECIAL_STATE_3         3
#define MAX_INPUTS              2

void printraw (int a [], int b [], int x []) {
    int i;
    printf ("ZustandttFolge-Zustand fuertAusgangn");
    printf ("tttx=0tx=1ttttn");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++)
        printf ("%ittt%it%itttt%in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);

return;
}

void printcsv (int a [], int b [], int x []) {
    int i;
    printf ("Zustand,FolgeZustandx=0,FolgeZustandx=1,Ausgaben");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++)
        printf ("%i,%i,%i,%in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);

return;
}

void printtex (int a [], int b [], int x []) {
    int i;
    printf ("\documentclass [a4paper]{article}n");
    printf ("\usepackage{german}n");
    printf ("\begin{document}n");
    printf ("\begin{tabular}{|c||c|c||c|}");
    n");
    printf ("Zustand \&amp; \multicolumn {2}{||c||}{Folge-Zustand fuer}\&amp; Ausgangn");
    n");
    printf BITTE IM PDF NACHGUCKEN
    n");
    n");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++) {
        printf ("%i \&amp; %i \&amp; %i \&amp; %in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);
        n");
    }
    printf ("\end{tabular}n");
    printf ("\end{document}n");

return;
}

void printtexstate (int a [], int b [], int x []) {
    int i;
    int angle;
    printf ("\documentclass [a4paper]{article}n");
    printf ("\usepackage{german}n");
    printf ("\usepackage[utf8]{inputenc}n");
    printf ("\usepackage{pgf, tikz}n");
    printf ("\usetikzlibrary{arrows , automata , positioning}nn");

    printf ("\begin{document}n");
    printf ("\begin{tabular}{|c||c|c||c|}");
    n");
    printf ("Zustand \&amp; \multicolumn {2}{||c||}{Folge-Zustand fuer}\&amp; Ausgangn");
    n");
    printf BITTE IM PDF NACHGUCKEN
    n");
    n");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++) {
        printf ("%i \&amp; %i \&amp; %i \&amp; %in", i, a [i - MIN_STATE], b [i - MIN_STATE], x [i - MIN_STATE]);
        n");
    }
    printf ("\end{tabular}n");

    printf ("\begin{center}n");
    printf ("\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm]n");

    printf ("\node (%i) [state, thick] {%i/%i};n", MIN_STATE, MIN_STATE, x [MIN_STATE-1]);
    for (i = MIN_STATE+1;  i < (MAX_STATES + MIN_STATE)-1;  i+=2) {
        printf ("\node (%i) [state, thick, right of= %i] {%i/%i};n", i, i-1, i, x [i]);
        printf ("\node (%i) [state, thick, below of= %i] {%i/%i};n", i+1, i-1, i+1, x [i+1]);
    }
    printf ("\node (%i) [state, thick, right of= %i] {%i/%i};n", i, i-1, i, x [i]);

    printf ("nn\path[thick,->]n");
    for (i = MIN_STATE, angle = 0;  i < (MAX_STATES + MIN_STATE);  i++, angle+=20) {
        printf ("(%i) [bend angle=%i, bend right, above] edge (%i)n", i, angle, a [i-1]);
        angle += 20;
        printf ("(%i) [bend angle=%i, bend left, below] edge (%i)n", i, angle, b [i-1]);
    }
    printf (";n");
    printf ("\end{tikzpicture}n");
    printf ("\end{center}n");
    printf ("\end{document}n");

return;
}

void readcsv (int a [], int b [], int x []) {
    int i;
    int j;
    scanf ("Zustand,FolgeZustandx=0,FolgeZustandx=1,Ausgaben");

    for (i = MIN_STATE;  i < (MAX_STATES + MIN_STATE);  i++) {
        scanf ("%i,%i,%i,%in", \&amp;j, \&amp;a [i - MIN_STATE], \&amp;b [i - MIN_STATE], \&amp;x [i - MIN_STATE]);
        if (j != i) {
            fprintf (stderr, "IO-Errorn");
            exit (1);
        }

    }

return;
}

void createnew (int a [], int b [], int x []) {
    time_t t;
    int i;
    int q [MAX_SPECIAL_STATES];
    int j;

    srand ((int)time (\&amp;t));

    q [SPECIAL_STATE_1] = (rand () % MAX_STATES) + MIN_STATE;
    while ((q [SPECIAL_STATE_2] = ((rand () % MAX_SPECIAL_STATES)+MIN_STATE)) == q [SPECIAL_STATE_1]);
    while (((q [SPECIAL_STATE_3] = ((rand () % MAX_STATES)+MIN_STATE)) == q [SPECIAL_STATE_1]) || (q [SPECIAL_STATE_3] == q [SPECIAL_STATE_2]));
    j = rand () % MAX_INPUTS;

    //printf ("Zur Sicherheit: %i %i %in", q [SPECIAL_STATE_1], q [SPECIAL_STATE_2], q [SPECIAL_STATE_3]);

    for (i = MIN_STATE;  i < (MAX_STATES+MIN_STATE);  i++) {
        if (i == q [SPECIAL_STATE_1]) {
            a [q [SPECIAL_STATE_1] - MIN_STATE] = q [SPECIAL_STATE_2];
            b [q [SPECIAL_STATE_1] - MIN_STATE] = q [SPECIAL_STATE_3];
            x [q [SPECIAL_STATE_1] - MIN_STATE] = j;
        }
        else if (i == q [SPECIAL_STATE_2]) {
            a [q [SPECIAL_STATE_2] - MIN_STATE] = q [SPECIAL_STATE_3],
            b [q [SPECIAL_STATE_2] - MIN_STATE] = q [SPECIAL_STATE_1];
            x [q [SPECIAL_STATE_2] - MIN_STATE] = j;
        }
        else if (i == q [SPECIAL_STATE_3]) {
            a [q [SPECIAL_STATE_3] - MIN_STATE] = q [SPECIAL_STATE_1];
            b [q [SPECIAL_STATE_3] - MIN_STATE] = q [SPECIAL_STATE_2];
            x [q [SPECIAL_STATE_3] - MIN_STATE] = j;
        }
        else {
             a [i - MIN_STATE] = (rand () % MAX_STATES) + MIN_STATE;
             b [i - MIN_STATE] = (rand () % MAX_STATES) + MIN_STATE;
             x [i - MIN_STATE] = (rand () % MAX_INPUTS);
        }
    }
}

int main (int argc, char *argv []) {
    int a [MAX_STATES];
    int b [MAX_STATES];
    int x [MAX_STATES];

#define CREATE_NEW      0
#define READ_CSV        1
#define PRINT_RAW       0
#define PRINT_TEX       1
#define PRINT_CSV       2
#define PRINT_SOLVE     3
#define PRINT_TEX_STATE 3
#define PRINT_NO_HELP   0
#define PRINT_HELP      1

    int argi;
    int createnew_readcsv = CREATE_NEW;
    int printraw_printtex_print_csv = PRINT_RAW;
    int printhelp = PRINT_NO_HELP;

    for (argi = 1;  argi < argc;  argi++) {
        if ((strcmp ("--create-new", argv [argi]) == 0) || (strcmp ("-n", argv [argi]) == 0))
            createnew_readcsv = CREATE_NEW;
        if ((strcmp ("--read-csv", argv [argi]) == 0) || (strcmp ("-s", argv [argi]) == 0))
            createnew_readcsv = READ_CSV;
        if ((strcmp ("--print-raw", argv [argi]) == 0) || (strcmp ("-r", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_RAW;
        if ((strcmp ("--print-csv", argv [argi]) == 0) || (strcmp ("-c", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_CSV;
        if ((strcmp ("--print-tex", argv [argi]) == 0) || (strcmp ("-t", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_TEX;
        if ((strcmp ("--print-tex-state", argv [argi]) == 0) || (strcmp ("-x", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_TEX_STATE;
        if ((strcmp ("--solve", argv [argi]) == 0) || (strcmp ("-l", argv [argi]) == 0))
            printraw_printtex_print_csv = PRINT_SOLVE;
        if ((strcmp ("--help", argv [argi]) == 0) || (strcmp ("-h", argv [argi]) == 0))
            printhelp = PRINT_HELP;
    }
    if (printhelp == PRINT_HELP) {
        printf ("--create-newn-nnn");
        printf ("--read-csvn-rnn");
        printf ("--print-rawn-snn");
        printf ("--print-csvn-cnn");
        printf ("--print-texn-tnn");
        printf ("--helpn-hnn");
        return 2;
    }
    if (createnew_readcsv == CREATE_NEW)
        createnew (a, b, x);
    else if (createnew_readcsv == READ_CSV)
        readcsv (a, b, x);
    if (printraw_printtex_print_csv == PRINT_RAW)
        printraw (a, b, x);
    else if (printraw_printtex_print_csv == PRINT_TEX)
        printtex (a, b, x);
    else if (printraw_printtex_print_csv == PRINT_CSV)
        printcsv (a, b, x);
    else if (printraw_printtex_print_csv == PRINT_TEX_STATE)
        printtexstate (a, b, x);

    else if (printraw_printtex_print_csv == PRINT_SOLVE);

return 0;
}

Image state2024020_g.jpeg-1

Image Screenshot_20240205_183610

 0 0 0 0 0    0
 1 0 0 0 1    1
 2 0 0 1 0    1
 3 0 0 1 1    0
 4 0 1 0 0    0
 5 0 1 0 1    0
 6 0 1 1 0    1
 7 0 1 1 1    1
 8 1 0 0 0    0
 9 1 0 0 1    0
10 1 0 1 0    1
11 1 0 1 1    1
12 1 1 0 0    1
13 1 1 0 1    1
14 1 1 1 0    1
15 1 1 1 1    0



 1 0 0 0 1    1
 2 0 0 1 0    1
 6 0 1 1 0    1
 7 0 1 1 1    1
10 1 0 1 0    1
11 1 0 1 1    1
12 1 1 0 0    1
13 1 1 0 1    1
14 1 1 1 0    1


Gruppe 1:
 1 0 0 0 1    1
 2 0 0 1 0    1
Gruppe 2:
 6 0 1 1 0    1
10 1 0 1 0    1
12 1 1 0 0    1
Gruppe 3:
 7 0 1 1 1    1
11 1 0 1 1    1
13 1 1 0 1    1
14 1 1 1 0    1

1           0 0 0 1
2:6         0 - 1 0
2:10        - 0 1 0
6:7         0 1 1 -
6:14        - 1 1 0
10:11       1 0 1 -
10:14       1 - 1 0
12:13       1 1 0 -
12:14       1 1 - 0


1           0 0 0 1
2:10        - 0 1 0
6:14        - 1 1 0
2:6         0 - 1 0
10:14       1 - 1 0
12:14       1 1 - 0
6:7         0 1 1 -
10:11       1 0 1 -
12:13       1 1 0 -


1           0 0 0 1
Gruppe 1:
2:10        - 0 1 0
Gruppe 2:
6:14        - 1 1 0

Gruppe 1:
2:6         0 - 1 0
Gruppe 2:
10:14       1 - 1 0

12:14       1 1 - 0

Gruppe 2:
6:7         0 1 1 -
10:11       1 0 1 -
12:13       1 1 0 -


1           0 0 0 1
Gruppe 1:
2:10        - 0 1 0
Gruppe 2:
6:14        - 1 1 0

2:10:6:14       - - 1 0

Gruppe 1:
2:6         0 - 1 0
Gruppe 2:
10:14       1 - 1 0

2:6:10:14       - - 1 0

12:14       1 1 - 0

Gruppe 2:
6:7         0 1 1 -
10:11       1 0 1 -
12:13       1 1 0 -


1           0 0 0 1
2:10:6:14   - - 1 0
12:14       1 1 - 0
6:7         0 1 1 -
10:11       1 0 1 -
12:13       1 1 0 -

                1   2   6   7   10  11  12  13  14
1               *
2:10:6:14           *   *       *               *
12:14                                   *       *
6:7                     *   *
10:11                           *   *
12:13                                   *   *


                1   2   6   7   10  11  12  13  14
1               *
2:10:6:14           *   *       *               *
6:7                     *   *
10:11                           *   *
12:13                                   *   *

1           0 0 0 1
2:10:6:14   - - 1 0
6:7         0 1 1 -
10:11       1 0 1 -
12:13       1 1 0 -

    y <= (not x3 and not x2 and not x1 and x0) or
            (x1 and not x0) or
            (not x3 and x2 and x1) or
            (x3 and not x2 and x1) or
            (x3 and x2 and not x1)
    y <= not (
            (x3 or x2 or x1 or not x0) and
            (not x1 or x0) and
            (x3 or not x2 or not x1) and
            (not x3 or x2 or not x1) and
            (not 3 or not x2 or x1)
        );

library ieee;
use ieee.std_logic_1164.all;

entity quine20240205 is
port (
    x3, x2, x1, x0: in std_logic;
    y: out std_logic
);
end;

architecture behaviour of quine20240205 is
begin
    y <= (not x3 and not x2 and not x1 and x0) or
            (x1 and not x0) or
            (not x3 and x2 and x1) or
            (x3 and not x2 and x1) or
            (x3 and x2 and not x1);
end;

library ieee;
use ieee.std_logic_1164.all;

entity quine20240205testbench is
port (
    y: out std_logic
);
end;

architecture behaviour of quine20240205testbench is
    component quine20240205
    port (
        x3, x2, x1, x0: in std_logic;
        y: out std_logic
    );
    end component;
    signal x3, x2, x1, x0: std_logic;
begin
    q: quine20240205 PORT MAP (x3=>x3, x2=>x2, x1=>x1, x0=>x0, y=>y);

    x0 <= '0' after 0 ns, '1' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '1' after 50 ns, '0' after 60 ns, '1' after 70 ns, '0' after 80 ns, '1' after 90 ns, '0' after 100 ns, '1' after 110 ns, '0' after 120 ns, '1' after 130 ns, '0' after 140 ns, '1' after 150 ns;

    x1 <= '0' after 0 ns, '0' after 10 ns, '1' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns, '0' after 90 ns, '1' after 100 ns, '1' after 110 ns, '0' after 120 ns, '0' after 130 ns, '1' after 140 ns, '1' after 150 ns;

    x2 <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '1' after 40 ns, '1' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns, '0' after 90 ns, '0' after 100 ns, '0' after 110 ns, '1' after 120 ns, '1' after 130 ns, '1' after 140 ns, '1' after 150 ns;

    x3 <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '0' after 40 ns, '0' after 50 ns, '0' after 60 ns, '0' after 70 ns, '1' after 80 ns, '1' after 90 ns, '1' after 100 ns, '1' after 110 ns, '1' after 120 ns, '1' after 130 ns, '1' after 140 ns, '1' after 150 ns;
end;

library ieee;
use ieee.std_logic_1164.all;

entity quine20240205 is
port (
    x3, x2, x1, x0: in std_logic;
    y: out std_logic
);
end;

architecture behaviour of quine20240205 is
begin
    y <= (not x3 and not x2 and not x1 and x0) or
            (x1 and not x0) or
            (not x3 and x2 and x1) or
            (x3 and not x2 and x1) or
            (x3 and x2 and not x1);
end;

library ieee;
use ieee.std_logic_1164.all;

entity quine20240205testbench is
port (
    y: out std_logic
);
end;

architecture behaviour of quine20240205testbench is
    component quine20240205
    port (
        x3, x2, x1, x0: in std_logic;
        y: out std_logic
    );
    end component;
    signal x3, x2, x1, x0: std_logic;
begin
    q: quine20240205 PORT MAP (x3=>x3, x2=>x2, x1=>x1, x0=>x0, y=>y);

    x0 <= '0' after 0 ns, '1' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns, '1' after 50 ns, '0' after 60 ns, '1' after 70 ns, '0' after 80 ns, '1' after 90 ns, '0' after 100 ns, '1' after 110 ns, '0' after 120 ns, '1' after 130 ns, '0' after 140 ns, '1' after 150 ns;

    x1 <= '0' after 0 ns, '0' after 10 ns, '1' after 20 ns, '1' after 30 ns, '0' after 40 ns, '0' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns, '0' after 90 ns, '1' after 100 ns, '1' after 110 ns, '0' after 120 ns, '0' after 130 ns, '1' after 140 ns, '1' after 150 ns;

    x2 <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '1' after 40 ns, '1' after 50 ns, '1' after 60 ns, '1' after 70 ns, '0' after 80 ns, '0' after 90 ns, '0' after 100 ns, '0' after 110 ns, '1' after 120 ns, '1' after 130 ns, '1' after 140 ns, '1' after 150 ns;

    x3 <= '0' after 0 ns, '0' after 10 ns, '0' after 20 ns, '0' after 30 ns, '0' after 40 ns, '0' after 50 ns, '0' after 60 ns, '0' after 70 ns, '1' after 80 ns, '1' after 90 ns, '1' after 100 ns, '1' after 110 ns, '1' after 120 ns, '1' after 130 ns, '1' after 140 ns, '1' after 150 ns;
end;

Ich höre jetzt auf, weil es strategisch für heute abend der richtige Schritt es ist, es gut sein zu lassen.

Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
1			8	2				0
2			1	8				0
3			6	5				0
4			2	6				0
5			1	3				1
6			5	3				1
7			5	7				0
8			2	1				0


Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
1			8	2				0
2			1	8				0
3			6	5				0
4			2	6				0
7			5	7				0
8			2	1				0

(1,2)		(8,1)		(2,8)
(1,3)		(8,6)		(2,5)
(1,4)		(8,2)		(2,6)
(1,7)		(8,5)		(2,7)
(1,8)		(8,2)		(2,1)
(2,3)		(1,6)		(8,5)
(2,4)		(1,2)		(8,6)
(2,7)		(1,5)		(8,7)
(2,8)		(1,2)		(8,1)
(3,4)		(6,2)		(5,6)
(3,7)		(6,5)		(5,7)
(3,8)		(6,2)		(5,1)
(4,7)		(2,5)		(5,7)
(4,8)		(2,2)		(6,1)
(7,8)		(5,2)		(7,1)

Zustand		Folge-Zustand fuer	Ausgang
			x=0	x=1
5			1	3				1
6			5	3				1

(5,6)		(1,5)		(3,3)

(1,2)		(8,1)		(2,8)
(1,3)		(8,6)		(2,5)
(1,4)		(8,2)		(2,6)
(1,7)		(8,5)		(2,7)
(1,8)		(8,2)		(2,1)
(2,3)		(1,6)		(8,5)
(2,4)		(1,2)		(8,6)
(2,7)		(1,5)		(8,7)
(2,8)		(1,2)		(8,1)
(3,4)		(6,2)		(5,6)
(3,7)		(6,5)		(5,7)
(3,8)		(6,2)		(5,1)
(4,7)		(2,5)		(5,7)
(4,8)		(2,2)		(6,1)
(5,6)		(1,5)		(3,3)
(7,8)		(5,2)		(7,1)


(1,2)		(1,8)		(2,8)
(1,3)		(6,8)		(2,5)
(1,4)		(2,8)		(2,6)
(1,7)		(5,8)		(2,7)
(1,8)		(2,8)		(1,2)
(2,3)		(1,6)		(5,8)
(2,4)		(1,2)		(6,8)
(2,7)		(1,5)		(7,8)
(2,8)		(1,2)		(1,8)
(3,4)		(2,6)		(5,6)
(3,7)		(5,6)		(5,7)
(3,8)		(2,6)		(1,5)
(4,7)		(2,5)		(5,7)
(4,8)		(2,2)		(1,6)
(5,6)		(1,5)		(3,3)
(7,8)		(2,5)		(1,7)


(1,2)		(1,8)		(2,8)
(1,3)		(6,8)		(2,5)
(1,4)		(2,8)		(2,6)
(1,7)		(5,8)		(2,7)
(1,8)		(2,8)		(1,2)
(2,3)		(1,6)		(5,8)
(2,4)		(1,2)		(6,8)
(2,7)		(1,5)		(7,8)
(2,8)		(1,2)		(1,8)
(3,4)		(2,6)		(5,6)
(3,7)		(5,6)		(5,7)
(3,8)		(2,6)		(1,5)
(4,7)		(2,5)		(5,7)
(4,8)		(2,2)		(1,6)
(5,6)		(1,5)
(7,8)		(2,5)		(1,7)


(1,2)		(1,8)		(2,8)
--(1,3)		--(6,8)		(2,5)
--(1,4)		(2,8)		--(2,6)
--(1,7)		--(5,8)		(2,7)
(1,8)		(2,8)		(1,2)
--(2,3)		--(1,6)		(5,8)
--(2,4)		(1,2)		--(6,8)
--(2,7)		--(1,5)		(7,8)
(2,8)		(1,2)		(1,8)
--(3,4)		--(2,6)		(5,6)
--(3,7)		(5,6)		--(5,7)
--(3,8)		--(2,6)		(1,5)
--(4,7)		--(2,5)		(5,7)
--(4,8)		--(1,6)
--(5,6)		--(1,5)
--(7,8)		--(2,5)		(1,7)


(1,2)		(1,8)		(2,8)
(1,8)		(2,8)		(1,2)
(2,8)		(1,2)		(1,8)

Perfekt

Ok, da ist was bei MUL falsch berechnet

1.) Rechne die Zahl in binaer Darstellung  in eine Dezimale Darstellung um
0111000100000010b 28930d

0       2\^15
1       2\^14        2\^14
1       2\^13        2\^13
1       2\^12        2\^12
0       2\^11
0       2\^10
0       2\^9
1       2\^8         2\^8
0       2\^7
0       2\^6
0       2\^5
0       2\^4
0       2\^3
0       2\^2
1       2\^1         2\^1
0       2\^0

2\^14+2\^13+2\^12+2\^8+2\^1

8192+8192+8192+4096+256+2

     8192
     8192
     8192
     4096
      256
        2
      42
---------
    28930

2.) Rechne die Zahl in dezimal darstellung in eine Binaerdarstellung um
47779 1011101010100011

47779 / 2   = 20000 + (7780-1)/2
            = 20000 + (3500 + 350 + 40/2) 2 Rest 1
            = 23839 -2 = 23849 Rest 1
47780 / 2

20000 + 40 + 350 + 3500

20000
 3500
  350
   40
-----
23890 -1

 23889
 23889
  111
------
 47778

47779 / 2 =         23889       Rest 1
23889 / 2 =

10000 + 1500 + 400 + 44 Rest 1

20000
 1500
  400
   44
-----
21944

11944
11944

-----
23888 Rest 1

47779 / 2 =         23889       Rest 1
23889 / 2 =         11944       Rest 1
11944 / 2 =

5000 + 500 + 450 + 22

5000
 500
 450
  22
----
5972

5972
5972
11
----
11944

47779 / 2 =         23889       Rest 1
23889 / 2 =         11944       Rest 1
11944 / 2 =          5972       Rest 0
5972 / 2 =

5972 / 2
= 2500
+  450
+   35
     1
------
2986

2986
2986
111
----
5972

47779 / 2 =         23889       Rest 1
23889 / 2 =         11944       Rest 1
11944 / 2 =          5972       Rest 0
5972 / 2 =           2986       Rest 0
2986 / 2 =           1493       Rest 0
1493 / 2 =            746       Rest 1
746 / 2 =             373       Rest 0
373 / 2 =             186       Rest 1
186 / 2 =              93       Rest 0
93 / 2 =               46       Rest 1
46 / 2 =               23       Rest 0
23 / 2 =               11       Rest 1
11 / 2 =                5       Rest 1
5 / 2 =                 2       Rest 1
2 / 2 =                 1       Rest 0
1 / 2 =                 0       Rest 1

1011101010100011
1011101010100011b

1000
 450
  40
   3
----
1493

1493
1493
1
----
2986

1493 / 2 = 700 + 45 + 1

373
373
1
---
746

373 = 150 + 35 + 1

186
186
11
----
372

1011101010100011b

3.) Addiere die drei Zahlen schriftlich
            18469
+           21688
+            9001
-----------------
            40157

            18469
            21688
             9001
             111
_----------------
            40158

4.) Subtrahiere die letzten drei Zahlen schriftlich von der ersten schriftlich
            53341
-            3790
-            6484
-            2299
-----------------
            40768

            53341
-            3790
-            6484
-            2299
             121
            1
-----------------
            41878

Muss sp"ater korrigiert werden

5.) Rechne die Zahl ins zweier komplement um, mit 8 Bit - und subtrahiere diese zahl von der ersten und rechne das Ergebnis nach dezimal
-36 -83 = -119
11011100 10101101 = 10001001
6.) Multipliziere die zwei Zahlen schriftlich
775502494*38517 = 2826985014
          2316507382

38517*775502494 = 2826985014
      2316507382

Taschenrechner, sagt: 2326507482

38517*775502494 = 2326507482 + 6204019952 + 3877512470

2326507482
 6204019952
  3877512470
   775502494
    5428517458

23265074820000
 6204019952000
  387751247000
   77550249400
    5428517458

775502494
775502494
775502494
21   111
---------
2316507382

7.) Dividiere die zwei Zahlen schriftlich
1528000101/5836 = 261823
8.) Errechne x Logarithmisch mit dem Taschenrechner
58843\^x = 2091390428