Считать из файла - C#

Узнай цену своей работы

Формулировка задачи:

По заданию, нужно вывести в файл out.txt фамилии и имена учащихся в порядке убывания их среднего балла. Но в коде ( и по заданию) предполагается, что оценок будет 3. МНЕ НУЖНО, чтобы количество оценок считывалось автоматически (гарантирую то, что количество будет одинаковое у всех студентов) и средний балл соответственно находился исходя из количества оценок.
using System;
using System.IO;
 
namespace Lab06
{
    class Program
    {
        struct Student
        {
            public string Name;
            public double AverageScore;
            public uint Position;
        };
        static string Third_GetName(string Line)
        {
            string Ret = "";
            int Spaces = 2;
            foreach (char c in Line)
            {
                if ((int)c == 32) Spaces--;
                if ((Char.IsLetter(c) || ((int)c == 32)) && Spaces != 0)
                {
                    Ret = Ret + c;
                }
            }
            return Ret;
        }
        static double Third_GetAverageScore(string Line)
        {
            uint Ret = 0;
            uint Score = 0;
            foreach (char c in Line)
            {
                if (Char.IsDigit(c))
                {
                    Score = UInt16.Parse(c.ToString());
                    if ((Score < 2 || Score > 5)) Console.WriteLine("Один из баллов за предмет не входит в средний балл, т.к он не в [2, 5]");
                    else
                    {
                        Ret += Convert.ToUInt16(c.ToString());
                    }
                }
            }
            return ((double)(Ret) / 3.0);
        }
        static void Third()
        {
            try
            {
                StreamReader f = new StreamReader("вход.txt");
                uint CountOfMembers = 0;
                try
                {
                    CountOfMembers = Convert.ToUInt32(f.ReadLine());
                }
                catch (Exception e)
                {
                    Console.WriteLine("Ошибка: {0}", e.Message);
                }
                Console.WriteLine("Количество учащихся: {0}", CountOfMembers);
                string[] DataList = new string[CountOfMembers];
                Student[] MemberList = new Student[CountOfMembers];
                for (int i = 0; i < CountOfMembers; i++)
                {
                    DataList[i] = f.ReadLine();
                    MemberList[i] = new Student();
                    MemberList[i].Name = Third_GetName(DataList[i]);
                    MemberList[i].AverageScore = Third_GetAverageScore(DataList[i]);
                }
                f.Close();
                StreamWriter _f = new StreamWriter("out.txt");
                uint counter = 0;
                uint[] ScoreMap = new uint[CountOfMembers];
                for (int i = 0; i < CountOfMembers; i++)
                {
                    counter = 0;
                    for (int j = 0; j < CountOfMembers; j++)
                    {
                        if (MemberList[i].AverageScore > MemberList[j].AverageScore) counter++;
                    }
                    MemberList[i].Position = CountOfMembers - counter;
                }
                Student[] t = new Student[CountOfMembers];
                for (int i = 0; i < CountOfMembers; i++) t[MemberList[i].Position - 1] = MemberList[i];
                for (int i = 0; i < CountOfMembers; i++) _f.WriteLine("{0} {1}", t[i].Name, t[i].AverageScore);
                _f.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("Ошибка: {0}\nФайл будет создан", e.Message);
                StreamWriter f = new StreamWriter("вход.txt");
                f.Close();
            }
 
        }
        static void Main (string[] args)
        {
            Third();
            Console.ReadKey();
        }

    }
}

Решение задачи: «Считать из файла»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            using (StreamReader sr = new StreamReader(@"E:\1.txt", Encoding.Default))
            {
                using (StreamWriter sw = new StreamWriter(@"E:\2.txt", true, Encoding.Default))
                {
                    while (true)
                    {
                        string temp = sr.ReadLine();
                        if (temp == null)
                            break;
                        String[] stringArr = temp.Split(' ');
                        IEnumerable<double> intArr = stringArr[2].ToCharArray().Select((x) => Char.GetNumericValue(x)); ;
                        double result = 0;
                        foreach (var el in intArr)
                            result += el;
                        result = result / intArr.Count();
                        foreach (var el in stringArr.Take(2))
                            sw.Write(" " + el);
                        sw.WriteLine(" " + result);
                    }
                }
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы