Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/56: Рейтинг темы: голосов - 56, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 25
1

На основе данных входного файла составить список студентов группы

23.12.2010, 14:05. Просмотров 11416. Ответов 16
Метки нет (Все метки)

Помогите пожалуйста срочно испраить программу!!
1. исходная информация хранится в текстовом файле input.txt, каждая строка которого содержит полную информацию о некотором объекте, результирующая информация должна быть записана в файл output.txt.
2. Для хранения данных внутри программы организовать массив структур.
3. В типе структура реализуется метод CompareTo интерфейса IComparable, перегружается метод ToString базового класса object и необходимые операции отношения, поля данных и дополнительные методы продумайте самостоятельно.

На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО, год рождения, домашний адрес, какую школу окончил. Вывести в новый файл информацию о студентах, окончивших заданную школу, отсортировав их по году рождения.

Вот что я сделал но он отказывается работать! помогите пожалуйста !
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace lab14
{
    struct Student : IComparable
    {
        public string fio;
        public double god;
        public string adress;
        public int shkola;
 
        public Student(string f1, int f2, string f3, int f4)
        {
            fio = f1;
            god = f2;
            adress = f3;
            shkola = f4;
        }
        public override string ToString()
        {
            return (string.Format("фио: {0}; год_рожд: {1}; адрес: {2}; школа: {3};", fio, god.ToString(), adress, shkola.ToString()));
        }
        public int CompareTo(object obj1)
        {
            Student m1 = (Student)obj1;
            // Student m2 = (Student)obj2;
            if (this.shkola == m1.shkola) return 1;
            if (this.shkola != m1.shkola) return -1;
            else return 0;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
 
                int h1 = 1, k = 0, h = 1;
                StreamReader basse1 = new StreamReader("inputt.txt");
                while (h1 == 1)
                {
                    string text1 = basse1.ReadLine();
                    if (text1 == null)
                    {
                        basse1.Close();
                        h1 = 0;
                    }
                    else
                    {
                        ++k;
                    }
                }
                Student[] god = new Student[k];
                int g = 0;
                string[] buf = new string[4];
                StreamReader basse = new StreamReader("inputt.txt");
                while (h == 1)
                {
                    string text = basse.ReadLine();
                    if (text == null)
                    {
                        basse.Close();
                        h = 0;
                    }
                    else
                    {
                        buf = text.Split(' ');
                        god[g] = new Student(buf[0], int.Parse(buf[1]), buf[2], int.Parse(buf[3]));
                        g++;
                    }
                }
 
                Array.Sort(god);
                Console.WriteLine("Ведите школу:");
                int d = int.Parse(Console.ReadLine());
                StreamWriter basse3 = new StreamWriter("output.txt");
                for (int i = 0; i < k; i++)
                {
                    if (god[i].shkola < d) basse3.WriteLine(god[i]);
                }
                basse3.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
 
            }
 
            Console.ReadKey();
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2010, 14:05
Ответы с готовыми решениями:

На основе данных входного файла составить список студентов группы, включив следующие данные
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО,...

На основе данных входного файла составить список сотрудников учреждения
Помогите пожалуйста написать программу на языке C# Вариант 5 На основе данных входного файла...

На основе данных входного файла составить список вкладчиков банка, включив следующие данные
На основе данных входного файла составить список вкладчиков банка, включив следующие данные: ФИО,...

На основе данных входного файла составить список вкладчиков банка, включив следующие данные: ФИО, № счета, сум
Как лучше всего это осуществить? На основе данных входного файла составить список вкладчиков банка,...

16
22 / 22 / 3
Регистрация: 03.11.2009
Сообщений: 50
23.12.2010, 14:07 2
Вот что я сделал но он отказывается работать! помогите пожалуйста !
а почему должен сказать браузер? конкретики больше
0
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 25
23.12.2010, 14:32  [ТС] 3
он не находит файл. хотя он там лежит где надо. в дебаге
0
22 / 22 / 3
Регистрация: 03.11.2009
Сообщений: 50
23.12.2010, 14:34 4
)))) и вот как ты считаешь народ должен был понять в чем беда?

System.IO.Path.GetDirectoryName(Assembly.GetEntryA ssembly().Location
Найдет путь к папке где запущен проект, добавь название файла, и тогда "проблем не будет"
0
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 25
23.12.2010, 14:46  [ТС] 5
а вы не могли бы поподробнее чуть чуть напсать что мне нужно сделать?а то если честно не оч понятно
0
22 / 22 / 3
Регистрация: 03.11.2009
Сообщений: 50
23.12.2010, 14:48 6
C#
1
2
3
StreamReader basse = new StreamReader("inputt.txt");
заменить на 
StreamReader basse = new StreamReader(System.IO.Path.GetDirectoryName(Assembly.GetEntryA ssembly().Location)+"\\inputt.txt"); //если файл лежит рядом с ехе
0
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 25
23.12.2010, 15:00  [ТС] 7
он мне выдал 5 ошибок на это

Добавлено через 1 минуту
The name 'Assembly' does not exist in the current context

Добавлено через 1 минуту
это после убранного пробела осталась 1 ошибка. вот эта
0
22 / 22 / 3
Регистрация: 03.11.2009
Сообщений: 50
23.12.2010, 15:08 8
http://msdn.microsoft.com/en-u... S.90).aspx
подключи System.Reflection
0
815 / 706 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
23.12.2010, 18:31 9
Лучший ответ Сообщение было отмечено как решение

Решение

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
#region using
 
using System;
using System.IO;
 
#endregion
 
namespace ConsoleApplicationTest
{
    public static class Program
    {
        private static void Main()
        {
            // Читаем из файла
            string[] allLines = File.ReadAllLines("input.txt");
            // Преобразуем в массив студентов
            Student[] students = new Student[allLines.Length];
            for (int index = 0; index < allLines.Length; index++)
            {
                string line = allLines[index];
                string[] fields = line.Split(';');
                Student student = new Student(fields[0], Convert.ToInt32(fields[1]), fields[2], fields[3]);
                students[index] = student;
            }
            // Сортируем
            Array.Sort(students);
            // Выводим данные
            foreach (Student student in students)
            {
                Console.WriteLine(student);
                Console.WriteLine();
            }
            // Преобразуем в удобный для записи вид
            string[] linesToSave = new string[students.Length];
            for (int i = 0; i < students.Length; i++)
            {
                Student student = students[i];
                linesToSave[i] = student.ToString();
            }
            // Сохраняем в файл
            File.WriteAllLines("output.txt", linesToSave);
            Console.ReadKey();
        }
    }
 
    public struct Student : IComparable
    {
        public Student(string name, int yearOfBirth, string homeAddress, string school)
            : this()
        {
            Name = name;
            YearOfBirth = yearOfBirth;
            HomeAddress = homeAddress;
            School = school;
        }
 
        // ФИО
        public string Name { get; private set; }
        // год рождения
        public int YearOfBirth { get; private set; }
        // домашний адрес
        public string HomeAddress { get; private set; }
        // какую школу окончил
        public string School { get; private set; }
 
        #region IComparable Members
 
        public int CompareTo(object obj)
        {
            return YearOfBirth.CompareTo(((Student) obj).YearOfBirth);
        }
 
        #endregion
 
        public override string ToString()
        {
            return string.Format("{0}; {1}; {2}; {3}",
                                 Name, YearOfBirth, HomeAddress, School);
        }
    }
}
Вид файла input.txt такой:
XML
1
2
3
4
5
 Иванов Иван Иванович; 1989; Адрес1; 10;
 Петров Иван Иванович; 1987; Адрес2; 11;
 Сидоров Иван Иванович; 1989; Адрес3; 123;
 Пупкин Иван Иванович; 1990; Адрес4; 65;
 Таратайкин Иван Иванович; 1984; Адрес5; 1;
4
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 25
23.12.2010, 21:18  [ТС] 10
Спасибо большое!!

Добавлено через 18 секунд
Unril вам

Добавлено через 25 минут
подскажите пожалуйста ка кисправить чтобы на экран вмсто русских букв знаки вопросов не вылезали?
0
0 / 0 / 0
Регистрация: 20.12.2011
Сообщений: 7
27.02.2012, 09:48 11
ya.alex151, попробовал переделать Ваш код под свою задачу... Не получается, не поможете?
Задание такое : На основе данных входного файла составить список студентов, включающий фамилию, факультет, курс, группу, 5 оценок. Вывести в новый файл информацию о тех студентах, которые имеют хотя бы одну двойку, отсортировав их по курсу.
У меня получается (только не смейтесь) вот такое:
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
#region using
 
using System;
using System.IO;
 
#endregion
 
namespace ConsoleApplicationTest
{
    public static class Program
    {
        private static void Main()
        {
            // Читаем из файла
            string[] allLines = File.ReadAllLines("input.txt");
            // Преобразуем в массив студентов
            Student[] students = new Student[allLines.Length];
            for (int index = 0; index < allLines.Length; index++)
            {
                string line = allLines[index];
                string[] fields = line.Split(';');
                Student student = new Student(fields[0], Convert.ToInt32(fields[1]), fields[2], fields[3], fields[4]);
                students[index] = student;
            }
            // Сортируем
            Array.Sort(students);
            // Выводим данные
            foreach (Student student in students)
            {
                Console.WriteLine(student);
                Console.WriteLine();
            }
            // Преобразуем в удобный для записи вид
            string[] linesToSave = new string[students.Length];
            for (int i = 0; i < students.Length; i++)
            {
                Student student = students[i];
                linesToSave[i] = student.ToString();
            }
            // Сохраняем в файл
            File.WriteAllLines("output.txt", linesToSave);
            Console.ReadKey();
        }
    }
 
    public struct Student : IComparable
    {
        public Student(string name, string fakultet, int kurs, string gruppa, int ball1, int ball2, int ball3, int ball4, int ball5)
            : this()
        {
            Name = name;
            Fakultet = fakultet;
            Kurs = kurs;
            Gruppa = gruppa;
            Ball1 = ball1;
            Ball2 = ball2;
            Ball3 = ball3;
            Ball4 = ball4;
            Ball5 = ball5;
        }
       
        public string Name { get; private set; }       
        public string Fakultet { get; private set; }       
        public int Kurs { get; private set; }        
        public string Gruppa { get; private set; }
        public int Ball1{ get; private set; }
        public int Ball2 { get; private set; }
        public int Ball3 { get; private set; }
        public int Ball4 { get; private set; }
        public int Ball5 { get; private set; }
        #region IComparable Members
 
        public int CompareTo(object obj)
        {
            return Kurs.CompareTo(((Student)obj).Kurs);
        }
 
        #endregion
 
        public override string ToString()
        {
            return string.Format("{0}; {1}; {2}; {3}; {4}; {5}; {6}; {7}; {8}; {9}",
                                 Name, Fakultet, Kurs, Gruppa, Ball1, Ball2, Ball3, Ball4, Ball5);
        }
    }
}
Помогите если можете.

Добавлено через 11 часов 42 минуты
Ругается на 22 строку, "Ошибка 1"ConsoleApplicationTest.Student" не содержит конструктор, который принимает аргументы "4", я менял количество аргументов, подставлял только цифры... туплю дальше...
0
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
27.02.2012, 12:45 12
конечно он будет ругаться ведь требуется 9 аргументов
C#
1
public Student(string name, string fakultet, int kurs, string gruppa, int ball1, int ball2, int ball3, int ball4, int ball5)
1
0 / 0 / 0
Регистрация: 20.12.2011
Сообщений: 7
27.02.2012, 13:28 13
Подправил, теперь не ругается,
C#
1
2
Student student = new Student(fields[0], fields[1], Convert.ToInt32(fields[2]), fields[3], Convert.ToInt32(fields[4]), 
                    Convert.ToInt32(fields[5]), Convert.ToInt32(fields[6]), Convert.ToInt32(fields[7]), Convert.ToInt32(fields[7]));
но при запуске выдает ошибку.
Текстовый файл формата
Иванов; Информатика; 1; 111И; 2; 3; 3; 3; 3;
Петров; Электроника; 2; 211Э; 4; 4; 4; 4; 4;
Попов; Психология; 3; 311П; 3; 4; 5; 2; 4;
Лыкова; Бухучет; 4; 411Б; 3; 4; 5; 4; 3;
Грачев; Информатика; 5; 511И; 3; 4; 5; 3; 3;
Где еще смотреть?
0
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
27.02.2012, 14:02 14
C#
1
2
return string.Format("{0}; {1}; {2}; {3}; {4}; {5}; {6}; {7}; {8}",
                                 Name, Fakultet, Kurs, Gruppa, Ball1, Ball2, Ball3, Ball4, Ball5);
0
0 / 0 / 0
Регистрация: 20.12.2011
Сообщений: 7
27.02.2012, 23:04 15
Кто знает как правильно написать этот код, напишите, реально сегодня был последний день сдачи... а я на 4-ом из 6-и задании застрял.....( про то что сам виноват, в курсе в предь буду заранее делать)....
0
0 / 0 / 0
Регистрация: 20.12.2011
Сообщений: 7
29.02.2012, 23:10 16
Работает)))Но... выдает одни нули и ; .... киньте взгляд, где мне рытся... я туплю, лишний аргумент день искал, но нашел)))
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 58
01.03.2012, 01:35 17
Цитата Сообщение от ya.alex151 Посмотреть сообщение
Спасибо большое!!

Добавлено через 18 секунд
Unril вам

Добавлено через 25 минут
подскажите пожалуйста ка кисправить чтобы на экран вмсто русских букв знаки вопросов не вылезали?
Используй Encoding.UTF8.GetBytes когда в массив байтов заносишь и Encoding.UTF8.GetString когда из байтов в строку конвентируешь.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2012, 01:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Cоставить список студентов группы на основе из файла
на основе данных входного файла составить список студентов группы, включив следующие данные: ФИО,...

На основе данных входного файла составить автомобильную ведомость
Задание: На основе данных входного файла составить автомобильную ведомость, включив следующие...

Составить список на основе данных текстового файла
На основе данных входного файла составить список сотрудников учреждения, включив следующие данные:...

Составить список студентов группы, используя SortedList
Решить с помощью SortedList задачу:На основе данных входного файла составить список студентов...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.