Ich weiß, das klingt wie im fragen für einen Löffel zu mir gefüttert werden, aber ich bin wirklich verwirrt und stecken auf die Formulierung mehrere Logiken, aber immer noch nicht finden können, die echte Sache.Analysieren und Vergleichen von 2 Listen
Das Ziel meines derzeitigen Systems ist es, die Noten und Prüfungsergebnisse eines Schülers zu analysieren, um festzustellen, welcher Collegestudent für ihn geeignet ist.
Ich habe fast alle Systemfunktionen mit Ausnahme der Gleichung für diese abgeschlossen.
davon aus, dass
I = Grades Result
II = Examination Result
A = Major A
B = Major B
C = Major C
so der Tisch so etwas wie
| A | B | C |
---------------------
I | | | |
---------------------
II | | | |
aussehen würde ich brauche um ein Ergebnis zu formulieren, wo ich mehrere mögliche Szenarien einschätzen können, wie:
| A | B | C |
---------------------
I | 1 | 2 | 3 |
---------------------
II | 1 | 3 | 2 |
in der Tabelle über, hatte Major A
einen Rang von beiden 1
auf I
und II
. Ohne weitere Gleichungen wählt der Schüler also am besten Major A
.
und, in:
| A | B | C |
---------------------
I | 1 | 2 | 3 |
---------------------
II | 3 | 2 | 1 |
Major B
hatte einen Rang von beiden 2
auf I
und II
. So wie das erste Beispiel, in dem der Schüler sowohl I
als auch II
ein stabiles Ergebnis erhielt, ist der Schüler am besten, Major B
auszuwählen.
hier:
| A | B | C |
---------------------
I | 3 | 2 | 1 |
---------------------
II | 3 | 2 | 1 |
alle drei Majors
haben stabile Ergebnisse sowohl in I
und II
. Aber in Bezug auf das Ranking, Major C
hatte die höchste Post, so dass der Student aus Major C
auswählen.
und das ist der schwierigste Teil für mich:
| A | B | C |
---------------------
I | 1 | 2 | 3 |
---------------------
II | 2 | 1 | 3 |
Major C
die einzige ist, die ein stabiles Ergebnis Ergebnis hatte. Aber da es Post ist 3
, Major C
ist aus der Gleichung. und deshalb wird eine Berechnung durchgeführt. Wo:
I = 60%
II = 40%
so
Major A will be ((0.6 x 1) + (0.4 x 2)) = 1.4
Major B will be ((0.6 x 2) + (0.4 x 1)) = 1.6
So ist in der Gleichung gegeben, Major A
hatte ein höheres Ranking Ergebnis über Major B
. So wird der Schüler Major A
als Top-Pick für Majors gegeben
Ich bin wirklich wirklich wirklich eine harte Zeit denken an eine Art und Weise, die die Gleichung und die Idee zu einem Code zu übersetzen, wo ich zwei List<>
verwendet wird. Eine für I
und eine für II
.
also, wenn jemand wirklich mich wirklich hier abholen könnte, würde ich es sehr schätzen. Ich habe keine Idee mehr, um mit dieser zu verschonen.danke
ich habe unter Code geschrieben und ich weiß, dass es so hässlich ist, wie es sein kann.
List<Ranking> Rank = new List<Ranking>();
// if all results are distinct to each other OR if all results are equal
if(
(ExamResult[0].MajorResult != GradeResult[0].MajorResult && ExamResult[1].MajorResult != GradeResult[1].MajorResult && ExamResult[2].MajorResult != GradeResult[2].MajorResult)
||
(ExamResult[0].MajorResult == GradeResult[0].MajorResult && ExamResult[1].MajorResult == GradeResult[1].MajorResult && ExamResult[2].MajorResult == GradeResult[2].MajorResult)
)
{
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 1).Select(x => x.MajorDescription).Single(), Value = ExamResult.Where(x => x.MajorID == 1).Select(x => x.MajorResult).Single() + GradeResult.Where(x => x.MajorID == 1).Select(x => x.MajorResult).Single() });
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 2).Select(x => x.MajorDescription).Single(), Value = ExamResult.Where(x => x.MajorID == 2).Select(x => x.MajorResult).Single() + GradeResult.Where(x => x.MajorID == 2).Select(x => x.MajorResult).Single() });
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 3).Select(x => x.MajorDescription).Single(), Value = ExamResult.Where(x => x.MajorID == 3).Select(x => x.MajorResult).Single() + GradeResult.Where(x => x.MajorID == 3).Select(x => x.MajorResult).Single() });
}
// if one of the three is equal
if(ExamResult[0].MajorResult == GradeResult[0].MajorResult || ExamResult[1].MajorResult == GradeResult[1].MajorResult || ExamResult[2].MajorResult == GradeResult[2].MajorResult)
{
var LowestRank1 = ExamResult.OrderBy(x => x.MajorResult).Last();
var LowestRank2 = GradeResult.OrderBy(x => x.MajorResult).Last();
var HighestRank1 = ExamResult.OrderBy(x => x.MajorResult).First();
var HighestRank2 = GradeResult.OrderBy(x => x.MajorResult).First();
if((ExamResult[0].MajorResult == LowestRank1.MajorResult) && (GradeResult[0].MajorResult == LowestRank2.MajorResult))
{
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 2).Select(x => x.MajorDescription).Single(), Value = (ExamResult.Where(x => x.MajorID == 2).Select(x => x.MajorResult).Single() * 0.4) + (GradeResult.Where(x => x.MajorID == 2).Select(x => x.MajorResult).Single() * 0.6) });
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 3).Select(x => x.MajorDescription).Single(), Value = (ExamResult.Where(x => x.MajorID == 3).Select(x => x.MajorResult).Single() * 0.4) + (GradeResult.Where(x => x.MajorID == 3).Select(x => x.MajorResult).Single() * 0.6) });
}
if((ExamResult[1].MajorResult == LowestRank1.MajorResult) && (GradeResult[1].MajorResult == LowestRank2.MajorResult))
{
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 1).Select(x => x.MajorDescription).Single(), Value = (ExamResult.Where(x => x.MajorID == 1).Select(x => x.MajorResult).Single() * 0.4) + (GradeResult.Where(x => x.MajorID == 1).Select(x => x.MajorResult).Single() * 0.6) });
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 3).Select(x => x.MajorDescription).Single(), Value = (ExamResult.Where(x => x.MajorID == 3).Select(x => x.MajorResult).Single() * 0.4) + (GradeResult.Where(x => x.MajorID == 3).Select(x => x.MajorResult).Single() * 0.6) });
}
if((ExamResult[2].MajorResult == LowestRank1.MajorResult) && (GradeResult[2].MajorResult == LowestRank2.MajorResult))
{
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 1).Select(x => x.MajorDescription).Single(), Value = (ExamResult.Where(x => x.MajorID == 1).Select(x => x.MajorResult).Single() * 0.4) + (GradeResult.Where(x => x.MajorID == 1).Select(x => x.MajorResult).Single() * 0.6) });
Rank.Add(new Ranking() { Name = ExamResult.Where(x => x.MajorID == 2).Select(x => x.MajorDescription).Single(), Value = (ExamResult.Where(x => x.MajorID == 2).Select(x => x.MajorResult).Single() * 0.4) + (GradeResult.Where(x => x.MajorID == 2).Select(x => x.MajorResult).Single() * 0.6) });
}
}
Im Problem hat nach Ihrer Logik, so dass Sie nur die Formel vergleichen wollen verwenden, wenn der am höchsten eingestuften „stabil“ Kandidat 3s erhalten? Ansonsten sollte stabil instabil sein? –
Ich denke, wenn ich das bestmöglich erklären kann. ist es, den Grad und die Prüfung des Studenten zu ordnen und die Rangordnung der drei Majors zu erhalten, die er nehmen kann. Wobei 1 die beste Wahl und 3 die schlechteste ist – TheQuestioner
Ja, multipliziere jede Punktzahl mit ihrer Skala und wähle dann die niedrigste Punktzahl für den gegebenen Schüler. –