Список фамилий студентов, которым будет назначена обычная и повышенная стипендия - C#
Формулировка задачи:
Дано задание:
Дана строка с результатами экзамена по предмету формата
«Предмет: Фамилия_студента_1, оценка, Фамилия_студента_2, …».
По каждому предмету такие строки занесены в массив.
Напишите метод формирования двух новых строк, содержащих списки фамилий студентов,
которым будет назначена обычная и повышенная стипендия.
В эти списки включаются студенты, не имеющие троек, и получившие все пятерки, соответственно.
Фамилии в строках расположите в алфавитном порядке.
Я написал код только для одного предмета, не понимаю, как сделать для нескольких предметов.
Листинг программы
- static void Main(string[] args)
- {
- string s1 = "Математика; Иванов:3; Сергеев:5; Степанов:4";
- string s2 = "5";
- string s3 = "4";
- string s4 = "3";
- metod(s1, s2, s3, s4);
- Console.ReadKey();
- }
- private static void metod(string s1, string s2, string s3, string s4)
- {
- s1 = s1 + ";";
- s2 = s2 + ";";
- s3 = s3 + ";";
- s4 = s4 + ";";
- string[] logins = s1.Split(';');
- foreach (string x in logins)
- {
- if (x != String.Empty && s2.Contains(x.Substring(x.IndexOf(':') + 1) + ";"))
- {
- Console.WriteLine("Повышенная стипендия у: ");
- string y = x.TrimStart(); Console.WriteLine(y.Remove(y.IndexOf(':')));
- }
- else if (x != String.Empty && s3.Contains(x.Substring(x.IndexOf(':') + 1) + ";"))
- {
- Console.WriteLine("Неповышенная стипендия у: ");
- string y = x.TrimStart(); Console.WriteLine(y.Remove(y.IndexOf(':')));
- }
- else if (x != String.Empty && s4.Contains(x.Substring(x.IndexOf(':') + 1) + ";"))
- {
- Console.WriteLine("нет стипендии у: ");
- string y = x.TrimStart(); Console.WriteLine(y.Remove(y.IndexOf(':')));
- }
- }
- }
- }
Решение задачи: «Список фамилий студентов, которым будет назначена обычная и повышенная стипендия»
textual
Листинг программы
- private static void Main()
- {
- string[] subjects =
- {
- "Математика: Иванов, 4, Сергеев, 5, Степанов, 4",
- "Математика: Иванов, 4, Сергеев, 5, Степанов, 3",
- "Физика: Иванов, 5, Сергеев, 5, Степанов, 3",
- "Физика: Иванов, 5, Сергеев, 5, Степанов, 3"
- };
- Array.ForEach(Metod(subjects), Console.WriteLine);
- }
- private static string[] Metod(string[] subjects)
- {
- var students = new Dictionary<string, int>();
- foreach (string subject in subjects)
- {
- string[] info = subject.Split(':')[1].Split(',');
- for (var i = 0; i < info.Length; i += 2)
- {
- string name = info[i].Trim();
- int mark = int.Parse(info[i + 1]);
- int minMark;
- students[name] = students.TryGetValue(name, out minMark) ? Math.Min(minMark, mark) : mark;
- }
- }
- var increasedStudents = new List<string>();
- var notIncreasedStudents = new List<string>();
- foreach (KeyValuePair<string, int> pair in students)
- {
- if (pair.Value == 5)
- {
- increasedStudents.Add(pair.Key);
- }
- else if (pair.Value == 4)
- {
- notIncreasedStudents.Add(pair.Key);
- }
- }
- return new[]
- {
- string.Format("Повышенная стипендия: {0}", string.Join(", ", increasedStudents)),
- string.Format("Обычная стипендия: {0}", string.Join(", ", notIncreasedStudents))
- };
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д