2023. december 1., péntek

2023.12.01. Okosszemüveges - VR szemüveges prog. feladatsor

Átismételtük majdnem az egész okosszemüveges feladatsort.

Hétfőn befejezzük az elemzést.  Mindkettő feladatsor saját megoldását (okosszemüveg, VR szemüveg) be kell fejezni péntekre. Itt az okosszemüveges minta, ez alapján kell a saját megoldásaidat "megtuningolni".

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

namespace okosSzemuveg
{
    class Szemuveg
    {
        public string Sorszam { get; set; }
        public double Meret { get; set; }
        public double Teljesitmeny { get; set; }
        public int Felbontas { get; set; }
        public string[] Szenzorok { get; set; }
        public string Tarhely { get; set; }
        public int Uzemido { get; set; }
        public double MeretCenti() => Meret * 2.54;
        public double TarhelySzamito()
        {
            var tar = Tarhely.Split(" ");
            if (tar[1] == "GB")
            {
                return double.Parse(tar[0]);
            }
            else
            {
                return double.Parse(tar[0]) * 1024;
            }
        }

        public Szemuveg(string sor)
        {
            var v = sor.Split(';');
            Sorszam = v[0];
            Meret = double.Parse(v[1]);
            Teljesitmeny = double.Parse(v[2]);
            Felbontas = int.Parse(v[3]);
            Szenzorok = v[4].Split(',');
            Tarhely = v[5];
            Uzemido = int.Parse(v[6]);
        }

        public override string ToString()
        {
            string szenzorok = "";
            for (int i = 0; i < Szenzorok.Length; i++)
            {
                szenzorok += $"{Szenzorok[i]},";
            }
            return $"Sorszam: {Sorszam}; Meret: {Meret}; Teljesítmény: {Teljesitmeny}; Felbontás: {Felbontas}, Szenzorok: {szenzorok}; Tárhely: {Tarhely}; Üzemidő: {Uzemido}";
        }
    }
}

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

namespace okosSzemuveg
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> Tulajdonsagok = new();
            List<Szemuveg> szemuvegek = new();
            using StreamReader sr = new(
                path: @"..\..\..\src\okosszemüvegek.txt",
                encoding: Encoding.UTF8);
            Tulajdonsagok = sr.ReadLine().Split(";").ToList();
            while (!sr.EndOfStream) szemuvegek.Add(new Szemuveg(sr.ReadLine()));
            foreach (var szemuveg in szemuvegek)
            {
                Console.WriteLine(szemuveg);
            }

            Console.WriteLine("\n7.feladat:");
            var hetes = Hetes(szemuvegek);
            Console.WriteLine($"Okosszemüvegek száma: {hetes.Count}");

            Console.WriteLine("\n8. feladat:");
            var atlagUzemido = szemuvegek.Average(s => s.Uzemido);
            var nyolcas = Nyolcas(szemuvegek, atlagUzemido);
            Console.WriteLine($"Okosszemüvegek:");
            foreach (var item in nyolcas)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine($"Szemüvegek száma: {nyolcas.Count()}");
            Console.WriteLine($"Átlagos üzemidő: {atlagUzemido}");

            Console.WriteLine("\n10. feladat:");
            foreach (var item in Tizes(szemuvegek))
            {
                Console.WriteLine($"Sorszam: {item.Sorszam}; Kijelző méret (cm): {item.MeretCenti()}");
            }


            Console.WriteLine("\n11. feladat:");
            var tizenegyes = Tizenegyes(szemuvegek);
            foreach (var item in tizenegyes)
            {
                Console.WriteLine(item);
            }


            Console.WriteLine("\n12. feladat:");
            var tizenkettes = Tizenkettes(szemuvegek);
            if (tizenkettes.Count() == 0)
            {
                Console.WriteLine("Nincs ilyen okosszemüveg.");
            }
            else
            {
                foreach (var item in tizenkettes)
                {
                    Console.WriteLine(item);
                }
            }

            Console.WriteLine("\n13. feladat");
            var tizenharmas = szemuvegek.Where(s => s.Szenzorok.Length >= 3).ToList();

            using (StreamWriter sw = new StreamWriter(@"..\..\..\src\haromSzenzoros.txt"))
            {
                foreach (var item in tizenharmas)
                {
                    sw.WriteLine(item);
                }
            }

            Console.ReadLine();
        }

        static List<Szemuveg> Hetes(List<Szemuveg> szemuvegek)
        {
            return szemuvegek.Where(s => s.Felbontas >= 12 && s.Teljesitmeny == 2).ToList();
        }

        static List<Szemuveg> Nyolcas(List<Szemuveg> szemuvegek, double atlag)
        {
            return szemuvegek.Where(s => s.Uzemido > atlag).ToList();
        }

        static List<Szemuveg> Tizes(List<Szemuveg> szemuvegek)
        {
            return szemuvegek.Where(s => s.TarhelySzamito() < 100).ToList();
        }

        static List<string> Tizenegyes(List<Szemuveg> szemuvegek)
        {
            return szemuvegek
                .SelectMany(s => s.Szenzorok)
                .Select(s => s == "gyroscope" ? "giroszkóp" : s)
                .Select(s => s == "accelerometer" ? "gyorsulásmérő" : s)
                .Distinct()
                .OrderBy(s => s)
                .ToList();
        }

        static List<Szemuveg> Tizenkettes(List<Szemuveg> szemuvegek)
        {
            return szemuvegek.Where(s => s.Tarhely.Contains("TB")).ToList();
        }

    }
}


------------------------------------------------------------------------------------

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

namespace OkosSzemuvegHagyomanyos
{
    class Szemuveg
    {
        public string Sorszam { get; set; }
        public double Meret { get; set; }
        public double Teljesitmeny { get; set; }
        public int Felbontas { get; set; }
        public string[] Szenzorok { get; set; }
        public string Tarhely { get; set; }
        public int Uzemido { get; set; }
        public double MeretCenti() => Meret * 2.54;
        public double TarhelySzamito()
        {
            var tar = Tarhely.Split(" ");
            if (tar[1] == "GB")
            {
                return double.Parse(tar[0]);
            }
            else
            {
                return double.Parse(tar[0]) * 1024;
            }
        }

        public Szemuveg(string sor)
        {
            var v = sor.Split(';');
            Sorszam = v[0];
            Meret = double.Parse(v[1]);
            Teljesitmeny = double.Parse(v[2]);
            Felbontas = int.Parse(v[3]);
            Szenzorok = v[4].Split(',');
            Tarhely = v[5];
            Uzemido = int.Parse(v[6]);
        }

        public override string ToString()
        {
            string szenzorok = "";
            for (int i = 0; i < Szenzorok.Length; i++)
            {
                szenzorok += $"{Szenzorok[i]},";
            }
            return $"Sorszam: {Sorszam}; Meret: {Meret}; Teljesítmény: {Teljesitmeny}; Felbontás: {Felbontas}, Szenzorok: {szenzorok}; Tárhely: {Tarhely}; Üzemidő: {Uzemido}";
        }
    }
}




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

namespace OkosSzemuvegHagyomanyos
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> Tulajdonsagok = new List<string>();
            List<Szemuveg> szemuvegek = new List<Szemuveg>();
            using (StreamReader sr = new StreamReader(
                path: @"..\..\..\src\okosszemüvegek.txt"))
            {
                Tulajdonsagok.AddRange(sr.ReadLine().Split(";"));
                while (!sr.EndOfStream)
                {
                    szemuvegek.Add(new Szemuveg(sr.ReadLine()));
                }
            }

            foreach (var szemuveg in szemuvegek)
            {
                Console.WriteLine(szemuveg.ToString());
            }

            Console.WriteLine("\n7.feladat:");
            var hetes = Hetes(szemuvegek);
            Console.WriteLine($"Okosszemüvegek száma: {hetes.Count}");

            Console.WriteLine("\n8. feladat:");
            var atlagUzemido = AtlagUzemido(szemuvegek);
            var nyolcas = Nyolcas(szemuvegek, atlagUzemido);
            Console.WriteLine($"Okosszemüvegek:");
            foreach (var item in nyolcas)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine($"Szemüvegek száma: {nyolcas.Count}");
            Console.WriteLine($"Átlagos üzemidő: {atlagUzemido}");

            Console.WriteLine("\n10. feladat:");
            foreach (var item in Tizes(szemuvegek))
            {
                Console.WriteLine($"Sorszam: {item.Sorszam}; Kijelző méret (cm): {item.MeretCenti()}");
            }

            Console.WriteLine("\n11. feladat:");
            var tizenegyes = Tizenegyes(szemuvegek);
            foreach (var item in tizenegyes)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("\n12. feladat:");
            var tizenkettes = Tizenkettes(szemuvegek);
            if (tizenkettes.Count == 0)
            {
                Console.WriteLine("Nincs ilyen okosszemüveg.");
            }
            else
            {
                foreach (var item in tizenkettes)
                {
                    Console.WriteLine(item);
                }
            }

            Console.WriteLine("\n13. feladat");
            var tizenharmas = HaromSzenzoros(szemuvegek);
            using (StreamWriter sw = new StreamWriter(@"..\..\..\src\haromSzenzoros.txt"))
            {
                foreach (var item in tizenharmas)
                {
                    sw.WriteLine(item);
                }
            }

            Console.ReadLine();
        }

        static List<Szemuveg> Hetes(List<Szemuveg> s)
        {
            List<Szemuveg> result = new List<Szemuveg>();
            foreach (var item in s)
            {
                if (item.Felbontas >= 12 && item.Teljesitmeny == 2)
                {
                    result.Add(item);
                }
            }
            return result;
        }

        static List<Szemuveg> Nyolcas(List<Szemuveg> s, double atlagUzemido)
        {
            List<Szemuveg> result = new List<Szemuveg>();
            foreach (var item in s)
            {
                if (item.Uzemido > atlagUzemido)
                {
                    result.Add(item);
                }
            }
            return result;
        }

        static double AtlagUzemido(List<Szemuveg> s)
        {
            double sum = 0;
            foreach (var item in s)
            {
                sum += item.Uzemido;
            }
            return sum / s.Count;
        }

        static List<Szemuveg> Tizes(List<Szemuveg> s)
        {
            List<Szemuveg> result = new List<Szemuveg>();
            foreach (var item in s)
            {
                if (item.TarhelySzamito() < 100)
                {
                    result.Add(item);
                }
            }
            return result;
        }

        static List<string> Tizenegyes(List<Szemuveg> szemuvegek)
        {
            List<string> szenzorok = new List<string>();
            foreach (var szemuveg in szemuvegek)
            {
                foreach (var szenzor in szemuveg.Szenzorok)
                {
                    if (szenzor.ToLower() == "gyroscope")
                    {
                        szenzorok.Add("giroszkóp");
                    }
                    else if (szenzor.ToLower() == "accelerometer")
                    {
                        szenzorok.Add("gyorsulásmérő");
                    }
                    else
                    {
                        szenzorok.Add(szenzor);
                    }
                }
            }
            List<string> szenzorokKesz = szenzorok.Distinct().ToList();
            //ez is jó a Distinct helyett:
            //foreach (var item in szenzorok)
            //{
            //    if (!szenzorokKesz.Contains(item))
            //    {
            //        szenzorokKesz.Add(item);
            //    }
            //}
            szenzorokKesz.Sort();
            return szenzorokKesz;
        }

        static List<Szemuveg> Tizenkettes(List<Szemuveg> szemuvegek)
        {
            List<Szemuveg> result = new List<Szemuveg>();
            foreach (var szemuveg in szemuvegek)
            {
                if (szemuveg.Tarhely.Contains("TB"))
                {
                    result.Add(szemuveg);
                }
            }
            return result;
        }

        static List<Szemuveg> HaromSzenzoros(List<Szemuveg> szemuvegek)
        {
            List<Szemuveg> result = new List<Szemuveg>();
            foreach (var szemuveg in szemuvegek)
            {
                if (szemuveg.Szenzorok.Length >= 3)
                {
                    result.Add(szemuveg);
                }
            }
            return result;
        }
    }
}



2024.04.25. 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...