Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Serializable]
- public class Student
- {
- public string Name { get; }
- public string LastName { get; }
- public int GroupNumber { get; }
- public List<int> Grades { get; }
- public Student(string name, string lastName, int groupNumber, List<int> grades)
- {
- Name = name;
- LastName = lastName;
- GroupNumber = groupNumber;
- Grades = grades;
- }
- public static Student Create(string studentInfo)
- {
- string[] data = studentInfo.Split(' ');
- string name = data[0];
- string lastName = data[1];
- int groupNumber = int.Parse(data[2]);
- List<int> grades = new List<int>();
- for (int i = 3; i < data.Length; i++)
- {
- grades.Add(int.Parse(data[i]));
- }
- return new Student(name, lastName, groupNumber, grades);
- }
- }
- public static class Deserializer
- {
- public static List<Student> DeserializeStudents(string path)
- {
- // При десериализации файла необходимо прописать FileAccess.Read
- List<Student> students = new List<Student>();
- BinaryFormatter bf = new BinaryFormatter();
- using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
- {
- students = (List<Student>)bf.Deserialize(fs);
- }
- return students;
- }
- }
- public static class Analytics
- {
- public static double FindGPA(List<Student> students)
- {
- double sumOfAllGPA = 0;
- for (int i = 0; i < students.Count; i++)
- {
- Student student = students[i];
- int sumOfGrades = 0;
- for (int j = 0; j < student.Grades.Count; j++)
- {
- sumOfGrades += student.Grades[j];
- }
- sumOfAllGPA += Math.Round(sumOfGrades * 1.0 / student.Grades.Count, 2);
- }
- return Math.Round(sumOfAllGPA / students.Count, 2);
- }
- public static void WriteStudentsWithGPANoLessThanAverage(IEnumerable<Student> students, string path, double GPA)
- {
- List<string> output = new List<string>();
- output.Add(GPA.ToString());
- foreach (var student in students)
- {
- int sumOfGrades = 0;
- int amountOfGrades = 0;
- for (int j = 0; j < student.Grades.Count; j++)
- {
- sumOfGrades += student.Grades[j];
- amountOfGrades++;
- }
- double localGPA = Math.Round(sumOfGrades * 1.0 / amountOfGrades, 2);
- if (localGPA >= GPA)
- {
- output.Add(string.Format("{0} {1} {2}", student.Name, student.LastName, student.GroupNumber));
- }
- }
- using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
- using (StreamWriter sw = new StreamWriter(fs))
- {
- foreach (var line in output)
- sw.WriteLine(line);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement