Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication18
- {
- class Program
- {
- static Random rand = new Random();
- static Dictionary<Tuple<int, int>, List<Student>> studentData = new Dictionary<Tuple<int, int>, List<Student>>();
- static List<Student> students = new List<Student>();
- static Dictionary<int, List<Subjects>> ExamsList = new Dictionary<int, List<Subjects>>();
- static void Main(string[] args)
- {
- SetExams();
- Console.OutputEncoding = Encoding.GetEncoding(1251);
- Encoding enc = Encoding.GetEncoding(1251);
- using (var fileStream = File.OpenRead(@"C:\Users\Jackson\Desktop\names.txt"))
- using (var streamReader = new StreamReader(fileStream,enc))
- {
- String line = streamReader.ReadLine();
- for (int i = 1; i < 6; i++)
- for (int j = 1; j < 14; j++) {
- int peopleInGroup = rand.Next(20, 28);
- for (int k = 1; k < peopleInGroup; k++) {
- if (!studentData.ContainsKey(new Tuple<int, int>(i, j)))
- studentData.Add(new Tuple<int, int>(i, j), new List<Student>());
- studentData[new Tuple<int, int>(i, j)].Add(new Student(line, i, j));
- line = streamReader.ReadLine();
- }
- }
- }
- var nameSort = new NameSort<Student>();
- for (int i = 1; i < 6; i++)
- for (int j = 1; j < 14; j++)
- studentData[new Tuple<int, int>(i, j)].Sort(nameSort);
- string resPath = @"C:\Users\Jackson\Desktop\result.txt";
- File.WriteAllText(resPath, String.Empty);
- //Задание
- List<Student> course5 = new List<Student>();
- for (int i = 1; i < 14; i++)
- foreach (var student in studentData[new Tuple<int, int>(5, i)])
- course5.Add(student);
- SumSort<Student> sumSorter = new SumSort<Student>();
- course5.Sort(sumSorter);
- using (StreamWriter writer =
- new StreamWriter(resPath))
- {
- foreach (var student in course5)
- writer.WriteLine("{0}, {1}й курс, {2}я группа; {4}; сумма баллов - {3}", student.Name, student.Course,
- student.Group, student.SumOfMarks, student.PaymentType == 'Б' ? "Бюджет" : "Контракт");
- //student.AllSessionMarks();
- }
- Console.Read();
- }
- private static void SetExams()
- {
- ExamsList[0] = new List<Subjects> { Subjects.Алгебра, Subjects.Программирование, Subjects.ДМ, Subjects.История, Subjects.Русский };
- ExamsList[1] = new List<Subjects> { Subjects.Алгебра, Subjects.Программирование, Subjects.ДМ, Subjects.История, Subjects.Русский };
- ExamsList[2] = new List<Subjects> { Subjects.ЯМП, Subjects.Экономика, Subjects.История, Subjects.Английский, Subjects.Философия };
- ExamsList[3] = new List<Subjects> { Subjects.ЯМП, Subjects.Экономика, Subjects.История, Subjects.Английский, Subjects.Философия };
- ExamsList[4] = new List<Subjects> { Subjects.Алгебра, Subjects.Программирование, Subjects.Физкультура, Subjects.Английский, Subjects.История };
- ExamsList[5] = new List<Subjects> { Subjects.Алгебра, Subjects.Программирование, Subjects.Физкультура, Subjects.Английский, Subjects.История };
- ExamsList[6] = new List<Subjects> { Subjects.Философия, Subjects.ЯМП, Subjects.ДМ, Subjects.Экономика, Subjects.Русский };
- ExamsList[7] = new List<Subjects> { Subjects.Философия, Subjects.ЯМП, Subjects.ДМ, Subjects.Экономика, Subjects.Русский };
- ExamsList[8] = new List<Subjects> { Subjects.ДМ, Subjects.Английский, Subjects.Экономика, Subjects.Программирование, Subjects.Русский };
- ExamsList[9] = new List<Subjects> { Subjects.ДМ, Subjects.Английский, Subjects.Экономика, Subjects.Программирование, Subjects.Русский };
- }
- class Student
- {
- public string Name { get; private set; }
- public int Course { get; private set; }
- public int Group { get; private set; }
- private int[,] Marks { get; set; }
- public char PaymentType { get; private set; }
- public int SumOfMarks { get; private set; }
- public Student(string name, int course, int group)
- {
- this.Name = name;
- this.Course = course;
- this.Group = group;
- Marks = new int[Course * 2, 5];
- for (int i = 0; i < this.Course * 2; i++)
- for (int j = 0; j < 5; j++)
- Marks[i, j] = GetRandomMark();
- this.PaymentType = 'Б';
- if (rand.Next(0, 13) > 10)
- PaymentType = 'К';
- SumOfMarks = GetMarksSum();
- students.Add(this);
- }
- private int GetRandomMark()
- {
- if (rand.Next(0, 20) > 15)
- return 5;
- if (rand.Next(0, 10) > 5)
- return 4;
- if (rand.Next(0, 10) > 3)
- return 3;
- return 2;
- }
- private int GetMarksSum()
- {
- int sum = 0;
- for (int i = 0; i < Course; i++)
- for (int j = 0; j < 5; j++)
- sum += Marks[i, j];
- return sum;
- }
- public void AllSessionMarks()
- {
- for (int i = 0; i < Course; i++)
- {
- Console.WriteLine("======Сессия {0}го курса======", i + 1);
- for (int j = 0; j < 5; j++)
- Console.WriteLine("{0}: {1}", ExamsList[i][j].ToString(), Marks[i, j]);
- Console.WriteLine();
- }
- }
- public void SessionMarks(int course)
- {
- if (course < 1 || course > Course)
- {
- Console.WriteLine("Записей не обнаружено");
- return;
- }
- Console.WriteLine("======Сессия {0}го курса======", course + 1);
- for (int j = 0; j < 5; j++)
- Console.WriteLine("{0}: {1}", ExamsList[course][j].ToString(), Marks[course, j]);
- Console.WriteLine();
- }
- }
- enum Subjects { Алгебра, История, ЯМП, ДМ, Физкультура, Английский, Русский, Философия, Программирование, Экономика }
- class NameSort<T> : IComparer<T>
- where T : Student
- {
- public int Compare(T x, T y)
- {
- return String.Compare(x.Name.Substring(0, x.Name.IndexOf(' ')), y.Name.Substring(0, y.Name.IndexOf(' ')));
- }
- }
- class SumSort<T> : IComparer<T> where T : Student
- {
- public int Compare(T x, T y)
- {
- if (x.SumOfMarks == y.SumOfMarks) return 0;
- if (x.SumOfMarks > y.SumOfMarks) return -1;
- return 1;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement