На основе данных входного файла составить список студентов группы - C#
Формулировка задачи:
Помогите пожалуйста срочно испраить программу!!
1. исходная информация хранится в текстовом файле input.txt, каждая строка которого содержит полную информацию о некотором объекте, результирующая информация должна быть записана в файл output.txt.
2. Для хранения данных внутри программы организовать массив структур.
3. В типе структура реализуется метод CompareTo интерфейса IComparable, перегружается метод ToString базового класса object и необходимые операции отношения, поля данных и дополнительные методы продумайте самостоятельно.
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО, год рождения, домашний адрес, какую школу окончил. Вывести в новый файл информацию о студентах, окончивших заданную школу, отсортировав их по году рождения.
Вот что я сделал но он отказывается работать! помогите пожалуйста !
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(); } } }
Решение задачи: «На основе данных входного файла составить список студентов группы»
textual
Листинг программы
#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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д