Neuer Automaten Generator

Neuer Automaten Generator

Ich habe eine neue Möglichkeit gefunden, Automaten und Zustandsdiagramme zu zeichnen. Mit LaTeX

das Lustige ist, ich kann jetzt meinen generator für C, für meine Automaten nehmen und LaTeX Quelltext erzeugen lassen. Dann habe ich den Automat vor mir. Ich stelle es gleich vor.

In LaTeX fängt das so an

documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{arrows , automata , positioning}
begin{document}

Nein, ich habe es wirklich geschafft.

Hier das C-Programm

#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 (\&amp;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 ("ZustandtEingabetAusgabetFolgezustandn");
    for (i = 0;  i < 4;  i++) {
        for (j = 0;  j < 4;  j++)
            printf ("%itt%itt%itt%in", i, j, rand () % 4, z[i][j]);
    }*/



printf("\documentclass{article}n");
printf("\usepackage[utf8]{inputenc}n");
printf("\usepackage{pgf, tikz}n");
printf("\usetikzlibrary{arrows , automata , positioning}n");
printf("\begin{document}nn");


printf("\begin{center}n");
printf("\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm]n");
printf("%Knotenn");
printf("\node (0) [state, thick] {0};n");
printf("\node (1) [state, thick, right of= 0] {1};n");
printf("\node (2) [state, thick, right of= 1] {2};n");
printf("\node (3) [state, thick, below of= 1] {3};nn");

printf("%Verbindungenn");
printf("\path[thick,->]n");


for (i = 0;  i < 4;  i++) {
        j = 0;
        if (z [i][j] == i)
            printf ("(%i) edge [loop above] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        j = 1;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend left,below] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        j = 2;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend right,below] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        j = 3;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend left,above] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
}
/*
printf("(1) edge node {1/0} (2)n");
printf("(1) edge [bend angle=15, bend left] node {0/0} (4)nn");

printf("(2) edge [bend angle=15, bend left,pos=0.4] node {0/0}(3)n");
printf("(2) edge node {1/0} (4)nn");

printf("(3) edge [bend angle=15, bend left,below] node {0/0} (2)n");
printf("(3) edge [bend angle=35, bend right, above] node {1/0} (1)nn");

printf("(4) edge [right] node {1/0} (3)n");
printf("(4) edge [bend angle=15, bend left] node {0/0} (1)n");*/
printf(";n");
printf("\end{tikzpicture}n");
printf("\end{center}n");
printf("\end{document}n");


return 0;
}

Dann, hier mögliche LaTeX Dateien

documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{arrows , automata , positioning}
begin{document}

begin{center}
begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm]
%Knoten
node (0) [state, thick] {0};
node (1) [state, thick, right of= 0] {1};
node (2) [state, thick, right of= 1] {2};
node (3) [state, thick, below of= 1] {3};

%Verbindungen
path[thick,->]
(0) edge node {0/0} (1)
(0) edge [loop above] node {1/3} (0)
(0) edge [bend angle=15, bend right,below] node {2/2} (3)
(0) edge [bend angle=15, bend left,above] node {3/2} (3)
(1) edge [loop above] node {0/1} (1)
(1) edge [loop above] node {1/1} (1)
(1) edge [bend angle=15, bend right,below] node {2/2} (3)
(1) edge [bend angle=15, bend left,above] node {3/1} (3)
(2) edge [loop above] node {0/0} (2)
(2) edge [loop above] node {1/1} (2)
(2) edge [bend angle=15, bend right,below] node {2/2} (1)
(2) edge [bend angle=15, bend left,above] node {3/2} (0)
(3) edge node {0/3} (2)
(3) edge [bend angle=15, bend left,below] node {1/1} (2)
(3) edge [bend angle=15, bend right,below] node {2/0} (0)
(3) edge [bend angle=15, bend left,above] node {3/3} (0)
;
end{tikzpicture}
end{center}
end{document}

Die sind erzeugt worden

Hier noch eine

documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{arrows , automata , positioning}
begin{document}

begin{center}
begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm]
%Knoten
node (0) [state, thick] {0};
node (1) [state, thick, right of= 0] {1};
node (2) [state, thick, right of= 1] {2};
node (3) [state, thick, below of= 1] {3};

%Verbindungen
path[thick,->]
(0) edge [loop above] node {0/3} (0)
(0) edge [bend angle=15, bend left,below] node {1/3} (3)
(0) edge [bend angle=15, bend right,below] node {2/0} (1)
(0) edge [bend angle=15, bend left,above] node {3/1} (3)
(1) edge [loop above] node {0/0} (1)
(1) edge [bend angle=15, bend left,below] node {1/1} (2)
(1) edge [loop right] node {2/2} (1)
(1) edge [bend angle=15, bend left,above] node {3/3} (3)
(2) edge [loop above] node {0/1} (2)
(2) edge [loop above] node {1/3} (2)
(2) edge [bend angle=15, bend right,below] node {2/1} (1)
(2) edge [bend angle=15, bend left,above] node {3/1} (0)
(3) edge node {0/3} (2)
(3) edge [bend angle=15, bend left,below] node {1/0} (0)
(3) edge [loop right] node {2/2} (3)
(3) edge [bend angle=15, bend left,above] node {3/1} (0)
;
end{tikzpicture}
end{center}
end{document}

Das Ergebnis als PDF

https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test.pdf">https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test.pdf</URL>\\
\\
\begin{verbatim}https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test3.pdf">https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test3.pdf</URL>\\
\\
\includegraphics[width=\textwidth]{./david4/2024-01-24/test.png} \\
\\

\section{ Re: Aufgaben und "Ubungen, }
Neuer Automaten Generator\\
\\
Ich habe eine neue M"oglichkeit gefunden, Automaten und Zustandsdiagramme zu zeichnen. Mit LaTeX\\
\\
das Lustige ist, ich kann jetzt meinen generator f"ur C, f"ur meine Automaten nehmen und LaTeX Quelltext erzeugen lassen. Dann habe ich den Automat vor mir. Ich stelle es gleich vor.\\
\\
In LaTeX f"angt das so an\\

\begin{verbatim}
documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{arrows , automata , positioning}
begin{document}

Nein, ich habe es wirklich geschafft.

Hier das C-Programm

#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 (\&amp;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 ("ZustandtEingabetAusgabetFolgezustandn");
    for (i = 0;  i < 4;  i++) {
        for (j = 0;  j < 4;  j++)
            printf ("%itt%itt%itt%in", i, j, rand () % 4, z[i][j]);
    }*/



printf("\documentclass{article}n");
printf("\usepackage[utf8]{inputenc}n");
printf("\usepackage{pgf, tikz}n");
printf("\usetikzlibrary{arrows , automata , positioning}n");
printf("\begin{document}nn");


printf("\begin{center}n");
printf("\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm]n");
printf("%Knotenn");
printf("\node (0) [state, thick] {0};n");
printf("\node (1) [state, thick, right of= 0] {1};n");
printf("\node (2) [state, thick, right of= 1] {2};n");
printf("\node (3) [state, thick, below of= 1] {3};nn");

printf("%Verbindungenn");
printf("\path[thick,->]n");


for (i = 0;  i < 4;  i++) {
        j = 0;
        if (z [i][j] == i)
            printf ("(%i) edge [loop above] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        j = 1;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend left,below] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        j = 2;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend right,below] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        j = 3;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend left,above] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
}
/*
printf("(1) edge node {1/0} (2)n");
printf("(1) edge [bend angle=15, bend left] node {0/0} (4)nn");

printf("(2) edge [bend angle=15, bend left,pos=0.4] node {0/0}(3)n");
printf("(2) edge node {1/0} (4)nn");

printf("(3) edge [bend angle=15, bend left,below] node {0/0} (2)n");
printf("(3) edge [bend angle=35, bend right, above] node {1/0} (1)nn");

printf("(4) edge [right] node {1/0} (3)n");
printf("(4) edge [bend angle=15, bend left] node {0/0} (1)n");*/
printf(";n");
printf("\end{tikzpicture}n");
printf("\end{center}n");
printf("\end{document}n");


return 0;
}

Dann, hier mögliche LaTeX Dateien

documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{arrows , automata , positioning}
begin{document}

begin{center}
begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm]
%Knoten
node (0) [state, thick] {0};
node (1) [state, thick, right of= 0] {1};
node (2) [state, thick, right of= 1] {2};
node (3) [state, thick, below of= 1] {3};

%Verbindungen
path[thick,->]
(0) edge node {0/0} (1)
(0) edge [loop above] node {1/3} (0)
(0) edge [bend angle=15, bend right,below] node {2/2} (3)
(0) edge [bend angle=15, bend left,above] node {3/2} (3)
(1) edge [loop above] node {0/1} (1)
(1) edge [loop above] node {1/1} (1)
(1) edge [bend angle=15, bend right,below] node {2/2} (3)
(1) edge [bend angle=15, bend left,above] node {3/1} (3)
(2) edge [loop above] node {0/0} (2)
(2) edge [loop above] node {1/1} (2)
(2) edge [bend angle=15, bend right,below] node {2/2} (1)
(2) edge [bend angle=15, bend left,above] node {3/2} (0)
(3) edge node {0/3} (2)
(3) edge [bend angle=15, bend left,below] node {1/1} (2)
(3) edge [bend angle=15, bend right,below] node {2/0} (0)
(3) edge [bend angle=15, bend left,above] node {3/3} (0)
;
end{tikzpicture}
end{center}
end{document}

Die sind erzeugt worden

Hier noch eine

documentclass{article}
usepackage[utf8]{inputenc}
usepackage{pgf, tikz}
usetikzlibrary{arrows , automata , positioning}
begin{document}

begin{center}
begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm]
%Knoten
node (0) [state, thick] {0};
node (1) [state, thick, right of= 0] {1};
node (2) [state, thick, right of= 1] {2};
node (3) [state, thick, below of= 1] {3};

%Verbindungen
path[thick,->]
(0) edge [loop above] node {0/3} (0)
(0) edge [bend angle=15, bend left,below] node {1/3} (3)
(0) edge [bend angle=15, bend right,below] node {2/0} (1)
(0) edge [bend angle=15, bend left,above] node {3/1} (3)
(1) edge [loop above] node {0/0} (1)
(1) edge [bend angle=15, bend left,below] node {1/1} (2)
(1) edge [loop right] node {2/2} (1)
(1) edge [bend angle=15, bend left,above] node {3/3} (3)
(2) edge [loop above] node {0/1} (2)
(2) edge [loop above] node {1/3} (2)
(2) edge [bend angle=15, bend right,below] node {2/1} (1)
(2) edge [bend angle=15, bend left,above] node {3/1} (0)
(3) edge node {0/3} (2)
(3) edge [bend angle=15, bend left,below] node {1/0} (0)
(3) edge [loop right] node {2/2} (3)
(3) edge [bend angle=15, bend left,above] node {3/1} (0)
;
end{tikzpicture}
end{center}
end{document}

Das Ergebnis als PDF

https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test.pdf">https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test.pdf</URL>\\
\\
\begin{verbatim}https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test3.pdf">https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test3.pdf</URL>\\
\\
\includegraphics[width=\textwidth]{./david4/2024-01-24/test.png} \\
\\

\section{ Re: Neuer Automaten Generator}
So, ich werde den Automaten jetzt verbessern. Anstatt zwei Eingabevariablen, verwende ich eine. Das l"asst sich einfach erreichen. Indem man die zwei anderen Zeilen wegl"asst und die Ausgabe auf 0 und 1 begrenzt.\\
\\
Dann bleibt das Problem unerreichbarer Zust"ande. Damit das nicht passiert, kann man f"ur jeden Folgezustand einen Z"ahler einrichten. Am Ende m"ussen alle mindestens 1 sein. Damit jeder Zustand ein Mal erreicht wird.\\
\\
Das m"ussen wir aber gar nicht f"allt mir auf. Schlimm sind keine Zust"ande oder Knoten oder Ecken, die nicht erreicht werden. Schlimm sind verweiste Zust"ande. Ein Verweister Zustand ist ein Zustand, auf den weder andere verweisen, noch dass dieser auf andere verweist. Das kann allerdings dann eintreten, wenn f"ur beide Eingaben der Folgezustand er selber ist. Und kein anderer Knoten auf diesen Zustand verweist.\\
\\
\\
Hier ist das besagt, unerw"unschte gleich mal eingetreten\\
\includegraphics[width=\textwidth]{./david4/2024-01-24/test4.png}\\
\begin{verbatim}https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test4.pdf">https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test4.pdf</URL>\\
\begin{verbatim}https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test4.text">https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test4.text</URL>\\
\\
Hier daf"ur um so besser\\
\includegraphics[width=\textwidth]{./david4/2024-01-24/test5.png}\\
\begin{verbatim}https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test5.pdf">https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test5.pdf</URL>\\
\begin{verbatim}https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test5.tex">https://www.ituenix.de/nextcloud/data/dave/files/Documents/david4/2024-01-24/test5.tex</URL>\\

\begin{verbatim}
#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 (\&amp;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 ("ZustandtEingabetAusgabetFolgezustandn");
    for (i = 0;  i < 4;  i++) {
        for (j = 0;  j < 4;  j++)
            printf ("%itt%itt%itt%in", i, j, rand () % 4, z[i][j]);
    }*/



printf("\documentclass{article}n");
printf("\usepackage[utf8]{inputenc}n");
printf("\usepackage{pgf, tikz}n");
printf("\usetikzlibrary{arrows , automata , positioning}n");
printf("\begin{document}nn");


printf("\begin{center}n");
printf("\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm]n");
printf("%Knotenn");
printf("\node (0) [state, thick] {0};n");
printf("\node (1) [state, thick, right of= 0] {1};n");
printf("\node (2) [state, thick, right of= 1] {2};n");
printf("\node (3) [state, thick, below of= 1] {3};nn");

printf("%Verbindungenn");
printf("\path[thick,->]n");


for (i = 0;  i < 4;  i++) {
        j = 0;
        if (z [i][j] == i)
            printf ("(%i) edge [loop above] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        j = 1;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend left,below] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        /*j = 2;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend right,below] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        j = 3;
        if (z [i][j] == i)
            printf ("(%i) edge [loop] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);
        else
            printf ("(%i) edge [bend angle=15, bend left,above] node {%i/%i} (%i)n", i, j, rand () % 4, z[i][j]);*/
}
/*
printf("(1) edge node {1/0} (2)n");
printf("(1) edge [bend angle=15, bend left] node {0/0} (4)nn");

printf("(2) edge [bend angle=15, bend left,pos=0.4] node {0/0}(3)n");
printf("(2) edge node {1/0} (4)nn");

printf("(3) edge [bend angle=15, bend left,below] node {0/0} (2)n");
printf("(3) edge [bend angle=35, bend right, above] node {1/0} (1)nn");

printf("(4) edge [right] node {1/0} (3)n");
printf("(4) edge [bend angle=15, bend left] node {0/0} (1)n");*/
printf(";n");
printf("\end{tikzpicture}n");
printf("\end{center}n");
printf("\end{document}n");


return 0;
}