2023. október 27., péntek

2023.10.27. Terepjárók LINQ megoldás

K. Levi megoldása alapján

using System;

using System.Collections.Generic;

using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TZ
{
    class Terepjaro
    {
        public string MarkaEsModell { get; set; }
        public int Evjarat { get; set; }
        public string UzemanyagTipus { get; set; }
        public double Tomeg { get; set; }
        public string HajtasTipus { get; set; }
        public string Kepesseg { get; set; }
        public double KgAtvaltFont {
            get => Tomeg * 2.20462;
        }

        public Terepjaro(string sor)
        {
            var adat = sor.Split(";");
            MarkaEsModell = adat[0];
            Evjarat = int.Parse(adat[1]);
            UzemanyagTipus = adat[2];
            Tomeg = double.Parse(adat[3]);
            HajtasTipus = adat[4];
            Kepesseg = adat[5];
        }

        public override string ToString()
        {
            return $"Márka és Modell: {MarkaEsModell}, " +
                $"Évjárat: {Evjarat}, " +
                $"Uzemanyag típus: {UzemanyagTipus}, " +
                $"Tömeg: {Tomeg}, " +
                $"Hajtás típus: {HajtasTipus}, " +
                $"Képesség: {Kepesseg}";
        }
    }
}


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace Kozma_Levente_TZ_20231016
{
    class Program
    {
        private static readonly List<Terepjaro> terepjarok = new();
        private static List<Terepjaro> osszkereskesTerepjarok = new();
        static void Main(string[] args)
        {   //src mappában legyenek a fájlok
            using (StreamReader r = new(path: "terepjarok.txt"))
            {
                while (!r.EndOfStream)
                    terepjarok.Add(new Terepjaro(r.ReadLine()));
            }

            // 7. Feladat
            Console.WriteLine("7. Feladat");
            for (int i = 0; i < 3; i++)
                Console.WriteLine(terepjarok[i]);

            // 9. Feladat
            Console.WriteLine("9. Feladat");
            Console.WriteLine($"A Toyota terepjárók átlagos tömege: {TerepjaroTomegAtlag("Toyota")}");

            // 10. Feladat
            Console.WriteLine("10. Feladat");
            osszkereskesTerepjarok = terepjarok.Where(t => t.Evjarat > 2019 && t.HajtasTipus.Equals("Összkerékhajtás")).ToList();
            Console.WriteLine($"Összesen {OsszkerekesTerepjarokSzama()}db összkerekes terepjáró van 2019 után.");

            // 11. Feladat
            foreach (var i in LegkonyebbTerepjaro())
                Console.WriteLine(i);

            // 12. Feladat
            Console.WriteLine("12. Feladat");
            Console.WriteLine(HibridDizel());

            // 13. Feladat
            Console.WriteLine("13. Feladat");
            HajtasKereso("Összkerékhajtás").ForEach(t => Console.WriteLine(t)); //szép!

            // 15. Feladat
            using (StreamWriter w = new(path: "ujTerepjarok.txt"))
            {
                terepjarok.ForEach(t => w.WriteLine($"{t.MarkaEsModell};{t.Evjarat};{t.KgAtvaltFont}"));
            }

            // 16. Feladat
            var min = 0;
            var max = 0;
            LegkonyebbEsnehezebb(ref min, ref max);
            Console.WriteLine($"Legkönyebb terepjáró indexe: {min}, Legnehezebb {max}");
        }

        private static double TerepjaroTomegAtlag(string markaNev)
        {
            return Math.Round(terepjarok.Where(t => t.MarkaEsModell.Contains(markaNev)).Average(t => t.Tomeg));
        }

        private static int OsszkerekesTerepjarokSzama()
        {
            return osszkereskesTerepjarok.Count;
        }

        private static Terepjaro[] LegkonyebbTerepjaro()
        {
            return terepjarok
                .Where(t1 => t1.Tomeg.Equals(terepjarok.Min(t2 => t2.Tomeg)))
                .ToArray();
        }

        private static string HibridDizel()
        {
            var hibrid = terepjarok.Where(t1 => t1.UzemanyagTipus.Equals("Hibrid")).ToArray();
            var dizel = terepjarok.Where(t2 => t2.UzemanyagTipus.Equals("Dízel")).ToArray();

            var auto = hibrid.Where(h => h.Evjarat < dizel.Max(d => d.Evjarat)).FirstOrDefault();
            return auto == null ? "Nincs ilyen" : auto.ToString();
        }

        private static List<Terepjaro> HajtasKereso(string hajtas)
        {
            return terepjarok.Where(t => t.HajtasTipus.Equals(hajtas)).ToList();
            //vagy
            //return terepjarok.Where(t => t.HajtasTipus == hajtas).ToList();
        }

        private static void LegkonyebbEsnehezebb(ref int minS, ref int maxS)
        {
            var min = terepjarok.Min(t => t.Tomeg);
            var max = terepjarok.Max(t => t.Tomeg);

            for (int i = 0; i < terepjarok.Count; i++)
            {
                if (min == terepjarok[i].Tomeg) minS = i + 1;
                if (max == terepjarok[i].Tomeg) maxS = i + 1;
            }
        }
    }
}

Nincsenek megjegyzések:

Megjegyzés küldése

2024.04.25., 29., 05.02. Időjárás app

 Feladat: Időjárás app - OOP módszerekkel, haladóknak adatkötéssel Az alkalmazás célja, hogy a felhasználók hozzáadjanak és eltávolítsanak v...