Advertisement
Guest User

Untitled

a guest
Mar 20th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.12 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace ConsoleApplication18
  10. {
  11.     class Program
  12.     {
  13.         static Random rand = new Random();
  14.         static Dictionary<Tuple<int, int>, List<Student>> studentData = new Dictionary<Tuple<int, int>, List<Student>>();
  15.         static List<Student> students = new List<Student>();
  16.         static Dictionary<int, List<Subjects>> ExamsList = new Dictionary<int, List<Subjects>>();
  17.  
  18.  
  19.         static void Main(string[] args)
  20.         {
  21.             SetExams();
  22.             Console.OutputEncoding = Encoding.GetEncoding(1251);
  23.             Encoding enc = Encoding.GetEncoding(1251);
  24.             using (var fileStream = File.OpenRead(@"C:\Users\Jackson\Desktop\names.txt"))
  25.             using (var streamReader = new StreamReader(fileStream,enc))
  26.             {
  27.                 String line = streamReader.ReadLine();
  28.  
  29.                     for (int i = 1; i < 6; i++)
  30.                     for (int j = 1; j < 14; j++) {
  31.                         int peopleInGroup = rand.Next(20, 28);
  32.                         for (int k = 1; k < peopleInGroup; k++) {
  33.                             if (!studentData.ContainsKey(new Tuple<int, int>(i, j)))
  34.                                 studentData.Add(new Tuple<int, int>(i, j), new List<Student>());
  35.                             studentData[new Tuple<int, int>(i, j)].Add(new Student(line, i, j));
  36.                             line = streamReader.ReadLine();
  37.                         }
  38.                     }
  39.                      
  40.        
  41.             }
  42.  
  43.  
  44.             var nameSort = new NameSort<Student>();
  45.             for (int i = 1; i < 6; i++)
  46.                 for (int j = 1; j < 14; j++)
  47.                     studentData[new Tuple<int, int>(i, j)].Sort(nameSort);
  48.  
  49.  
  50.             string resPath = @"C:\Users\Jackson\Desktop\result.txt";
  51.             File.WriteAllText(resPath, String.Empty);
  52.  
  53.             //Задание
  54.             List<Student> course5 = new List<Student>();
  55.             for (int i = 1; i < 14; i++)
  56.                 foreach (var student in studentData[new Tuple<int, int>(5, i)])
  57.                     course5.Add(student);
  58.  
  59.             SumSort<Student> sumSorter = new SumSort<Student>();
  60.             course5.Sort(sumSorter);
  61.  
  62.  
  63.             using (StreamWriter writer =
  64.             new StreamWriter(resPath))
  65.             {
  66.                 foreach (var student in course5)
  67.                     writer.WriteLine("{0}, {1}й курс, {2}я группа; {4}; сумма баллов - {3}", student.Name, student.Course,
  68.                                     student.Group, student.SumOfMarks, student.PaymentType == 'Б' ? "Бюджет" : "Контракт");
  69.                 //student.AllSessionMarks();
  70.             }
  71.             Console.Read();
  72.  
  73.         }
  74.  
  75.  
  76.         private static void SetExams()
  77.         {
  78.             ExamsList[0] = new List<Subjects> { Subjects.Алгебра, Subjects.Программирование, Subjects.ДМ, Subjects.История, Subjects.Русский };
  79.             ExamsList[1] = new List<Subjects> { Subjects.Алгебра, Subjects.Программирование, Subjects.ДМ, Subjects.История, Subjects.Русский };
  80.             ExamsList[2] = new List<Subjects> { Subjects.ЯМП, Subjects.Экономика, Subjects.История, Subjects.Английский, Subjects.Философия };
  81.             ExamsList[3] = new List<Subjects> { Subjects.ЯМП, Subjects.Экономика, Subjects.История, Subjects.Английский, Subjects.Философия };
  82.             ExamsList[4] = new List<Subjects> { Subjects.Алгебра, Subjects.Программирование, Subjects.Физкультура, Subjects.Английский, Subjects.История };
  83.             ExamsList[5] = new List<Subjects> { Subjects.Алгебра, Subjects.Программирование, Subjects.Физкультура, Subjects.Английский, Subjects.История };
  84.             ExamsList[6] = new List<Subjects> { Subjects.Философия, Subjects.ЯМП, Subjects.ДМ, Subjects.Экономика, Subjects.Русский };
  85.             ExamsList[7] = new List<Subjects> { Subjects.Философия, Subjects.ЯМП, Subjects.ДМ, Subjects.Экономика, Subjects.Русский };
  86.             ExamsList[8] = new List<Subjects> { Subjects.ДМ, Subjects.Английский, Subjects.Экономика, Subjects.Программирование, Subjects.Русский };
  87.             ExamsList[9] = new List<Subjects> { Subjects.ДМ, Subjects.Английский, Subjects.Экономика, Subjects.Программирование, Subjects.Русский };
  88.         }
  89.  
  90.  
  91.         class Student
  92.         {
  93.             public string Name { get; private set; }
  94.             public int Course { get; private set; }
  95.             public int Group { get; private set; }
  96.             private int[,] Marks { get; set; }
  97.             public char PaymentType { get; private set; }
  98.             public int SumOfMarks { get; private set; }
  99.             public Student(string name, int course, int group)
  100.             {
  101.                 this.Name = name;
  102.                 this.Course = course;
  103.                 this.Group = group;
  104.  
  105.                 Marks = new int[Course * 2, 5];
  106.  
  107.                 for (int i = 0; i < this.Course * 2; i++)
  108.                     for (int j = 0; j < 5; j++)  
  109.                         Marks[i, j] = GetRandomMark();
  110.  
  111.  
  112.                 this.PaymentType = 'Б';
  113.                 if (rand.Next(0, 13) > 10)
  114.                     PaymentType = 'К';
  115.  
  116.                 SumOfMarks = GetMarksSum();
  117.                 students.Add(this);
  118.             }
  119.  
  120.             private int GetRandomMark()
  121.             {
  122.                 if (rand.Next(0, 20) > 15)
  123.                     return 5;
  124.                 if (rand.Next(0, 10) > 5)
  125.                     return 4;
  126.                 if (rand.Next(0, 10) > 3)
  127.                     return 3;
  128.                 return 2;
  129.             }
  130.  
  131.             private int GetMarksSum()
  132.             {
  133.                 int sum = 0;
  134.                 for (int i = 0; i < Course; i++)
  135.                     for (int j = 0; j < 5; j++)
  136.                         sum += Marks[i, j];
  137.                 return sum;              
  138.             }
  139.  
  140.             public void AllSessionMarks()
  141.             {
  142.                 for (int i = 0; i < Course; i++)
  143.                 {
  144.                     Console.WriteLine("======Сессия {0}го курса======", i + 1);
  145.                     for (int j = 0; j < 5; j++)
  146.                         Console.WriteLine("{0}: {1}", ExamsList[i][j].ToString(), Marks[i, j]);
  147.                     Console.WriteLine();
  148.                 }
  149.             }
  150.  
  151.             public void SessionMarks(int course)
  152.             {
  153.                 if (course < 1 || course > Course)
  154.                 {
  155.                     Console.WriteLine("Записей не обнаружено");
  156.                     return;
  157.                 }
  158.                 Console.WriteLine("======Сессия {0}го курса======", course + 1);
  159.                 for (int j = 0; j < 5; j++)
  160.                     Console.WriteLine("{0}: {1}", ExamsList[course][j].ToString(), Marks[course, j]);
  161.                 Console.WriteLine();
  162.             }
  163.  
  164.         }
  165.  
  166.         enum Subjects { Алгебра, История, ЯМП, ДМ, Физкультура, Английский, Русский, Философия, Программирование, Экономика }
  167.  
  168.         class NameSort<T> : IComparer<T>
  169.             where T : Student
  170.         {
  171.             public int Compare(T x, T y)
  172.             {
  173.                 return String.Compare(x.Name.Substring(0, x.Name.IndexOf(' ')), y.Name.Substring(0, y.Name.IndexOf(' ')));
  174.             }
  175.         }
  176.  
  177.         class SumSort<T> : IComparer<T>  where T : Student
  178.         {
  179.             public int Compare(T x, T y)
  180.             {
  181.                 if (x.SumOfMarks == y.SumOfMarks) return 0;
  182.                 if (x.SumOfMarks > y.SumOfMarks) return -1;
  183.                 return 1;
  184.             }
  185.         }
  186.  
  187.     }
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement