Exemplo n.º 1
0
 /// <summary>
 /// Konstruktor
 /// </summary>
 /// <param name="inputData">Daten</param>
 public AusgabeDaten(EingabeDaten inputData)
 {
     InputData          = inputData;
     Simulationsverlauf = new List <string>();
     Endzustand         = new int[InputData.M, InputData.M];
     Maximalbedarf      = new int[InputData.M, InputData.M];
 }
Exemplo n.º 2
0
        /// <summary>
        /// Liest die EingabeDaten aus der angegebenen Datei ein
        /// </summary>
        /// <returns>Daten</returns>
        public virtual EingabeDaten Lesen()
        {
            // Pruefen ob Dateipfad existiert (ggf. Exception)
            if (!File.Exists(Dateipfad))
            {
                throw new IHKException($"Die Datei \"{Dateipfad}\" Existiert nicht");
            }
            // Alle Zeilen Einlesen
            var zeilen = File.ReadAllLines(Dateipfad).Where(a => !string.IsNullOrWhiteSpace(a)).ToList();
            // Erste Kommentarzeile Speichern
            string kommentarzeile = zeilen.FirstOrDefault(a => a.StartsWith("#"));

            // Kommentarzeilen entfernen
            zeilen = zeilen.Where(a => !a.StartsWith("#")).ToList();
            // Pruefen ob Datei leer ist
            if (zeilen.Count == 0)
            {
                throw new IHKException("Die Eingabedatei ist leer");
            }
            // m als Zahl einlesen (bei falschem Format Exception)
            // https://regex101.com/r/Ydgiso/1
            if (!Regex.IsMatch(zeilen.First(), @"^[0-9]*$"))
            {
                throw new IHKException($"m=\"{zeilen.First()}\" hat das falsche Format (sollte eine positive Ganzzahl  groesser 0 sein)");
            }
            int m = int.Parse(zeilen.First());

            if (m < 1)
            {
                throw new IHKException($"m=\"{zeilen.First()}\" hat das falsche Format (sollte eine positive Ganzzahl  groesser 0 sein)");
            }
            // Die Zeile mit m entfernen
            zeilen.RemoveAt(0);
            if (zeilen.Count != m * m * 2)
            {
                throw new IHKException("Es sind nicht genuegend Polynome angegeben worden " +
                                       $"({2*m*m} erwartet und {zeilen.Count} gegeben)");
            }
            var data = new EingabeDaten(m)
            {
                Kopfzeile = kommentarzeile,
            };

            // Iteriere ueber uebrige Zeilen
            for (int i = 0; i < m * m; i++)
            {
                // Polynome Erzeugen und speichern
                data.NachfrageVerteilung[i / m, i % m] = GetPolynom(zeilen[i]);
                data.AngebotVerteilung[i / m, i % m]   = GetPolynom(zeilen[m * m + i]);
            }
            return(data);
        }
Exemplo n.º 3
0
 public AusgabeDaten(EingabeDaten inputData)
 {
 }