C# Arrays - Frage zu einer Aufgabe
-
Hallo zusammen,
momentan bin ich noch ein Schüler und habe eine Aufgabe aufbekommen, die ich leider nicht direkt lösen kann und zwar werde ich euch einmal die Aufgabenstellung nennen:
Es Wird ermittelt, ob der Schüler versetzt werden kann: Anforderungen: nicht mehr als zwei "5er" und keine "6" oder keine 5er und höchstens eine "6".
Bei zwei "5er" und keiner "6" auf dem Zeugnis wird vermerkt: " Es ist eine Nachprüfung möglich!".
Und nun zu meinem Programm das ich soweit habe Sind die anderen 3 aufgaben gewesen.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _02._03._2011___Fachbezeichnung_A4 { class Program { static void Main(string[] args) { //Deklaration int feldElemente; //Eingabe Anzahl Felderelemente Console.WriteLine("Bitte geben sie die Anzahl der Feldelemente ein: "); feldElemente = Convert.ToInt32(Console.ReadLine()); //Erzeugung des Arrays string[] fach = new string[4]; int[] noten = new int[5]; string[] notenBez = new string[6]; //Notenbezeichnung notenBez[0] = "sehr gut"; notenBez[1] = "gut"; notenBez[2] = "befriegend"; notenBez[3] = "ausreichend"; notenBez[4] = "mangelhaft"; notenBez[5] = "ungenügend"; //Anzahl der Feldelemente fach = new string[feldElemente]; //Einlesen for (int i = 0; i < feldElemente; i++) { Console.Write("Bitte Fach {0} eingeben : ", i + 1); fach[i] = Convert.ToString(Console.ReadLine()); Console.Write("Bitte Note für Fach {0} eingeben : ", i + 1); noten[i] = Convert.ToInt32(Console.ReadLine()); Console.Write("\n"); } //Ausgeben for (int i = 0; i < feldElemente; i++) { Console.Write("{0} = {1}\n", fach[i], notenBez[noten[i] - 1]); } Console.ReadKey(); } } }
Nun hoffe ich auf eine Tipps evtl. Vorschläge wie ich das umsetzen kann.
-
Schön das du schon was probiert hast
Erlebt man selten hier, besonders wenn es um Hausaufgaben geht.
1. Tip:
fach = new string[feldElemente];
Mach das doch gleich mit der Initialisierung zusammen. Also
string[] fach = new string[4];
2. Tip: Schau dir mal das Dictionary vo C# an. Damit kannst du eine Beziehung zwischen Fach und Note herstellen, was du ja jetzt momentan über zwei voneiander gelösten Arrays machst. Mit dieser Datenstruktur kannst du Fach und jeweilige Noten in Relation stellen. Ich denke, du solltest erstmal das umsetzen und dann zeigst du uns deinen Programm nochmal und wir schauen dann weiter, oder?
-
Der eigentliche Tipp fehlt ja noch. Du musst jetzt die Bedingungen irgendwie auswerten. Nehmen wir die erste: "nicht mehr als zwei "5er" und keine "6"". Also musst du dein Array mit den Noten durchlaufen, die Anzahl der 5en und 6en zählen und dann die Bedingung prüfen. Etwa so:
int fuenfen = 0, sechsen = 0; for (int i = 0; i < noten.Length; i++) { if (noten[i] == 5) fuenfen++; else if (noten[i] == 6) sechsen++; } if (fuenfen <= 2 && sechsen == 0) { // OK } else { // Versetzungsgefährdet. }
Das ist jetzt nicht sonderlich elegant, aber ich glaube darum geht es erstmal nicht.
-
@ Firefighter
Danke für deine Antwort erstmal, die Seite ist recht interessant, jedoch gabs da einige Verständigungsprobleme, dennoch Danke
Auch dir danke ich für die Antwort, ich finde deine Idee relativ nett und werde die auch erst einmal in meinem Quellcode ergänzen bzw. anpassen.
Werde mich nachher, wenn ich scheitern sollte melden, denke aber das es dank euch nicht der Fall sein wird.
-
Du könntest die Noten schon bei der Eingabe zählen,statt das array am Ende durchzugehen.