Ennek a feladatnak az első megoldása mindenkinek megvan a digifüzetében. Itt most közzéadom olyan optimalizált verzióját, amiben mindenre találsz példát.
Önvezető autók
Napjainkban az önvezető autók egyre gyorsabban fejlődnek, több neves cég is fejleszt ilyeneket. Ebben a feladatban a rájuk vonatkozó adatokat kell feldolgoznia.
Az adatokat a lenti keretben találja. Az állomány soronként tartalmazza az autók következő adatait egymástól pontosvesszővel elválasztva:
- azonosító (gyártó és modellszám)
- teljesítmény (lóerő)
- tömeg (tonna)
- gyorsulás (hány másodperc alatt gyorsul 100 km/h-ra)
- a vezetőnek hányszor kellett beavatkozni a vezetésbe 10.000 km-en
A fájlban 9 autó adatai vannak.
Tesla Model S P90D;760;2,20;3;3 Volvo XC90;889;2,90;4;14 Volkswagen GO989;1378;3,66;5;6 Audi Q525;772;2,40;2;3 Mercedes Benz898;739;2,20;3;9 Google Drive 18;752;2,55;4;11 Delphi Magic 428B;1194;3,00;3;4 Bosch Doom300;700;2,09;4;6 Nissan Cherry 100;725;3,1;3;7 |
Például a Tesla Model S P90D autó 760 lóerős teljesítményű, 2,2 tonna tömegű, 3 másodperc alatt gyorsul 100 km/órára és a 10.000 km-es tesztvezetésen 3-szor volt szükség humán beavatkozásra.
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";
//így is jó:
//Console.WriteLine("{0,-18} | {1,4} lóerő |
{2,4} t | {3,2} mp | {4,2}* kellett beavatkozni", azonosito, loero, tomeg,
gyorsulas, beavatkozas);
}
//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 minta szerint 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.
//(Az a legkevésbé önálló, amelynél a legtöbbet
kellett beavatkozni a vezetésbe.)
//Metódust kell használni.
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).
//Nem kötelező metódust használni.
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.ReadLine();
}
}
}
Nincsenek megjegyzések:
Megjegyzés küldése
Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.