// Main.java

// Author: Benedikt Huber
// Datum: Jänner 2002
// email: e0060387@student.tuwien.ac.at

// EPROG 2001/2002
// Spezifikationsnummer: 4027
// Erstellt und Berechnet einfache neuronale Logikschaltung mit Hilfe des "Neuro" packages

import Neuro.*;    // Enthält alle notwendigen Methoden und Datenstrukturen
import java.io.*;  // for EOFException (I like it's name, actually)

public class Main {

    public static void main(String args[]) {
        boolean fehler = false,eof=false;   // flags für Fehlermeldung und Ende des Eingabesatzes
        boolean eingabeKnotenLesen=false;  // flag für den Beginn der Eingabeknotendefinitionen
        String fehlerAusgabe="FALSCHE EINGABE"; // Fehlermeldung
        NeuroNet netzwerk = new NeuroNet(); // erstellt eine neue, (leere) neuronale Logikschaltung

// Lesen
        do {
          try {
            if(NeuroUtil.liesKnoten(netzwerk))  // liest Knotendefinitionen lt.Spezifikation - wenn ein Eingabeknoten
              eingabeKnotenLesen = true;     // Es wurde die Definition eines Eingabeknotens gelesen
            else if(eingabeKnotenLesen == true)
              fehler = true; // lt.Spez. müssen erst alle gewöhnlichen und DANN alle Eingabeknoten gelesen werden
          }
          catch (EOFException e) {
            eof=true;  // End of File
          }
          catch (Exception e) {
            fehler=true;  // mit NeuroUtil.println(e.getMessage()) sinnvole Fehlermeldungen
          }
        } while(eof == false);  // Wiederhole bis Ende Eingabedatensatz

// Berechnen und Ausgeben
        try {
          if(fehler == false) NeuroUtil.println(netzwerk.berechneNetzwerk());  // Berechnet, ob am Ausgang
        }                                                                 // ein Signal liegt
        catch (Exception e) {
          fehler = true; // mit NeuroUtil.println(e.getMessage()) sinnvole Fehlermeldungen
        }
        if(fehler) NeuroUtil.println(fehlerAusgabe);
    }
}

// Einfach, oder ? ;-)