Folytattuk együtt a feladatsort. Házi feladat: befejezni az 5. feladatot, és megírni a 6-7-es feladatot péntekre.
Az eddigi megoldásaink:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp40
{
class Monitor
{
public string nev;
public string tipus;
public double col;
public double ar;
public bool gamer;
public int afa;
public double bruttoar;
public int db;
public Monitor(string sor)
{
List<string> atmeneti = sor.Split(";").ToList();
nev = atmeneti[0];
tipus = atmeneti[1];
col = Convert.ToDouble(atmeneti[2]);
ar = Convert.ToInt32(atmeneti[3]);
if (atmeneti.Count == 4)
{
gamer = false;
}
else
{
if (atmeneti.Count == 5)
{
gamer = true;
}
}
afa = 27;
bruttoar = ar / 100 * afa + ar;
db = 15;
}
public void kiir()
{
Console.Write("Gyártó: {0}; Típus: {1}; Méret: {2} col; Nettó ár: {3} Ft; A bruttoára: {4} Ft; ", nev, tipus, col, ar, bruttoar);
if (gamer)
{
Console.WriteLine("Ez egy játékra alkalmasabb monitor");
}
else
{
Console.WriteLine("Ez nem egy játékra specializált monitor");
}
}
}
class Program
{
static double nyitokeszlet(List<Monitor> m)
{
double keszletar = 0;
for (int i = 0; i < m.Count; i++)
{
keszletar = keszletar + m[i].bruttoar * m[i].db;
}
return keszletar;
}
static void fajlbairas(List<Monitor> m)
{
int i = 0;
StreamWriter sw = new StreamWriter("Drágább monitorok.txt");
while (m.Count > i)
{
if (m[i].ar > 50000)
{
sw.WriteLine("Monitor: {0}, típusa: {1}, méret: {2} col, ára: {3} ezer Ft, készleten: {4} db.", m[i].nev.ToUpper(), m[i].tipus, m[i].col, ezerrelosztas(m[i].ar), m[i].db);
Console.WriteLine("Monitor: {0}, típusa: {1}, méret: {2} col, ára: {3} ezer Ft, készleten: 15 db.", m[i].nev.ToUpper(), m[i].tipus, m[i].col, ezerrelosztas(m[i].ar), m[i].db);
}
i++;
}
sw.Close();
}
static double ezerrelosztas(double a)
{
return a / 1000;
}
static void vane(List<Monitor> m)
{
int i = 0;
bool igen = false;
while (i < m.Count)
{
if (m[i].tipus == "EliteDisplay E242")
{
Console.WriteLine("{0} ilyen monitor van!", m[i].db);
igen = true;
}
i++;
}
if (!igen)
{
Console.WriteLine("Nincs ilyen monitor!");
double atl = atlagSzamitas(m);
Console.WriteLine("Ezt javasoljuk:");
for ( i = 0; i < m.Count; i++)
{
if ( m[i].ar > atl)
{
m[i].kiir();
}
}
}
}
static double atlagSzamitas(List<Monitor> m)
{
int i = 0;
double atlag = 0;
while (i < m.Count)
{
atlag += m[i].ar;
i++;
}
atlag = atlag / m.Count;
return atlag;
}
static void Main(string[] args)
{
List<Monitor> monitorok = new List<Monitor>();
Console.WriteLine("1. feladat");
Console.WriteLine("Fájlok beolvasása...");
foreach (var item in File.ReadAllLines("monitorok.txt"))
{
monitorok.Add(new Monitor(item));
}
Console.WriteLine("2a. feladat");
for (int i = 0; i < monitorok.Count; i++)
{
monitorok[i].kiir();
}
Console.WriteLine("2b. feladat");
Console.WriteLine("Bruttó árak kiszámolva...");
Console.WriteLine("3. feladat");
Console.WriteLine("A készlet értéke: {0} Ft", nyitokeszlet(monitorok));
Console.WriteLine("4. feladat");
fajlbairas(monitorok);
Console.WriteLine("5. feladat");
vane(monitorok);
// Monitor vásár
//Egy hardver cég többféle monitort árul.A monitorokról a következő adatokat tároljuk:
//a monitor gyártója; típusa; mérete; ára;
//illetve amelyik kifejezetten játékra való, ott még megadják azt is, hogy gamer.
//A méret colban van, az ár nettó és forintban értjük.
//Forrásfájl tartalma (a tartalmat használd így, ahogy van, az első sort majd nem kell figyelembe venni beolvasáskor):
//Feladatok:
//Lehetőleg minden kiírást a főprogram végezzen el paramétereken keresztül.
//1. Hozz létre egy osztályt a monitorok adatai számára. Olvasd be a fájl tartalmát.
//2a. Írd ki a monitorok összes adatát, soronként egy monitort a képernyőre.
//A kiírás így nézzen ki:
//Gyártó: Samsung; Típus: S24D330H; Méret: 24 col; Nettó ár: 33000 Ft
//2b. Tárold az osztálypéldányokban a bruttó árat is (ÁFA: 27%, konkrétan a 27-tel számolj.)
//3. Tételezzük fel, hogy mindegyik monitorból 15 db van készleten, ez a nyitókészlet. Mekkora a nyitó raktárkészlet bruttó (tehát áfával növelt) értéke?
//Írj egy metódust, ami meghívásakor kiszámolja
//a raktárkészlet aktuális bruttó értékét. A főprogram írja ki az értéket.
//4. Írd ki egy új fájlba, és a képernyőre az 50.000 Ft feletti nettó értékű monitorok összes adatát (a darabszámmal együtt) úgy,
//hogy a szöveges adatok nagybetűsek legyenek, illetve az árak ezer forintba legyenek átszámítva.
//Az ezer forintba átszámítást egy külön függvényben valósítsd meg.
//5. Egy vevő keresi a HP EliteDisplay E242 monitort.
//Írd ki neki a képernyőre, hogy hány darab ilyen van a készleten.
//Ha nincs a készleten, ajánlj neki egy olyan monitort, aminek az ára
//az átlaghoz fölülről közelít.
//Ehhez használd az átlagszámító függvényt (később lesz feladat).
//6. Egy újabb vevőt csak az ár érdekli. Írd ki neki a legolcsóbb monitor méretét,
//és árát.
//7. A cég akciót hirdet. A 70.000 Ft fölötti árú Samsung monitorok bruttó árából
// 5%-ot elenged.
//Írd ki, hogy mennyit veszítene a cég az akcióval,
//ha az összes akciós monitort eladná.
//8. Írd ki a képernyőre minden monitor esetén,
//hogy az adott monitor nettó ára a nettó átlag ár alatt van-e, vagy fölötte,
//esetleg pontosan egyenlő az átlag árral. Ezt is a főprogram írja ki.
//9. Modellezzük, hogy megrohamozták a vevők a boltot. 5 és 15 közötti
//random számú vásárló 1 vagy 2 random módon kiválasztott monitort vásárol,
//ezzel csökkentve az eredeti készletet.
//Írd ki, hogy melyik monitorból mennyi maradt a boltban.
//Vigyázz, hogy nulla darab alá ne mehessen a készlet.
//Ha az adott monitor éppen elfogyott, ajánlj neki egy másikat (lásd fent).
//10. Írd ki a képernyőre, hogy a vásárlások után
//van-e olyan monitor, amelyikből mindegyik elfogyott.
//11. Írd ki a gyártókat abc sorrendben a képernyőre. Oldd meg úgy is,
//hogy a metódus írja ki, és úgy is, hogy a főprogram.
//12. Csökkentsd a legdrágább monitor bruttó árát
//10%-kal, írd ki ezt az értéket a képernyőre.
Console.ReadLine();
}
}
}