Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.95 KB | None | 0 0
  1. [Serializable]
  2. public class Student
  3. {
  4.     public string Name { get; }
  5.     public string LastName { get; }
  6.     public int GroupNumber { get; }
  7.     public List<int> Grades { get; }
  8.  
  9.     public Student(string name, string lastName, int groupNumber, List<int> grades)
  10.     {
  11.         Name = name;
  12.         LastName = lastName;
  13.         GroupNumber = groupNumber;
  14.         Grades = grades;
  15.     }
  16.  
  17.     public static Student Create(string studentInfo)
  18.     {
  19.         string[] data = studentInfo.Split(' ');
  20.         string name = data[0];
  21.         string lastName = data[1];
  22.         int groupNumber = int.Parse(data[2]);
  23.         List<int> grades = new List<int>();
  24.         for (int i = 3; i < data.Length; i++)
  25.         {
  26.             grades.Add(int.Parse(data[i]));
  27.         }
  28.         return new Student(name, lastName, groupNumber, grades);
  29.     }
  30. }
  31. public static class Deserializer
  32. {
  33.     public static List<Student> DeserializeStudents(string path)
  34.     {
  35.         // При десериализации файла необходимо прописать FileAccess.Read
  36.         List<Student> students = new List<Student>();
  37.         BinaryFormatter bf = new BinaryFormatter();
  38.         using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
  39.         {
  40.             students = (List<Student>)bf.Deserialize(fs);
  41.         }
  42.         return students;
  43.        
  44.     }
  45. }
  46. public static class Analytics
  47. {
  48.     public static double FindGPA(List<Student> students)
  49.     {
  50.         double sumOfAllGPA = 0;
  51.         for (int i = 0; i < students.Count; i++)
  52.         {
  53.             Student student = students[i];
  54.             int sumOfGrades = 0;
  55.             for (int j = 0; j < student.Grades.Count; j++)
  56.             {
  57.                 sumOfGrades += student.Grades[j];
  58.             }
  59.             sumOfAllGPA += Math.Round(sumOfGrades * 1.0 / student.Grades.Count, 2);
  60.         }
  61.         return Math.Round(sumOfAllGPA / students.Count, 2);
  62.     }
  63.  
  64.     public static void WriteStudentsWithGPANoLessThanAverage(IEnumerable<Student> students, string path, double GPA)
  65.     {
  66.         List<string> output = new List<string>();
  67.         output.Add(GPA.ToString());
  68.         foreach (var student in students)
  69.         {
  70.             int sumOfGrades = 0;
  71.             int amountOfGrades = 0;
  72.             for (int j = 0; j < student.Grades.Count; j++)
  73.             {
  74.                 sumOfGrades += student.Grades[j];
  75.                 amountOfGrades++;
  76.             }
  77.             double localGPA = Math.Round(sumOfGrades * 1.0 / amountOfGrades, 2);
  78.             if (localGPA >= GPA)
  79.             {
  80.                 output.Add(string.Format("{0} {1} {2}", student.Name, student.LastName, student.GroupNumber));
  81.             }
  82.         }
  83.         using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
  84.         using (StreamWriter sw = new StreamWriter(fs))
  85.         {
  86.             foreach (var line in output)
  87.                 sw.WriteLine(line);
  88.         }
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement