/// <summary> /// ходил не плохо и сдал все задачи и мало сдал лаб и не показал себя хорошо => 3 /// </summary> static double toThreeMark(double visiting, double tasks, double labs, double knowledge, double read) { // посредственная работа в семестре var visitAndTasks = AND((-visitLow).Calculate(visiting), allTasks.Calculate(tasks)); // не показал себя хорошо var badKnowledge = 1 - goodKnowledge(labs, knowledge, read); return(AND(visitAndTasks, fewLabs.Calculate(labs), badKnowledge)); }
/// <summary> ///ходил не плохо и сдал все задачи и (хорошо знает предмет или средне сдал лабы или умеет читать) /// и (не защитил все лабы или не показал себя отлично) => 4 /// </summary> static double toFourMark(double visiting, double tasks, double labs, double knowledge, double read) { // хорошая базовая работа в семестре var baseWork = AND((-visitLow).Calculate(visiting), allTasks.Calculate(tasks)); // средне знает предмет или умеем читать или средне сдал лабы var Knowledge = goodKnowledge(labs, knowledge, read); // не сдал все лабы var notAllLabs = 1 - allLabs.Calculate(labs); // не показал себя отлично var notAdvanced = 1 - advancedKnowledge(visiting, labs, knowledge, read); return(AND(baseWork, Knowledge, notAllLabs, notAdvanced)); }
/// <summary> /// знает по савельеву и умеет читать и не плохо сдал лабы /// </summary> static double advancedKnowledge(double visiting, double labs, double knowledge, double read) => AND(visitGood.Calculate(visiting), knowSaveliev.Calculate(knowledge), canRead.Calculate(read), (-fewLabs).Calculate(labs));
// // Функции определяющие принадлежность к какой-либо оценке // ////////////////////// /// <summary> /// не плохо знает предмет или умеет читать или средне защитил лабы /// </summary> static double goodKnowledge(double labs, double knowledge, double read) => OR((-dontKnow).Calculate(knowledge), canRead.Calculate(read), normLabs.Calculate(labs));
/// <summary> /// не ходил или не сдал задачи => 2 /// </summary> static double toTwoMark(double visit, double tasks) => OR(visitLow.Calculate(visit), fewTasks.Calculate(tasks));