A monitoros feladatmegoldásunkat átalakítottuk listássá:
using System;
using System.IO;
using System.Collections.Generic;
namespace monitorList
{
class Program
{
//adat.txt
//Samsung;S24D330H;24;33000
//Acer;V227Qbi;21,5;31000
//AOC;24G2U;23,8;66000
//LG;25UM58-P;25;56000
//Samsung;C27JG50QQU;27;91000
//static string[] gyarto = new string[5];
static List<string> gyarto = new List<string>();
//static string[] tipus = new string[5];
static List<string> tipus = new List<string>();
//static double[] meret = new double[5];
static List<double> meret = new List<double>();
//static double[] ar = new double[5];
static List<double> ar = new List<double>();
//static double[] brutto = new double[5];
static List<double> brutto = new List<double>();
//static double[] keszlet = new double[5];
static List<double> keszlet = new List<double>();
//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
//A méret colban van, az ár nettó és forintban értjük.
//Pl.: Samsung;S24D330H;24;33000
//A megoldáshoz először fel kell vinned egy fájlba a monitorok adatait. 5 monitorról gyűjts össze adatokat, ehhez használhatod az internetet.
//Feladatok:
//1. Olvasd be a fájl tartalmát 4 tömbbe. Tudjuk, hogy 5 monitor van. Szorgalmi: oldd meg, hogy bármennyi monitort is tudj kezelni.
static void elso()
{
string[] atmeneti;
StreamReader sr = new StreamReader("monitor.txt");
while (!sr.EndOfStream)
{
atmeneti = sr.ReadLine().Split(';');
gyarto.Add(atmeneti[0]);
tipus.Add(atmeneti[1]);
meret.Add(Convert.ToDouble(atmeneti[2]));
ar.Add(Convert.ToDouble(atmeneti[3]));
}
sr.Close();
}
//2. Í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
static void masodik()
{
for (int i = 0; i < gyarto.Count; i++)
{
Console.WriteLine("Gyártó: {0}; Típus: {1}; Méret: {2} col; Nettó ár: {3}", gyarto[i], tipus[i], meret[i], ar[i]);
}
//2. Hozz létre egy új tömböt, amelyben a bruttó árakat tárolod. A számításhoz tudnod kell, hogy az ÁFA mértéke 27%.
//Array.Copy(ar, brutto, ar.Length);
for (int i = 0; i < ar.Count; i++)
{
brutto.Add((ar[i] * 127) / 100);
}
}
static void harmadik()
{
//3. Tételezzük fel, hogy mindegyik monitorból 15 db van készleten.
//A készlet tárolásához hozz létre egy új tömböt (aminek minden eleme 15 legyen kezdetben).
for (int i = 0; i < 5; i++)
{
keszlet.Add(15);
}
double raktaron = 0;
for (int i = 0; i < brutto.Count; i++)
{
raktaron = raktaron + brutto[i] * keszlet[i];
}
Console.WriteLine("Raktárkészlet bruttó értéke: {0} Ft", raktaron);
}
//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.
static void negyedik()
{
StreamWriter sw = new StreamWriter("50efeletti.txt");
for (int i = 0; i < ar.Count; i++)
{
if (ar[i] > 50000)
{
sw.WriteLine("{0} {1} {2} col {3} ezer Ft", gyarto[i].ToUpper(), tipus[i].ToUpper(), meret[i], ar[i] / 1000);
Console.WriteLine("{0} {1} {2} col {3} ezer Ft", gyarto[i].ToUpper(), tipus[i].ToUpper(), meret[i], ar[i] / 1000);
}
}
sw.Close();
}
//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. (A válasz lehet 0 db is.)
static void otodik()
{
int j = 0;
while (j < gyarto.Count && !(gyarto[j] == "HP EliteDisplay" && tipus[j] == "E242"))
{
j++;
}
if (j == 5)
{
Console.WriteLine("Nincs ilyen monitorunk!");
}
else
{
Console.WriteLine("{0} db HP EliteDisplay E242 monitor van készleten.", keszlet[j]);
}
}
//6. Egy újabb vevőt csak az ár érdekli. Írd ki neki a legolcsóbb monitor méretét, és árát.
static void hatodik()
{
double min = ar[0];
int e = 0;
for (int i = 1; i < ar.Count; i++)
{
if (ar[i] < min)
{
min = ar[i];
e = i;
}
}
Console.WriteLine("A legolcsóbb monitor a: {0} {1}, ár: {2}, méret: {3}", gyarto[e], tipus[e], min, meret[e]);
}
//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 egy újabb tömbbe ezeknek az akciós monitoroknak az árát úgy, hogy ne legyen „üres” tömbelem (kiválogatás tétele).
//A feldolgozás közben folyamatosan összesítsd a készleten lévő akciós monitorok értékét, és a feldolgozás végén írd ki, hogy mennyit veszítene a cég az akcióval, ha az összes akciós monitort eladná.
static void hetedik()
{
int j = 0;
double osszeg1 = 0;
double osszeg2 = 0;
double[] AkciosAr = new double[5];
for (int i = 0; i < brutto.Count; i++)
{
if (gyarto[i] == "Samsung" && brutto[i] > 70000)
{
AkciosAr[j] = brutto[i] - (brutto[i] * 0.05);
osszeg2 = osszeg1 + AkciosAr[j];
osszeg1 = osszeg1 + brutto[i];
j++;
}
}
Console.WriteLine("Ennyit vesztene a cég az akcióval: {0} Ft", osszeg1 - osszeg2);
}
//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.
static void nyolcadik()
{
double atlag = 0;
for (int i = 0; i < ar.Count; i++)
{
atlag = atlag + ar[i];
}
atlag = atlag / 5;
for (int i = 0; i < ar.Count; i++)
{
if (ar[i] < atlag)
{
Console.WriteLine("A(z) {0}. monitor az átlagár alatt van.", i + 1);
}
else
{
if (ar[i] > atlag)
{
Console.WriteLine("A(z) {0}. monitor az átlagár felett van.", i + 1);
}
else
{
Console.WriteLine("A monitor ára megegyezik az átlagárral.");
}
}
}
}
//9. Modellezzük, hogy megrohamozták a vevők a boltot. 5 és 15 közötti random számú vásárló 1-1 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.)
static void kilencedik()
{
Random rnd = new Random();
int vasarlo = rnd.Next(5, 16);
int monitor;
int j = 0;
while (j < vasarlo)
{
monitor = rnd.Next(0, 5);
if (keszlet[monitor] != 0)
{
keszlet[monitor]--;
}
j++;
}
for (int i = 0; i < keszlet.Count; i++)
{
Console.WriteLine("{0}. monitor gyártója: {1}, típusa: {2}, készleten: {3} db.", i + 1, gyarto[i], tipus[i], keszlet[i]);
}
}
//10. Írd ki a képernyőre, hogy a vásárlások után van-e olyan monitor, amelyikből mindegyik elfogyott.
static void tizedik()
{
for (int i = 0; i < keszlet.Count; i++)
{
if (keszlet[i] == 0)
{
Console.WriteLine("A {1}, {2} monitorok elfogytak.", gyarto[i], tipus[i]);
}
}
}
//11. Az Array.Sort(tömb neve) metódus használatával rakd sorba a monitorok gyártóit, és írd ki őket a képernyőre.
//(Ehhez először másold át a gyártókat egy új tömbbe, és azt rendezd sorba.)
static void tizenegyedik()
{
//string[] gyarto2 = new string[5];
//Array.Copy(gyarto, gyarto2, gyarto.Length);
List<string> gyarto2 = new List<string>();
for (int i = 0; i < gyarto.Count; i++)
{
gyarto2.Add(gyarto[i]);
}
gyarto2.Sort();
for (int i = 0; i < gyarto2.Count; i++)
{
Console.WriteLine(gyarto2[i]);
}
}
//12. Csökkentsd a legdrágább monitor bruttó árát 10%-kal, írd ki ezt az értéket a képernyőre.
static void tizenkettedik()
{
double max = brutto[0];
for (int i = 1; i < brutto.Count; i++)
{
if (brutto[i] > max)
{
max = brutto[i];
}
}
max = max - (max * 0.1);
Console.WriteLine("A legdrágább monitor 10% kedvezménnyel: {0}", max);
}
static void Main(string[] args)
{
elso();
masodik();
Console.WriteLine();
harmadik();
Console.WriteLine();
Console.WriteLine("50.000 Ft feletti nettó értékű monitorok adatai:");
negyedik();
Console.WriteLine();
Console.WriteLine("Van e készleten HP EliteDisplay E242 monitor ?");
otodik();
Console.WriteLine();
hatodik();
Console.WriteLine();
hetedik();
Console.WriteLine();
nyolcadik();
Console.WriteLine();
kilencedik();
Console.WriteLine();
tizedik();
Console.WriteLine();
Console.WriteLine("Monitorok gyártója sorbarendezve:");
tizenegyedik();
Console.WriteLine();
tizenkettedik();
Console.ReadLine();
}
}
}
Nincsenek megjegyzések:
Megjegyzés küldése