Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на C#

Мария Play Ученик (130), на голосовании 1 месяц назад
Исходный файл состоит из строк, в каждой из которых записаны данные о студенте в следующем порядке:
• Фамилия и инициалы
• Номер группы
• Успеваемость (массив из пяти элементов)
Записать в выходной файл следующие данные: 1. Фамилии и номера групп для всех студентов, у которых средний балл превышает 4.0 (если таких студентов нет, записать в файл соответствующее сообщение).
Голосование за лучший ответ
Quasar Квазар Знаток (447) 2 месяца назад
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Student
{
public string FullName { get; set; }
public string GroupNumber { get; set; }
public List<double> Grades { get; set; }

public double AverageGrade => Grades.Average();
}

class Program
{
static void Main()
{
string inputFilePath = "students.txt";
string outputFilePath = "output.txt";

List<Student> students = File.ReadAllLines(inputFilePath)
.Select(line =>
{
var parts = line.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
return new Student
{
FullName = parts[0],
GroupNumber = parts[1],
Grades = parts.Skip(2).Select(double.Parse).ToList()
};
}).ToList();

using (StreamWriter writer = new StreamWriter(outputFilePath))
{
var successfulStudents = students.Where(s => s.AverageGrade > 4.0).ToList();

if (successfulStudents.Any())
{
foreach (var student in successfulStudents)
{
writer.WriteLine($"{student.FullName} {student.GroupNumber}");
}
}
else
{
writer.WriteLine("Нет студентов со средним баллом выше 4.0");
}
}
}
}
Похожие вопросы