static void tauschen(ref Wetterdaten[] Datensaetze, int index1, int index2) { Wetterdaten temp = Datensaetze[index1]; Datensaetze[index1] = Datensaetze[index2]; Datensaetze[index2] = temp; }
static int compareWetterdatenBy(Wetterdaten value1, Wetterdaten value2, string value) { int ergebnis = 0; if (value == "Datum") { ergebnis = Convert.ToDateTime(value1.Datum).CompareTo(Convert.ToDateTime(value2.Datum)); } else if (value == "Temperatur") { if (Convert.ToDouble(value1.Temperatur) > Convert.ToDouble(value2.Temperatur)) { ergebnis = 1; } else if (Convert.ToDouble(value1.Temperatur) < Convert.ToDouble(value2.Temperatur)) { ergebnis = -1; } else { ergebnis = 0; } } else if (value == "Luftdruck") { if (Convert.ToUInt32(value1.Luftdruck) > Convert.ToUInt32(value2.Luftdruck)) { ergebnis = 1; } else if (Convert.ToUInt32(value1.Luftdruck) < Convert.ToUInt32(value2.Luftdruck)) { ergebnis = -1; } else { ergebnis = 0; } } else if (value == "Luftfeuchtigkeit") { if (Convert.ToUInt32(value1.Luftfeuchtigkeit) > Convert.ToUInt32(value2.Luftfeuchtigkeit)) { ergebnis = 1; } else if (Convert.ToUInt32(value1.Luftfeuchtigkeit) < Convert.ToUInt32(value2.Luftfeuchtigkeit)) { ergebnis = -1; } else { ergebnis = 0; } } else { } return(ergebnis); }
static void GetSmallestAndSwap(ref Wetterdaten[] Datensaetze, string value, int start, int anzahl) { Wetterdaten ergebnis = Datensaetze[start]; int pos = start; for (int index = start + 1; index < anzahl; index++) { if (compareWetterdatenBy(ergebnis, Datensaetze[index], value) > 0) { pos = index; } else { } } tauschen(ref Datensaetze, start, pos); }
static bool isDatensatzVorhanden(Wetterdaten[] datensaetze, Wetterdaten doppler, ref int pos) { bool ergebnis = false; int index = 0; foreach (Wetterdaten wd in datensaetze) { if (wd.Datum == doppler.Datum) { ergebnis = true; pos = index; break; } else { ergebnis = false; } index++; } return(ergebnis); }
static void WetterdatenLoeschen(ref Wetterdaten[] Datensaetze) { int index = 1; int anzahl = 0; ConsoleKeyInfo input; bool fertig = false; while (!fertig) { int rangevon = -1; int rangebis = -1; //Zählen anzahl = 0; foreach (Wetterdaten wd in Datensaetze) { if (wd.Luftdruck >= 700) { anzahl++; } else { } } if (anzahl <= 0) { Console.WriteLine("\nKeine Datensätze zum Löschen vorhanden!"); Console.WriteLine("Weiter mit einer beliebigen Taste!"); while (!Console.KeyAvailable) { ; } Console.ReadKey(true); return; } else { } WetterdatenAnzeigen(Datensaetze, index); //Steuerung anzeigen if ((anzahl % 18) > 0) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("<-"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" Seite zurück (Seite " + index + " von " + (anzahl / 18 + 1) + ") "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(L)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" Loeschen "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(ESC)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" zurück Seite weiter "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("->"); Console.ForegroundColor = ConsoleColor.Gray; } else { Console.ForegroundColor = ConsoleColor.Red; Console.Write("<-"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" Seite zurück (Seite " + index + " von " + (anzahl / 18) + ") "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(L)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" Loeschen "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(ESC)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" zurück Seite weiter "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("->"); Console.ForegroundColor = ConsoleColor.Gray; } while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); //Tasten Auswerten if (input.Key == ConsoleKey.LeftArrow) { if (index > 1) { index--; } else { } continue; } else if (input.Key == ConsoleKey.RightArrow) { if (anzahl > 18 && index <= (anzahl / 18)) { index++; } else { } continue; } else if (input.Key == ConsoleKey.Escape) { break; } else if (input.KeyChar == 'L' || input.KeyChar == 'l') { //Position erfragen int pos = -1; Console.Write("\nGeben Sie die "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Nr. "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("des Datensatzes ein den Sie löschen wollen,\n"); Console.Write("oder einen "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Bereich "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("(z.B. 2-5): "); Console.CursorVisible = true; string eingabe = Console.ReadLine(); //Range? if (eingabe.Contains("-")) { //Eingabe prüfen try { string temp = eingabe.Substring(0, eingabe.IndexOf("-")); rangevon = Convert.ToInt32(temp); if (rangevon < 1) { rangevon = -1; } else { } temp = eingabe.Substring(eingabe.IndexOf("-") + 1); rangebis = Convert.ToInt32(temp); if (rangebis > anzahl) { rangebis = -1; } else { } } catch (Exception) { Console.WriteLine("\nNur gültige Zeichen eingeben, Format: z.B. 2-5!\nWeiter mit einer beliebigen Taste"); while (!Console.KeyAvailable) { ; } Console.ReadKey(true); continue; } //Range prüfen if (rangevon < 0 || rangebis < 0 || rangevon > anzahl || rangebis > anzahl) { Console.WriteLine("\nDer Bereich ist ungültig, es sind nur die Positionen 1 bis " + anzahl + " verfügbar!"); Console.WriteLine("Weiter mit einer beliebigen Taste"); while (!Console.KeyAvailable) { ; } Console.ReadKey(true); continue; } else { } } //Einzelner Wert? else { //Eingabe prüfen try { pos = Convert.ToInt32(eingabe); } catch (Exception) { Console.WriteLine("\nNur gültige Zeichen eingeben! Weiter mit einer beliebigen Taste"); while (!Console.KeyAvailable) { ; } Console.ReadKey(true); continue; } //Falsche Position gewählt if (pos > anzahl || pos < 1) { Console.WriteLine("Ausgewählter Datensatz ungültig, es sind nur die Positionen 1 bis " + anzahl + " verfügbar!"); Console.WriteLine("Weiter mit einer beliebigen Taste"); while (!Console.KeyAvailable) { ; } Console.ReadKey(); continue; } else { } } //einzelne Werte löschen if (pos > 0) { Console.Clear(); Console.Write("Ausgewählter Datensatz: "); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Nr." + pos + " , vom " + Datensaetze[pos - 1].Datum); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("\n(Wert löschen mit 'return' oder abbrechen mit 'ESC')\n"); while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.Escape) { continue; } else if (input.Key == ConsoleKey.Enter) { Wetterdaten[] neu = new Wetterdaten[366]; //Löschen for (int index1 = 0; index1 < pos - 1; index1++) { neu[index1] = Datensaetze[index1]; } for (int index1 = pos; index1 < anzahl; index1++) { neu[index1 - 1] = Datensaetze[index1]; } Datensaetze = neu; } else { } } else //Range löschen { Console.Clear(); Console.Write("Ausgewählte Datensätze: "); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Nr." + rangevon + " bis Nr. " + rangebis); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("\n(Werte löschen mit 'return' oder abbrechen mit 'ESC')\n"); while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.Escape) { continue; } else if (input.Key == ConsoleKey.Enter) { Wetterdaten[] neu = new Wetterdaten[366]; //Löschen int index1 = 0; int index2 = 0; for (index1 = 0; index1 < rangevon - 1; index1++) { neu[index1] = Datensaetze[index1]; } for (index2 = rangebis; index2 < anzahl; index2++) { neu[index1] = Datensaetze[index2]; index1++; } Datensaetze = neu; } else { } } } else { //Fehler } } }
static Wetterdaten DatenSuchen(int art, ref Wetterdaten[] Datensaetze, string value, ref int position) { Wetterdaten ergebnis = new Wetterdaten(); //leerer Datensatz //Wert validieren bool validdate = false; bool validtemp = false; bool validpressure = false; bool validfeuchte = false; #region Daten korrekt und um was handelt es sich (Datum,Temperatur,Luftdruck oder Luftfeuchtigkeit? Regex Vorgabe = new Regex(@"\d{1,2}.\d{1,2}.\d{2,4}"); Match erg = Vorgabe.Match(value); if (erg.Success) { DateTime tmpdate; if (DateTime.TryParse(erg.Value, out tmpdate)) { //gültige Datum value = erg.Value; validdate = true; } else { //ungültiges Datum validdate = false; } } else //kein Datum enthalten { validdate = false; //Temperaturwert Vorgabe = new Regex(@"\D{1}\d{1,2}[,]{0,1}\d{0,2}"); erg = Vorgabe.Match(value); if (erg.Success) { validtemp = true; } else { //kein Temperaturwert vorhanden Vorgabe = new Regex(@"\d{1,4}"); erg = Vorgabe.Match(value); if (erg.Success) { //Druck oder Feuchtewert if (erg.Value.Length > 2 && erg.Value[0] != '1') { uint wert = Convert.ToUInt32(erg.Value); if (wert >= 700 && wert <= 1080 && erg.Value == value) { validpressure = true; } else { validpressure = false; } } else { uint wert = Convert.ToUInt32(erg.Value); if (wert >= 0 && wert <= 100 && erg.Value == value) { validfeuchte = true; } else { validfeuchte = false; } } } else { //Fehler } } } if (!validdate && !validtemp && !validpressure && !validfeuchte) { return(ergebnis); } else { } #endregion #region Suche beginnen int anzahl = 0; //vorhandene Datensätze Zählen for (int index = 0; index < Datensaetze.Length; index++) { if (Datensaetze[index].Luftdruck >= 700) { anzahl++; } else { } } //Sind welche vorhanden? if (anzahl <= 0) { return(ergebnis); } else { } //Wenn ja, dann 'value' suchen switch (art) { case 1: //Lineares Suchen for (int index = 0; index < anzahl; index++) { if (validdate) { string d1 = Convert.ToDateTime(Datensaetze[index].Datum).ToShortDateString(); string d2 = Convert.ToDateTime(value).ToShortDateString(); if (d1 == d2) { ergebnis = Datensaetze[index]; position = index + 1; break; } else { } } else if (validtemp) { double t1 = Convert.ToDouble(Datensaetze[index].Temperatur); double t2 = Convert.ToDouble(value); if (t1 == t2) { ergebnis = Datensaetze[index]; position = index + 1; break; } else { } } else if (validpressure) { uint p1 = Convert.ToUInt32(Datensaetze[index].Luftdruck); uint p2 = Convert.ToUInt32(value); if (p1 == p2) { ergebnis = Datensaetze[index]; position = index + 1; break; } else { } } else if (validfeuchte) { uint f1 = Convert.ToUInt32(Datensaetze[index].Luftfeuchtigkeit); uint f2 = Convert.ToUInt32(value); if (f1 == f2) { ergebnis = Datensaetze[index]; position = index + 1; break; } else { } } else { //FEhler } } break; case 2: //binäres Suchen //erst Sortieren dann suchen if (validdate) { DatenSortieren(1, ref Datensaetze, "Datum", true); int pivot = anzahl / 2; int start = 0; int end = anzahl; do { DateTime d1 = Convert.ToDateTime(Datensaetze[pivot].Datum); DateTime d2 = Convert.ToDateTime(value); if (d1 == d2) { ergebnis = Datensaetze[pivot]; position = pivot + 1; start = end = 0; } else if (d1 > d2) { start = 0; end = pivot; pivot = end / 2; } else { start = pivot; end = anzahl; pivot = start + (end - start) / 2; } } while ((end - start) != 0); } else if (validtemp) { DatenSortieren(1, ref Datensaetze, "Temperatur", true); int pivot = anzahl / 2; int start = 0; int end = anzahl; do { double t1 = Convert.ToDouble(Datensaetze[pivot].Temperatur); double t2 = Convert.ToDouble(value); if (Math.Abs(t1 - t2) < 1E-05) { ergebnis = Datensaetze[pivot]; position = pivot + 1; start = end = 0; } else if (t1 > t2) { start = 0; end = pivot; pivot = end / 2; } else { start = pivot; end = anzahl; pivot = start + (end - start) / 2; } } while ((end - start) != 0); } else if (validpressure) { DatenSortieren(1, ref Datensaetze, "Luftdruck", true);; int pivot = anzahl / 2; int start = 0; int end = anzahl; do { uint p1 = Convert.ToUInt32(Datensaetze[pivot].Luftdruck); uint p2 = Convert.ToUInt32(value); if (p1 == p2) { ergebnis = Datensaetze[pivot]; position = pivot + 1; start = end = 0; } else if (p1 > p2) { start = 0; end = pivot; pivot = end / 2; } else { start = pivot; end = anzahl; pivot = start + (end - start) / 2; } } while ((end - start) != 0); } else if (validfeuchte) { DatenSortieren(1, ref Datensaetze, "Luftfeuchtigkeit", true); int pivot = anzahl / 2; int start = 0; int end = anzahl; do { uint f1 = Convert.ToUInt32(Datensaetze[pivot].Luftfeuchtigkeit); uint f2 = Convert.ToUInt32(value); if (f1 == f2) { ergebnis = Datensaetze[pivot]; position = pivot + 1; start = end = 0; } else if (f1 > f2) { start = 0; end = pivot; pivot = end / 2; } else { start = pivot; end = anzahl; pivot = start + (end - start) / 2; } } while ((end - start) != 0); } else { } break; default: break; } #endregion return(ergebnis); }
static void Run() { //Zentrale Daten für die Anwendung Wetterdaten[] Datensaetze = new Wetterdaten[366]; #region Testdaten DateTime temp = Convert.ToDateTime("1.1.2020"); for (int index = 0; index < 366; index++) { Datensaetze[index] = new Wetterdaten(); Datensaetze[index].Datum = temp.ToShortDateString(); temp = temp.Date.AddDays(1); Datensaetze[index].Temperatur = 23.7 + index; Datensaetze[index].Luftdruck = 760 + ((uint)index * 2); Datensaetze[index].Luftfeuchtigkeit = 35 + ((uint)index * 2); } //Standardpfade einstellen /*string tempdir = Directory.GetCurrentDirectory(); * Settings.Default.Exportpfad = tempdir + @"\Export"; * Settings.Default.Importpfad = tempdir + @"\Import"; * Settings.Default.Save();*/ #endregion //Lokale Daten für run() bool weiter = true; //SplashInfos Splashinfo(); //Hauptschleife while (weiter) { //Hauptmenü anzeigen und auswerten Console.CursorVisible = false; int auswahl = HauptmenueAnzeigenAuswerten(); switch (auswahl) { case 1: //Wetterdaten verwalten WetterdatenVerwalten(ref Datensaetze); break; case 2: //Wetterdaten anzeigen WetterdatenAnzeigen(Datensaetze); break; case 3: //Wetterdaten auswerten WetterdatenAuswerten(Datensaetze); break; case 4: //Wetterdaten importieren WetterdatenImportieren(ref Datensaetze); break; case 5: //Wetterdaten exportieren WetterdatenExportieren(ref Datensaetze); break; case 6: //Pfade konfigurieren Pfadekonfigurieren(); break; case 7: //beenden weiter = false; break; } } //Datensicherung }
static bool DatenImportieren(ref Wetterdaten[] Datensaetze, string Pfad, string name, ref int anzahlneue) { bool ok = false; int anzahl = 0; //zählen foreach (Wetterdaten wd in Datensaetze) { if (wd.Luftdruck > 700) { anzahl++; } else { } } Wetterdaten[] neu = new Wetterdaten[366]; FileStream FS = new FileStream(Pfad + "\\" + name, FileMode.Open, FileAccess.Read); StreamReader SR = new StreamReader(FS, Encoding.UTF8); //Titelzeile string input = SR.ReadLine(); if (!input.Contains("Datum")) { ok = false; } else { int index = 0; string tempinput = ""; while (!SR.EndOfStream) { tempinput = SR.ReadLine(); string Datum = tempinput.Substring(0, tempinput.IndexOf(";")); tempinput = tempinput.Substring(tempinput.IndexOf(";") + 1); string Temperatur = tempinput.Substring(0, tempinput.IndexOf(";")); tempinput = tempinput.Substring(tempinput.IndexOf(";") + 1); string Luftdruck = tempinput.Substring(0, tempinput.IndexOf(";")); tempinput = tempinput.Substring(tempinput.IndexOf(";") + 1); string Luftfeuchtigkeit = tempinput.Substring(0); tempinput = tempinput.Substring(tempinput.IndexOf(";") + 1); neu[index].Datum = Datum; neu[index].Temperatur = Convert.ToDouble(Temperatur); neu[index].Luftdruck = Convert.ToUInt32(Luftdruck); neu[index].Luftfeuchtigkeit = Convert.ToUInt32(Luftfeuchtigkeit); index++; } if (index > 0) { ok = true; //Überschreiben oder anhängen? Console.CursorVisible = false; Console.WriteLine("\nEs sind " + index + " Datensätze zum Import vorhanden!"); Console.Write("\nWollen Sie die vorhandenen " + anzahl + " Datensätze \n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(U)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("eberschreiben oder\n\nDie Datensätze \n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(A)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("nhängen?\n\nAbbrechen mit "); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("(ESC)"); Console.ForegroundColor = ConsoleColor.Gray; Console.CursorVisible = true; while (!Console.KeyAvailable) { ; } ConsoleKeyInfo inputconsole = Console.ReadKey(true); Console.CursorVisible = false; if (inputconsole.Key == ConsoleKey.Escape) { ok = false; } else if (inputconsole.Key == ConsoleKey.U) { ok = true; Datensaetze = new Wetterdaten[366]; if (index < 367) { anzahlneue = index; for (int index2 = 0; index2 < index; index2++) { Datensaetze[index2] = neu[index2]; } ok = true; } else { Console.WriteLine("\nEs können nur 366 Datensätze von importiert werden! j/n?"); while (!Console.KeyAvailable) { ; } inputconsole = Console.ReadKey(true); if (inputconsole.Key == ConsoleKey.J) { anzahlneue = 366; if (anzahlneue > index) { anzahlneue = index; } else { } for (int index2 = 0; index2 < anzahlneue; index2++) { Datensaetze[index2] = neu[index2]; } ok = true; } else { ok = false; } } } else if (inputconsole.Key == ConsoleKey.A) { ok = true; if (anzahl >= 366) { Console.WriteLine("Es können keine weiteren Daten angehängt werden!"); Console.WriteLine("Weiter mit einer beliebigen Taste!"); while (!Console.KeyAvailable) { ; } Console.ReadKey(true); ok = false; } else { if ((366 - anzahl - index) < 0) { Console.WriteLine("\nEs können nur " + (366 - anzahl) + " Datensätze von " + index + " angehängt werden! j/n?"); while (!Console.KeyAvailable) { ; } inputconsole = Console.ReadKey(true); if (inputconsole.Key == ConsoleKey.J) { anzahlneue = (366 - anzahl); if (anzahlneue > index) { anzahlneue = index; } else { } int doppler = 0; for (int index2 = 0; index2 < anzahlneue; index2++) { int pos = -1; //Doppler prüfen if (!isDatensatzVorhanden(Datensaetze, neu[index2], ref pos)) { Datensaetze[anzahl + index2] = neu[index2]; } else { doppler++; Console.Clear(); Console.WriteLine("Datensatz vorhanden:\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Datum: " + Datensaetze[pos].Datum); Console.WriteLine("Temperatur: " + Datensaetze[pos].Temperatur.ToString("F2")); Console.WriteLine("Luftdruck: " + Datensaetze[pos].Luftdruck.ToString()); Console.WriteLine("Luftfeuchtigkeit: " + Datensaetze[pos].Luftfeuchtigkeit.ToString()); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("\nersetzen durch:\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Datum: " + neu[index2].Datum); Console.WriteLine("Temperatur: " + neu[index2].Temperatur.ToString("F2")); Console.WriteLine("Luftdruck: " + neu[index2].Luftdruck.ToString()); Console.WriteLine("Luftfeuchtigkeit: " + neu[index2].Luftfeuchtigkeit.ToString()); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("\n(j/n)?"); while (!Console.KeyAvailable) { ; } inputconsole = Console.ReadKey(true); if (inputconsole.Key == ConsoleKey.J) { Datensaetze[pos] = neu[index2]; } else { } anzahlneue--; } } ok = true; } else { ok = false; } } else { anzahlneue = index; int doppler = 0; int pos = -1; for (int index2 = 0; index2 < index; index2++) { //Doppler prüfen if (!isDatensatzVorhanden(Datensaetze, neu[index2], ref pos)) { Datensaetze[anzahl + index2] = neu[index2]; } else { doppler++; Console.Clear(); Console.WriteLine("Datensatz vorhanden:\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Datum: " + Datensaetze[pos].Datum); Console.WriteLine("Temperatur: " + Datensaetze[pos].Temperatur.ToString("F2")); Console.WriteLine("Luftdruck: " + Datensaetze[pos].Luftdruck.ToString()); Console.WriteLine("Luftfeuchtigkeit: " + Datensaetze[pos].Luftfeuchtigkeit.ToString()); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("\nersetzen durch:\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Datum: " + neu[index2].Datum); Console.WriteLine("Temperatur: " + neu[index2].Temperatur.ToString("F2")); Console.WriteLine("Luftdruck: " + neu[index2].Luftdruck.ToString()); Console.WriteLine("Luftfeuchtigkeit: " + neu[index2].Luftfeuchtigkeit.ToString()); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("\n(j/n)?"); while (!Console.KeyAvailable) { ; } inputconsole = Console.ReadKey(true); if (inputconsole.Key == ConsoleKey.J) { Datensaetze[pos] = neu[index2]; } else { } anzahlneue--; } } ok = true; } } } else { ok = false; } } else { ok = false; } } SR.Close(); FS.Close(); return(ok); }
static void WetterdatenAnzeigen(Wetterdaten[] Datensaetze) { int index = 1; bool fertig = false; int anzahl = 0; //Zählen foreach (Wetterdaten wd in Datensaetze) { if (wd.Luftdruck >= 700) { anzahl++; } else { } } //Daten anzeigen ConsoleKeyInfo input; do { WetterdatenAnzeigen(Datensaetze, index); //Menü if ((anzahl % 15) > 0) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("<-"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" Seite zurück (Seite " + index + " von " + (anzahl / 18 + 1) + ") "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(ESC)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" zurück Seite weiter "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("->"); Console.ForegroundColor = ConsoleColor.Gray; } else { Console.ForegroundColor = ConsoleColor.Red; Console.Write("<-"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" Seite zurück (Seite " + index + " von " + (anzahl / 18) + ") "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(ESC)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" zurück Seite weiter "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("->"); Console.ForegroundColor = ConsoleColor.Gray; } //Sortieren und Suchen Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Red; Console.Write(" (F) "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("Datensatz finden "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(S) "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("Datensätze sortieren\n"); //Auswerten while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.LeftArrow) { if (index > 1) { index--; } else { } } else if (input.Key == ConsoleKey.RightArrow) { if (anzahl > 15 && index <= (anzahl / 15)) { index++; } else { } } else if (input.Key == ConsoleKey.Escape) { fertig = true; } else if (input.Key == ConsoleKey.F) { if (anzahl <= 0) { continue; } else { } Console.CursorTop = Console.CursorTop - 2; Console.Write(" \n"); Console.CursorTop = Console.CursorTop - 1; Console.Write(" \n"); Console.CursorTop = Console.CursorTop - 3; bool ok = false; Wetterdaten ergebnis = new Wetterdaten(); int position = 0; string eingabe; do { Console.ForegroundColor = ConsoleColor.Red; Console.Write(" (L)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("ineares Suchen "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(B)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("inäres Suchen "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(ESC) "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("zurück"); while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.L) { Console.CursorVisible = true; Console.CursorLeft = 0; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Lineares Suchen "); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Geben Sie den zu suchenden Wert ein:"); Console.Write("Format: "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Datum"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" (tt.mm.jjjj), "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Temperatur (°C)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" (vv,nn), "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Luftdruck (hPa)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" (dddd), "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("\nLuftfeuchtigkeit (%)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" (fff))\n"); Console.Write("(Eingabe mit "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("return "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("bestätigen oder "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("abbrechen: return"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" drücken)\n"); eingabe = Console.ReadLine(); Console.CursorVisible = false; if (eingabe == "") { break; } else { } ergebnis = DatenSuchen(1, ref Datensaetze, eingabe, ref position); } else if (input.Key == ConsoleKey.B) { Console.CursorVisible = true; Console.CursorLeft = 0; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Binäres Suchen "); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Geben Sie den zu suchenden Wert ein:"); Console.Write("Format: "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Datum"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" (tt.mm.jjjj), "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Temperatur (°C)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" (vv,nn), "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Luftdruck (hPa)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" (dddd), "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("\nLuftfeuchtigkeit (%)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" (fff))\n"); Console.Write("(Eingabe mit "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("return "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("bestätigen oder "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("abbrechen: return"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" drücken)\n"); eingabe = Console.ReadLine(); Console.CursorVisible = false; if (eingabe == "") { break; } else { } position = 0; ergebnis = DatenSuchen(2, ref Datensaetze, eingabe, ref position); } else if (input.Key == ConsoleKey.Escape) { break; } else { Console.CursorLeft = 0; Console.Write(" "); Console.CursorLeft = 0; Console.CursorTop = Console.CursorTop - 1; ok = false; continue; } if (ergebnis.Luftdruck >= 700) { string format = "{0,-18}{1,-12}"; Console.WriteLine("\nGefundener Datensatz\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Nr."); Console.Write((position) + " :\n"); Console.WriteLine(format, "Datum: ", Datensaetze[position - 1].Datum); Console.WriteLine(format, "Temperatur: ", Datensaetze[position - 1].Temperatur.ToString("F2") + " °C"); Console.WriteLine(format, "Luftdruck: ", Datensaetze[position - 1].Luftdruck + " hPa"); Console.WriteLine(format, "Luftfeuchtigkeit: ", Datensaetze[position - 1].Luftfeuchtigkeit + " %\n"); Console.ForegroundColor = ConsoleColor.Gray; } else { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Der Text \"" + eingabe + "\" wurde nicht gefunden!"); Console.ForegroundColor = ConsoleColor.Gray; } Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\nWeiter mit einer beliebigen Taste!"); Console.ForegroundColor = ConsoleColor.Gray; while (!Console.KeyAvailable) { ; } Console.ReadKey(true); ok = true; } while (!ok); } else if (input.Key == ConsoleKey.S) { if (anzahl <= 0) { continue; } else { } Console.CursorTop = Console.CursorTop - 2; Console.Write(" \n"); Console.CursorTop = Console.CursorTop - 1; Console.Write(" \n"); Console.CursorTop = Console.CursorTop - 3; bool ok = false; bool aufwaerts = true; string eingabe = ""; do { Console.ForegroundColor = ConsoleColor.Red; Console.Write(" (B)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("ubble Sort "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(S)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("election Sort "); Console.ForegroundColor = ConsoleColor.Red; Console.Write("(ESC) "); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("zurück"); while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.B) { Console.CursorVisible = false; Console.CursorLeft = 0; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Bubble Sort "); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Wonach soll sortiert werden?"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(D)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("atum, "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(T)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("emperatur, "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(L)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("uftdruck, Luft"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(F)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("euchtigkeit, "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(ESC)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" zurück\n"); while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.D) { eingabe = "Datum"; } else if (input.Key == ConsoleKey.T) { eingabe = "Temperatur"; } else if (input.Key == ConsoleKey.L) { eingabe = "Luftdruck"; } else if (input.Key == ConsoleKey.F) { eingabe = "Luftfeuchtigkeit"; } else if (input.Key == ConsoleKey.Escape) { break; } else { break; } Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(A)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("ufwärts oder ab"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(w)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("ärts sortieren? "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(ESC)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" zurück"); while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.A) { aufwaerts = true; } else if (input.Key == ConsoleKey.W) { aufwaerts = false; } else if (input.Key == ConsoleKey.Escape) { break; } else { break; } DatenSortieren(1, ref Datensaetze, eingabe, aufwaerts); ok = true; Console.CursorVisible = false; } else if (input.Key == ConsoleKey.S) { Console.CursorVisible = true; Console.CursorLeft = 0; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Selection Sort "); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Wonach soll sortiert werden?\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(D)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("atum, "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(T)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("emperatur, "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(L)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("uftdruck, Luft"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(F)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("euchtigkeit\n"); while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.D) { eingabe = "Datum"; } else if (input.Key == ConsoleKey.T) { eingabe = "Temperatur"; } else if (input.Key == ConsoleKey.L) { eingabe = "Luftdruck"; } else if (input.Key == ConsoleKey.F) { eingabe = "Luftfeuchtigkeit"; } else if (input.Key == ConsoleKey.Escape) { break; } else { break; } Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(A)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("ufwärts oder ab"); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(w)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("ärts sortieren? "); Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("(ESC)"); Console.ForegroundColor = ConsoleColor.Gray; Console.Write(" zurück"); while (!Console.KeyAvailable) { ; } input = Console.ReadKey(true); if (input.Key == ConsoleKey.A) { aufwaerts = true; } else if (input.Key == ConsoleKey.W) { aufwaerts = false; } else if (input.Key == ConsoleKey.Escape) { break; } else { break; } DatenSortieren(2, ref Datensaetze, eingabe, aufwaerts); ok = true; Console.CursorVisible = false; } else if (input.Key == ConsoleKey.Escape) { break; } else { Console.CursorLeft = 0; Console.Write(" "); Console.CursorLeft = 0; Console.CursorTop = Console.CursorTop - 1; ok = false; continue; } } while (!ok); } else { //Fehler } } while (!fertig); }