/// <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]; }
/// <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); }
public AusgabeDaten(EingabeDaten inputData) { }