Вывести год с максимальным количеством строк - C#
Формулировка задачи:
Здравствуйте !
Было задание на вывод записей текстового файла с числом страниц больше указанного. Теперь надо вывести год в котором больше всего книг (строк). Как это сделать я не знаю. Буду благодарен полному коду выполненного задания.
Вот текст текстового файла :
Адига Аравинд*Белый тигр* 2009*156
4Барнс Джулиан*3Артур и Джордж* 2008*120
Афлатуни Сухбат*Конкурс красоты* 2009*217
3Барнс Джулиан*4Артур и Джордж* 2008*120
Барнс Джулиан*Артур и Джордж* 2007*120
Барри Себастьян*Тайные скрижали* 2009*412
1Барнс Джулиан*1Артур и Джордж* 2008*120
2Барнс Джулиан*2Артур и Джордж* 2008*120
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace Lab8 { struct Library//объявление структуры { public string avtor; public string kniga; public int god; public int str; public Library(string avtor, string kniga, int god, int str) { this.avtor = avtor; this.kniga = kniga; this.god = god; this.str = str; } } class Program { private static object book; static StreamReader file() //открытие файла с записями о книгах { FileStream aFile = new FileStream("Library.txt", FileMode.OpenOrCreate); StreamReader sr = new StreamReader(aFile, Encoding.Default); return sr; } static void Programma(string strLine, StreamReader sr, int S, int N) //основная функция { System.IO.File.Delete("logs.txt"); //удаление файла FileStream bFile = new FileStream("logs.txt", FileMode.OpenOrCreate); // файл для результатов StreamWriter sw = new StreamWriter(bFile, Encoding.Default);//запись в файл sw.WriteLine("Последний поисковый запрос:"); Library[] Bibl = new Library[N]; int i = 0; char[] separator = { '*' }; while (strLine != null)//заполнение структуры информацией из файла { string[] Z = strLine.Split(separator); Bibl[i].avtor = Z[0]; Bibl[i].kniga = Z[1]; Bibl[i].god = Convert.ToInt32(Z[2]); Bibl[i].str = Convert.ToInt32(Z[3]); i++; strLine = sr.ReadLine(); } sr.Close(); foreach (Library book in Bibl) //перебор всех записей о книгах { if (book.god > S)//цикл условия { sw.WriteLine("{0}, {1}, {2}, {3} ", book.avtor, book.kniga, book.god, book.str); //запись строки в файл Console.WriteLine("{0}, {1}, {2}, {3} ", book.avtor, book.kniga, book.god, book.str); //вывод строки на экран } } sw.Close(); //конец записи } static void Main(string[] args) { begin: int N = System.IO.File.ReadAllLines("Library.txt").Length;//подсчитывает кол-во строк в файле=кол-ву записей в структуре StreamReader sr = file(); string strLine = sr.ReadLine(); Console.WriteLine("Введите год:"); int S = Convert.ToInt32(Console.ReadLine()); //ввод кол-ва страниц Console.WriteLine("Подходящие книги:"); Programma(strLine, sr, S, N); Console.WriteLine(); Console.WriteLine("Выполнить новый поиск? Y - да"); string c = Console.ReadLine(); if (c == "Y") //цикл для повтора { sr.Close(); goto begin; } } } }
Решение задачи: «Вывести год с максимальным количеством строк»
textual
Листинг программы
string[] lib = File.ReadAllLines(@"c:\library.txt",Encoding.Default); var result = lib.Select(x => x.Split(new char[] { '*' }, StringSplitOptions.RemoveEmptyEntries)) .GroupBy(x => x[2]) .OrderByDescending(g => g.Count()).First().Key; Console.WriteLine(result.Trim()); Console.ReadKey(true);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д