2023. október 27., péntek

2023.10.26. Repülők LINQ megoldás

Kevin megoldása alapján

 using System;

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

namespace arpaskTZ
{
    class Repulogep
    {
        public string GyartoModell { get; set; }
        public int Evjarat { get; set; }
        public string MotorTipus { get; set; }
        public int UtasSzam { get; set; }
        public int HatoTav { get; set; }
        public int UtazasiMagassag { get; set; }
        public double UtazasiMagassagKmben
        {
            get
            {
                return (double)UtazasiMagassag / 1000;
            }
        }

        public Repulogep(string sor)
        {
            var r = sor.Split(";");
            GyartoModell = r[0];
            Evjarat = int.Parse(r[1]);
            MotorTipus = r[2];
            UtasSzam = int.Parse(r[3]);
            HatoTav = int.Parse(r[4]);
            UtazasiMagassag = int.Parse(r[5]);
        }

        public override string ToString() => $"{GyartoModell}, {Evjarat}, {MotorTipus}, {UtasSzam}, {HatoTav}, {UtazasiMagassag}";
    }
}

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

namespace arpaskTZ
{
    class Fuggvenyek
    {
        public static double AtlagEvjarat(List<Repulogep> repulogepek)
        {
            return repulogepek
                .Average(r => r.Evjarat);
        }

        public static double MaxUtasSzam500(List<Repulogep> repulogepek)
        {
            return repulogepek.Count;
        }

        public static List<Repulogep> LegnagyobbHatotav(List<Repulogep> repulogepek)
        {
            int legnagyobbHatotavolsag = repulogepek
                .OrderByDescending(r => r.HatoTav)
                .Select(r => r.HatoTav)
                .First();

            return repulogepek
                .Where(r => r.HatoTav == legnagyobbHatotavolsag)
                .ToList();
        }

        public static List<Repulogep> KicsiBoeing(List<Repulogep> repulogepek)
        {
            var legregebbiAirBus = repulogepek
                .Where(r => r.GyartoModell.StartsWith("Airbus"))
                .OrderBy(r => r.Evjarat)
                .First();

            return repulogepek
                .Where(r => r.UtasSzam < legregebbiAirBus.UtasSzam && r.GyartoModell.StartsWith("Boeing"))
                .ToList();
        }

        public static List<Repulogep> AlcsonyanSzall(List<Repulogep> repulogepek)
        {
            return repulogepek
                .Where(r => r.UtazasiMagassag < 6000)
                .ToList();
        }

        public static (Repulogep legkisebb, Repulogep legnagyobb, bool ugyanazE) LegnagyobbLegkisebb(List<Repulogep> repulogepek)
        {
            var legkisebbHatotavu = repulogepek
                .OrderBy(r => r.HatoTav)
                .First();

            var legnagyobbHatotavu = repulogepek
                .OrderByDescending(r => r.HatoTav)
                .First();

            bool vanE = legkisebbHatotavu.GyartoModell == legnagyobbHatotavu.GyartoModell;

            return (legkisebbHatotavu, legnagyobbHatotavu, vanE);
        }
    }
}

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

namespace arpaskTZ
{
    class Program
    {
        static void Main(string[] args)
        {
            var repulogepek = new List<Repulogep>();

            try
            {
                using var sr = new StreamReader(@"..\..\..\src\repulogepek.txt", Encoding.UTF8);

                while (!sr.EndOfStream)
                {
                    repulogepek.Add(new Repulogep(sr.ReadLine()));
                }
            }
            catch (Exception)
            {
                Console.WriteLine("Nem található a file");
            }

            foreach (var r in repulogepek)
            {
                Console.WriteLine(r);
            }

            Console.WriteLine("9. feladat");

            Console.WriteLine($"A repülők átlagos évjárata: {Math.Round(Fuggvenyek.AtlagEvjarat(repulogepek))}");

            Console.WriteLine("10. feladat");

            var f10 = repulogepek
                .Where(r => r.UtasSzam > 500)
                .ToList();

            Console.WriteLine($"{Fuggvenyek.MaxUtasSzam500(f10)} olyan repülőgép van, aminek utasszáma meghaladja az 500-at");

            Console.WriteLine("11. feladat");

            var f11Lista = Fuggvenyek.LegnagyobbHatotav(repulogepek);

            foreach (var f in f11Lista)
            {
                Console.WriteLine(f);
            }

            Console.WriteLine("12. feladat");

            var kicsiBoeingek = Fuggvenyek.KicsiBoeing(repulogepek);

            if (kicsiBoeingek.Count != 0)
            {
                Console.WriteLine(kicsiBoeingek[0]);
            }
            else
            {
                Console.WriteLine("Nincs ilyen Boeing");
            }

            Console.WriteLine("13. feladat");

            var alacsonyanSzallnak = Fuggvenyek.AlcsonyanSzall(repulogepek);

            foreach (var a in alacsonyanSzallnak)
            {
                Console.WriteLine(a);
            }

            Console.WriteLine("15. feladat");
            using var sw = new StreamWriter(@"..\..\..\src\valami.txt", false, Encoding.UTF8);
            {
                foreach (var r in repulogepek)
                {
                    sw.WriteLine($"{r.GyartoModell}, {r.UtazasiMagassagKmben}");
                }
            }
            Console.WriteLine("Fájlba írás kész.");

            Console.WriteLine("16. feladat");

            var (legkisebb, legnagyobb, vanE) = Fuggvenyek.LegnagyobbLegkisebb(repulogepek);

            Console.WriteLine(legkisebb);

            Console.WriteLine(legnagyobb);

            Console.WriteLine($"{(vanE ? "Ugyanaz" : "Nem ugyanaz")} a legkisebb és a legnagyobb hatótávú repülő gyártója");

            Console.ReadKey();
        }
    }
}

Nincsenek megjegyzések:

Megjegyzés küldése