Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 10.03.2017
Сообщений: 28

Считать из файла

18.04.2017, 13:56. Показов 712. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По заданию, нужно вывести в файл out.txt фамилии и имена учащихся в порядке убывания их среднего балла.
Но в коде ( и по заданию) предполагается, что оценок будет 3. МНЕ НУЖНО, чтобы количество оценок считывалось автоматически (гарантирую то, что количество будет одинаковое у всех студентов) и средний балл соответственно находился исходя из количества оценок.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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();
        }
            
 
    }
}


 Комментарий модератора 
Перепечайте текст задания на форум как того требует п5.18 правила. Заодно обратите внимание на п4.3 по поводу выбора названий тем.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.04.2017, 13:56
Ответы с готовыми решениями:

Считать с файла
Подскажите пожалуйста. В файле есть строка как из нее вытащить цифры и записать в переменные. должно получиться так: x = 34 y =...

Считать из файла
Есть файл в котором хранятся данные в виде : Имя Фамилия Зарплата, пример : Petr Sumanov 450 Katerina Borakova 350 Мне нужно считать...

Считать с файла
В консольном арифметическому калькуляторе вместо консольного ввода-вывода реализовать работу с файлом. Входной файл содержит ...

4
0 / 0 / 1
Регистрация: 10.03.2017
Сообщений: 28
27.04.2017, 15:05  [ТС]
Дан текстовый файл (in.txt) содержащий список учащихся и их оценки по трем
предметам: математике, физике, информатике.
Формат файла: сначала количество учащихся п, затем п строк, каждая из которых
содержит фамилию, имя и три числа. Данные в строке разделены одним пробелом.
Оценки принимают значение от 1 до 5.
Пример входного файла:
4
Ivanov Vasiliy 434
Petrov Sergey 535
Konstantinov Nikolay 445
Kuznetsov Ivan 555
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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();
        }
            
 
    }
}

По заданию, нужно вывести в файл out.txt фамилии и имена учащихся в порядке убывания их среднего балла.
Но в коде ( и по заданию) предполагается, что оценок будет 3. МНЕ НУЖНО, чтобы количество оценок считывалось автоматически (гарантирую то, что количество будет одинаковое у всех студентов) и средний балл соответственно находился исходя из количества оценок.
0
7 / 7 / 5
Регистрация: 10.04.2017
Сообщений: 37
27.04.2017, 16:44
Что значит считывалось автоматически?
0
0 / 0 / 1
Регистрация: 10.03.2017
Сообщений: 28
27.04.2017, 16:47  [ТС]
ну мы в коде пишем, что сумму делим на 3. т.е. мы знаем количество. но допустим, что во входном файле ммы вводим другое количество оценок. нужно, чтобы он посчитал, вместо того, чтобы просто делить на 3
0
7 / 7 / 5
Регистрация: 10.04.2017
Сообщений: 37
28.04.2017, 09:14
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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);
                    }
                }
            }
        }
    }
}
P.S. Первая строка с кол-вом не нужна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2017, 09:14
Помогаю со студенческими работами здесь

Считать текст из файла
Подскажите пожалуйста как сделать считывание слова word из заранее созданного файла также с input и записывание результата аналогично в...

Считать информацию из файла
Есть текстовый файл типа число дата время ещёчто-то число дата время ещёчто-то число дата время ещёчто-то число ...

Считать в textbox из файла
Вобщем есть задача: Дан файл, в который записаны фамилии, По нажатию кнопки на форме фамилии из файла нужно считать в textbox, Также...

Считать данные из файла
Как считать данные из файла???? using System; using System.Text.RegularExpressions; using System.Collections.Generic; using...

Считать содержимое файла
Помогите пожалуйста! Есть файл теста, сформированный определенным образом. Как организовать чтение из него, что бы можно было пройти этот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru