-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
141 lines (126 loc) · 4.55 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using Programmieren_I.Uebungen;
namespace Programmieren_I;
internal static class ProgrammierenI
{
private static void Main()
{
while (true)
{
Console.WriteLine("Sie haben folgende Programme zur Auswahl:");
PrintAppList();
var shortAppName = GetUserInput();
if (LaunchApp(shortAppName))
break;
Console.WriteLine("Ungültige Eingabe. Bitte geben Sie eine gültige Programmnummer aus der Liste ein.");
}
}
private static string OsFileLoc(string namesOrLines)
{
string appListLocation;
string appLinesLocation;
if (OperatingSystem.IsWindows())
{
appListLocation = ".\\uebungsnamen.txt";
appLinesLocation = ".\\applines.txt";
}
else
{
appListLocation = "./uebungsnamen.txt";
appLinesLocation = "./applines.txt";
}
return namesOrLines == "Names" ? appListLocation : appLinesLocation;
}
private static string GetUserInput()
{
Console.Write("Eingabe nach Schema: 1/2/2z/3z: ");
var selection = Console.ReadLine() ?? throw new InvalidOperationException();
return selection;
}
private static string? GetLineContent(int targetline)
{
var linecontent = "";
var sr = new StreamReader(OsFileLoc("Names"));
for (var i = 0; i <= targetline; i++)
if (i + 1 == targetline)
linecontent = sr.ReadLine();
else
sr.ReadLine();
sr.Close();
return linecontent;
}
private static int GetLine(string shortappname)
{
if (int.TryParse(shortappname, out var linenumber))
linenumber = linenumber * 2 - 1;
else
linenumber += (int)char.GetNumericValue(shortappname[0]) * 2;
return linenumber;
}
private static string BuildAppName(int linenumber, string? linecontent)
{
var result = "";
if ((linenumber + 1) % 2 != 0)
result += $"Zusätzliche Übung {(linenumber + 1) / 2} - {linecontent}";
else
result += $"Übung {(linenumber + 1) / 2} - {linecontent}";
return result;
}
private static void PrintAppList()
{
var i = 1;
var sr = new StreamReader(OsFileLoc("Names"));
var line = sr.ReadLine();
while (line != null)
{
Console.WriteLine(BuildAppName(i, line));
line = sr.ReadLine();
i++;
}
}
private static bool LaunchApp(string shortAppName)
{
var appDictionary = new Dictionary<string, Action>
{
{ "1", Uebung1.Anfaenge },
{ "1z", ZusaetzlicheUebung1.Rechner },
{ "2", Uebung2.Eingaben },
{ "2z", ZusaetlicheUebung2.Logikaufgabe },
{ "3", Uebung3.Typen },
{ "3z", ZusaetzlicheUebung3.AusgabeAlsBinärUndHexadezimalZahl },
{ "4", Uebung4.MathematischeFunktionen },
{ "4z", ZusaetzlicheUebung4.Zinsberechnung },
{ "5", Uebung5.AnsweisungenUmsetzen },
{ "5z", ZusaetzlicheUebung5.Fakultaet },
{ "6", Uebung6.ReihenBerechnen },
{ "6z", ZusaetzlicheUebung6.NewtonVerfahren },
{ "7", Uebung7.Textanalyse },
{ "7z", ZusaetzlicheUebung7.TextanalyseMitCollections },
{ "8", Uebung8.DatumBestimmen },
{ "8z", ZusaetzlicheUebung8.IterationUndRekursion },
{ "9", Uebung9.MethodenParameter },
{ "9z", ZusaetzlicheUebung9.PrimzahlenOderDasSiebDesEratosthenes },
{ "10", Uebung10.KlassenErstellenTeil1 },
{ "10z", ZusaetzlicheUebung10.BisektionsVerfahren },
{ "11", Uebung11.KlassenErstellenTeil2 },
{ "11z", ZusaetzlicheUebung11.ZahlenSortieren }
};
if (!appDictionary.TryGetValue(shortAppName, out var appAction)) return false;
var lineInTxtFile = GetLine(shortAppName);
Console.WriteLine($"Starte {BuildAppName(lineInTxtFile, GetLineContent(lineInTxtFile))}\n" +
$"{GetDotLine(lineInTxtFile)}");
appAction.Invoke();
return true;
}
private static string? GetDotLine(int targetline)
{
var linecontent = "";
var sr = new StreamReader(OsFileLoc("Lines"));
for (var i = 0; i <= targetline; i++)
if (i + 1 == targetline)
linecontent = sr.ReadLine();
else
sr.ReadLine();
sr.Close();
return linecontent;
}
}