Megbeszéltük az egészet, meg kell tanulni a benne lévő megoldásokat. Önálló OOP feladatmegoldásokból számonkérés várható.
using System;
using System.Collections.Generic;
using System.IO;
namespace autokOOP
{
class Auto
{
public string Azonosito { get; set; } //property (tulajdonság/jellemző)
//a fentit a prop tab-tab módszerrel könnyen elő lehet hívni
//de így is lehetne egyszerűbben:
//public string azonosito;
public int Loero { get; set; }
public double Tomeg { get; set; }
public int Gyorsulas { get; set; }
public int Beavatkozas { get; set; }
public Auto(string sor) //konstruktor, példányosításkor automatikusan végrehajtódik
{
string[] atmeneti = sor.Split(';');
Azonosito = atmeneti[0];
Loero = Convert.ToInt32(atmeneti[1]);
Tomeg = Convert.ToDouble(atmeneti[2]);
Gyorsulas = Convert.ToInt32(atmeneti[3]);
Beavatkozas = Convert.ToInt32(atmeneti[4]);
}
public override string ToString() //virtuális metódus
{
return $"{Azonosito,-18} | {Loero,4} lóerő | {Tomeg,4} t | {Gyorsulas,2} mp | {Beavatkozas,2}* kellett beavatkozni";
}
vagy így:public override string ToString() => $"{Azonosito,-18} | {Loero,4} lóerő | {Tomeg,4} t | {Gyorsulas,2} mp | {Beavatkozas,2}* kellett beavatkozni";
//ez így egyszerűbb:
public void kiir()
{
Console.WriteLine($"{Azonosito,-18} | {Loero,4} lóerő | {Tomeg,4} t | {Gyorsulas,2} mp | {Beavatkozas,2}* kellett beavatkozni");
}
}
class Program
{
static int leggyorsabb3(List<Auto> a)
{
int kiIndex = 0;
int min = a[0].Gyorsulas;
for (int i = 1; i < a.Count; i++)
{
if (min > a[i].Gyorsulas)
{
min = a[i].Gyorsulas;
kiIndex = i;
}
}
return kiIndex;
}
static void legkevesbeOnallo4(List<Auto> a)
{
int kiIndex = 0;
int max = a[0].Beavatkozas;
for (int i = 1; i < a.Count; i++)
{
if (max < a[i].Beavatkozas)
{
max = a[i].Beavatkozas;
kiIndex = i;
}
}
Console.WriteLine($"\nA legkevésbé önálló autó:\n{a[kiIndex]}");
}
static double atlag5(List<Auto> a)
{
double osszTomeg = 0;
for (int i = 0; i < a.Count; i++)
{
osszTomeg += a[i].Tomeg;
}
return osszTomeg / a.Count;
}
static void Main(string[] args)
{
List<Auto> autok = new List<Auto>(); //példányosítás
//2.Az adatokat olvassa be fájlból és tárolja el egy listában.
foreach (var item in File.ReadAllLines("autok.txt"))
{
autok.Add(new Auto(item));
}
Console.WriteLine("Kiírás 4 módszerrel\n1. kiírás\n");
//Összes kiírása:
foreach (var i in autok)
{
Console.WriteLine(i);
}
Console.WriteLine("\n2. kiírás");
foreach (var i in autok)
{
Console.WriteLine(i.ToString());
}
Console.WriteLine("\n3. kiírás");
for (int i = 0; i < autok.Count; i++)
{
Console.WriteLine(autok[i].ToString());
}
Console.WriteLine("\n4. kiírás");
for (int i = 0; i < autok.Count; i++)
{
autok[i].kiir();
}
//3.Írja ki a képernyőre a leggyorsabb autó adatait.
//(Az a leggyorsabb, ami a legkevesebb idő alatt gyorsul 100 ra.)
//A feladatot függvénnyel kell megoldani.
int index = leggyorsabb3(autok);
Console.WriteLine($"\nLeggyorsabb autó:\n{autok[index]}"); //virtuális metódussal
Console.WriteLine($"\nLeggyorsabb autó once more:");
autok[index].kiir();
//4.Írja ki a képernyőre a minta szerint a legkevésbé önálló autó azonosítóját.
legkevesbeOnallo4(autok);
//6.Írja ki a képernyőre az autók átlag tömegét, függvénnyel.
Console.WriteLine("Az autók átlag tömege: {0:0.00}", atlag5(autok));
Console.WriteLine("Az autók átlag tömege once more: {0}", Math.Round(atlag5(autok), 2));
//7.Írja ki a képernyőre, és egy új fájlba autónként a következő adatokat szóközzel elválasztva:
//sorszám(a feldolgozás sorrendjében automatikusan generált), tömeg kg-ban. (1 tonna = 1000 kg).
Console.WriteLine("Fájlba írás 1. verzió");
List<string> ki = new List<string>();
for (int i = 0; i < autok.Count; i++)
{
ki.Add($"{i + 1}. {autok[i].Tomeg * 1000} kg");
Console.WriteLine(ki[i]);
}
File.WriteAllLines("tomeg1.txt", ki);
Console.WriteLine("Fájlba írás 2. verzió");
StreamWriter sw = new StreamWriter("tomeg2.txt");
string kiirando = string.Empty;
for (int i = 0; i < autok.Count; i++)
{
kiirando = $"{i + 1}. {autok[i].Tomeg * 1000} kg";
//egyszerűbben:
//kiirando = i + 1 + ". " + autok[i].tomeg * 1000 + " kg";
sw.WriteLine(kiirando);
Console.WriteLine(kiirando);
}
sw.Close();
Console.Write($"\nA program bezárásához nyomjon meg egy billentyűt...");
Console.ReadKey();
}
}
}
Nincsenek megjegyzések:
Megjegyzés küldése