Вывести год с максимальным количеством строк - C#

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

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

Здравствуйте ! Было задание на вывод записей текстового файла с числом страниц больше указанного. Теперь надо вывести год в котором больше всего книг (строк). Как это сделать я не знаю. Буду благодарен полному коду выполненного задания.
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;
}
}
}
}
Вот текст текстового файла : Адига Аравинд*Белый тигр* 2009*156 4Барнс Джулиан*3Артур и Джордж* 2008*120 Афлатуни Сухбат*Конкурс красоты* 2009*217 3Барнс Джулиан*4Артур и Джордж* 2008*120 Барнс Джулиан*Артур и Джордж* 2007*120 Барри Себастьян*Тайные скрижали* 2009*412 1Барнс Джулиан*1Артур и Джордж* 2008*120 2Барнс Джулиан*2Артур и Джордж* 2008*120

Решение задачи: «Вывести год с максимальным количеством строк»

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);

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


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

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

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