Fuvarok feladat
A feladatatot lista és tömb segítségével oldottam meg:
A forrás csv fájl innen letölthető: fuvar.csv
using System;
using System.Collections.Generic;
using System.IO;
namespace taxis
{
class Fuvarok
{
public int Taxi_id;
public DateTime Indulasi_Ido;
public int Utazasi_Ido;
public double Megtett_Tav;
public double Vitel_Dij;
public double Borravalo;
public string Fizetesi_Mod;
//szöveg sorának darabolása
public Fuvarok(string adatsor)
{
string[] adatsorelemek = adatsor.Split(';');
this.Taxi_id = Convert.ToInt32(adatsorelemek[0]);
this.Indulasi_Ido = Convert.ToDateTime(adatsorelemek[1]);
this.Utazasi_Ido = Convert.ToInt32(adatsorelemek[2]);
this.Megtett_Tav = Convert.ToDouble(adatsorelemek[3]);
this.Vitel_Dij = Convert.ToDouble(adatsorelemek[4]);
this.Borravalo = Convert.ToDouble(adatsorelemek[5]);
this.Fizetesi_Mod = adatsorelemek[6];
}
}
class Program
{
static void Main(string[] args)
{
//csv fájl beolvasása
StreamReader Olvas = new StreamReader("fuvar.csv");
//Lista létrehozása
List<Fuvarok> Fuvar = new List<Fuvarok>();
//első sor tárolása külön, mert az a fejléc
string Fejlec = Olvas.ReadLine();
//a többi sor beolvasása, amíg a fájl végére nem ér
while (!Olvas.EndOfStream)
{
Fuvar.Add(new Fuvarok(Olvas.ReadLine()));
}
Olvas.Close();
Console.WriteLine(Fejlec);
//Összesen mennyi fuvar van? Lista elemszáma :) Fuvar.Count
Console.WriteLine("3.feladat: Összesen {0} db fuvar van",Fuvar.Count);
//A 6185-ös taxisnak mennyi volt a bevétele, és hány fuvarból?
double bevetele = 0;
int alkalom = 0;
//listán végigmegyünk, és figyeljük a Taxi_id-t
for (int i=1; i<Fuvar.Count; i++)
{
if (Fuvar[i].Taxi_id == 6185)
{
alkalom++;
bevetele += Fuvar[i].Vitel_Dij;
}
}
Console.WriteLine("4.feladat: {0} db fuvar, {1} $",alkalom,bevetele);
//6. feladat: összes megtett táv kiszámítása
double ossztav = 0;
for (int i = 1; i < Fuvar.Count; i++)
ossztav += Fuvar[i].Megtett_Tav;
//átváltás kilométerbe: ossztav*1,6 kerekítés 2 számjegyre
ossztav = Math.Round(ossztav*1.6,2);
Console.WriteLine("Összes távolság: {0} km",ossztav);
//7.feladat az időben leghosszabb fuvar adatai
double max = 0;
//1.lépés megkeresni a legtöbb ideig tartó fuvart
for (int i = 1; i < Fuvar.Count; i++)
if (max < Fuvar[i].Utazasi_Ido)
max = Fuvar[i].Utazasi_Ido;
//2.lépés, a leghosszabb fuvar adatainak lekérése
for (int i = 1; i < Fuvar.Count; i++)
if (Fuvar[i].Utazasi_Ido == max)
{
Console.WriteLine("Fuvar hossza: {0}", Fuvar[i].Utazasi_Ido);
Console.WriteLine("Taxi azonosító: {0}", Fuvar[i].Taxi_id);
Console.WriteLine("Távolság: {0}", Fuvar[i].Megtett_Tav);
Console.WriteLine("Viteldíj: {0}", Fuvar[i].Vitel_Dij);
}
}
}
}