/* Выполнение задачи * Входные данные: массив студентов, объект класса Marks */ static void Task(Student[] student, Marks marks) { foreach (var item in student) { Console.WriteLine(" Имя студента: {0}", item.GetFullName(item)); Console.WriteLine(" Возраст: {0}", item.GetAge(item)); Console.WriteLine(" Средний балл: {0:0.###}", item.GetAverageScore(item)); Console.WriteLine(" Группа: {0}", item.GetGroup(item)); Console.WriteLine("____________________________________________"); } for (int i = 0; i < marks.Subjects.Length; i++) { Console.WriteLine(" Средний балл по предмету {0} = {1:0.###}", marks.Subjects[i], student[i].GetAverageScoreForSubject(student, i)); } Console.WriteLine("____________________________________________"); List<string> univerityGroups = student[0].GetAllUniversutyGroup(student); foreach (var item in univerityGroups) { Console.WriteLine(" Средний балл группы {0} = {1:0.###}", item, student[0].GetAverageScoreGroup(student, item)); Console.WriteLine(" Средний возраст группы {0} = {1:0.##}", item, student[0].GetAverageAgeGroup(student, item)); Console.WriteLine("____________________________________________"); } student[0].EditGroupStudent(student[0], univerityGroups.Last()); student[0].EditScores(student[3], new int[] { 4, 5, 4 }); }
/* Начальная инициализация * Выходные данные: массив студентов */ static Student[] Initialization() { Student[] student = new Student[4]; DataOfBirth dataOfBirth; UniversityGroup universityGroup; Marks marks; /* 1-ый студент */ dataOfBirth = new DataOfBirth { Year = 1995, Month = 3, Day = 28, Town = "Запорожье" }; universityGroup = new UniversityGroup { Name = "PZ10" }; marks = new Marks { Scores = new int[] { 5, 5, 5} }; student[0] = new Student("Жеваго", "Александр", dataOfBirth, universityGroup, marks); /* 2-ой студент */ dataOfBirth = new DataOfBirth { Year = 1973, Month = 2, Day = 3, Town = "Житомир" }; universityGroup = new UniversityGroup { Name = "PZ10" }; marks = new Marks { Scores = new int[] { 5, 5, 5 } }; student[1] = new Student("Жеваго", "Елена", dataOfBirth, universityGroup, marks); /* 3-ий студент */ dataOfBirth = new DataOfBirth { Year = 1995, Month = 7, Day = 20, Town = "Самара" }; universityGroup = new UniversityGroup { Name = "PZ12" }; marks = new Marks { Scores = new int[] { 5, 5, 5 } }; student[2] = new Student("Беляев", "Виталий", dataOfBirth, universityGroup, marks); /* 4-ый студент */ dataOfBirth = new DataOfBirth { Year = 1994, Month = 12, Day = 13, Town = "Днепропетровск" }; universityGroup = new UniversityGroup { Name = "PZ12" }; marks = new Marks { Scores = new int[] { 5, 5, 5 } }; student[3] = new Student("Файфер", "Сергей", dataOfBirth, universityGroup, marks); return student; }
/* Метод рассчета возраста Входные данные: информация о студенте Выходные данные: возраст студента */ public int GetAge(Student student) { int age = 0; if (student.dataOfBirth.Year == DateTime.Today.Year) // если родился в этом году { return 0; } else if (student.dataOfBirth.Year > DateTime.Today.Year) // если еще не родился { return -1; } else { age = DateTime.Today.Year - student.dataOfBirth.Year; if (student.dataOfBirth.Month == DateTime.Today.Month) // если родился в текущем месяце { if (student.dataOfBirth.Day <= DateTime.Today.Day) // если день рождения уже прошел { return age; } else { return age - 1; } } else if (student.dataOfBirth.Month < DateTime.Today.Month) // если родился в месяце который уже прошел { return age; } else { return age - 1; } } }
/* Метод который возвращает список групп Входные данные: массив студентов Выходные данные: список групп */ public List<string> GetAllUniversutyGroup(Student[] student) { List<string> listUniversityGroup = new List<string>(); foreach (var item in student) { if (!listUniversityGroup.Contains(item.universityGroup.Name)) { listUniversityGroup.Add(item.universityGroup.Name); } } return listUniversityGroup; }
/* Метод который изменяет оценки студента Входные данные: информация о студенте, перечень оценок студента */ public void EditScores(Student student, int[] scores) { student.marks.Scores = scores; }
/* Метод который изменяет группу в которой учится студент Входные данные: информация о студенте, имя новой группы */ public void EditGroupStudent(Student student, string nameNewGroup) { student.universityGroup.Name = nameNewGroup; }
/* Метод который возвращает группу студента Входные данные: информация о студенте Выходные данные: группа студента */ public string GetGroup(Student student) { return student.universityGroup.Name; }
/* Метод который возвращает полное имя студента Входные данные: информация о студенте Выходные данные: полное имя студента */ public string GetFullName(Student student) { return student.lastName + " " + student.firstName; }
/* Метод который возвращает средний балл группы Входные данные: массив студентов, имя группы Выходные данные: средний балл группы */ public double GetAverageScoreGroup(Student[] student, string groupName) { int countStudents = 0; double averageScoreGroup = 0.0; foreach (var item in student) { if (item.universityGroup.Name.Equals(groupName)) { averageScoreGroup += GetAverageScore(item); countStudents++; } } return averageScoreGroup / countStudents; }
/* Метод который возвращает средний балл студентов по предмету Входные данные: массив студентов, id предмета Выходные данные: средний балл студентов по предмету */ public double GetAverageScoreForSubject(Student[] student, int idSubject) { double averageScore = 0.0; foreach (var item in student) { averageScore += item.marks.Scores[idSubject]; } return averageScore / student.Length; }
/* Метод который возвращает средний балл студента Входные данные: информация о студенте Выходные данные: средний балл */ public double GetAverageScore(Student student) { double averageScore = student.marks.Scores.Sum() / student.marks.Scores.Length; return averageScore; }