Список фамилий студентов, которым будет назначена обычная и повышенная стипендия - 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)) }; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д