ProgaOra/20240912_doga/MaratonValto/MaratonValto/Program.cs
2024-09-13 08:04:15 +02:00

204 lines
5.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace MaratonValto
{
internal class Program
{
static void Main(string[] args)
{
string filename = "maratonvalto.csv";
List<Eredmeny> eredmenyek = LoadFromCsv(filename);
Feladat6(eredmenyek);
Feladat7(eredmenyek);
Feladat8(eredmenyek);
Console.ReadLine();
}
public static void Feladat8(List<Eredmeny> eredmenyek)
{
List<int> csapatok = new List<int>();
List<int> csapatok_ido = new List<int>();
foreach (var item in eredmenyek)
{
if (!csapatok.Contains(item.Versenyzo.Csapat))
{
csapatok.Add(item.Versenyzo.Csapat);
csapatok_ido.Add(item.Ido);
}
else
{
int index = 0;
while (item.Versenyzo.Csapat != csapatok[index])
{
index++;
}
csapatok_ido[index] += item.Ido;
}
}
int min = csapatok_ido[0];
int ind = 0; // indexe a csapatnak a csapatoklistában
for (int i = 1; i < csapatok.Count; i++)
{
if (csapatok_ido[i] < min)
{
min = csapatok_ido[i];
ind = i;
}
}
int ora = csapatok_ido[ind] / 3600;
int perc = csapatok_ido[ind] / 60 - (ora * 60);
int masodperc = csapatok_ido[ind] - (perc * 60) - (ora * 3600);
Console.WriteLine($"8. feladat: ");
Console.WriteLine($"A legjobb csapat száma: {csapatok[ind]} ideje: {ora}:{perc}:{masodperc}");
foreach (var item in eredmenyek)
{
if (item.Versenyzo.Csapat == csapatok[ind])
{
Console.WriteLine($"\t{item.Kor}. Kör: {item.Versenyzo.Fid} {item.Versenyzo.Fnev} {item.Versenyzo.Szulev}");
}
}
/*
SELECT * FROM eredmenyek
GROUP BY versemyzo.csapat
ORDER BY SUM(versenyzo.ido) DESC LIMIT 1;
*/
}
public static void Feladat7(List<Eredmeny> eredmenyek)
{
Console.WriteLine("7. feladat:");
IEnumerable<MaratonValto.Eredmeny> gyorsak = from eredmeny in eredmenyek
where eredmeny.Ido/60 <= 30
select eredmeny;
GyorsakCreate(gyorsak);
Console.WriteLine("A gyorsak.txt állomány létrehozva.");
}
public static void GyorsakCreate(IEnumerable<MaratonValto.Eredmeny> gyorsak)
{
FileStream fs = new FileStream("gyorsak.txt", FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
foreach (var item in gyorsak)
{
string line = $"{item.Versenyzo.Fid} {item.Versenyzo.Fnev} {item.Ido}";
sw.WriteLine(line);
}
sw.Close();
fs.Close();
}
public static void Feladat6(List<Eredmeny> eredmenyek)
{
double atlagoskorido = AtlagosKorIdo(eredmenyek);
Console.WriteLine($"6.feladat:");
Console.WriteLine($"\tA versenyzők átlagos körideje: {atlagoskorido} másodperc");
}
public static double AtlagosKorIdo(List<Eredmeny> eredmenyek)
{
double result = 0.00;
foreach (var item in eredmenyek)
{
double ido = Convert.ToDouble(item.Ido);
result += ido;
}
return result / eredmenyek.Count;
}
public static List<Eredmeny> LoadFromCsv(string filename)
{
List<Eredmeny> result = new List<Eredmeny>();
FileStream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read);
StreamReader streamReader = new StreamReader(fileStream);
string line = streamReader.ReadLine();
line = streamReader.ReadLine();
while (line != null) {
string[] adatok = line.Split(';');
int fid = int.Parse(adatok[0]);
string fnev = adatok[1];
int szulev = int.Parse(adatok[2]);
int szulho = int.Parse(adatok[3]);
int csapat = int.Parse(adatok[4]);
int ffi = int.Parse(adatok[5]);
int kor = int.Parse(adatok[6]);
int ido = int.Parse(adatok[7]);
Futo futo = new Futo(fid, fnev, szulev, szulho, csapat, ffi);
Eredmeny eredmeny = new Eredmeny(futo, kor, ido);
result.Add(eredmeny);
line = streamReader.ReadLine();
}
streamReader.Close();
fileStream.Close();
return result;
}
}
public class Futo
{
public int Fid;
public string Fnev;
public int Szulev;
public int Szulho;
public int Csapat;
public int Ffi; //1 - férfi || 0 - nő
public Futo(int fid, string fnev, int szulev, int szulho, int csapat, int ffi)
{
Fid = fid;
Fnev = fnev;
Szulev = szulev;
Szulho = szulho;
Csapat = csapat;
Ffi = ffi;
}
}
public class Eredmeny
{
public Futo Versenyzo;
public int Kor;
public int Ido;
public Eredmeny(Futo versenyzo, int kor, int ido) {
Versenyzo = versenyzo;
Kor = kor;
Ido = ido;
}
}
}