2022. március 31., csütörtök

2022.03.31. NFL irányítók, Utazási iroda megoldás

 using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace IranyitoMutato
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private double Szamol(int kiserlet, int sikeres, int yardok, int tdPassz, int eladott)
        {
            double a, b, c, d;
            a = MinMax(((double)sikeres / kiserlet - 0.3) * 5);
            b = MinMax(((double)yardok / kiserlet - 3) * 0.25);
            c = MinMax(((double)tdPassz / kiserlet) * 20);
            d = MinMax(2.375 - ((double)eladott / kiserlet) * 25);

            return 100 * (a + b + c + d) / 6;
        }

        private double MinMax(double x)
        {
            if (x < 0) return 0;
            if (x > 2.375) return 2.375;
            return x;
        }

        private void tbKísérlet_TextChanged(object sender, TextChangedEventArgs e)
        {
            int kísérlet;
            if (int.TryParse(tbKísérlet.Text,out kísérlet) && kísérlet > 0)
            {
                tbEladott.IsEnabled = true;
                tbSikeres.IsEnabled = true;
                tbTDk.IsEnabled = true;
                tbYardok.IsEnabled = true;
            }
        }

        private void btnSzamol_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                double mutató = Math.Round(
                Szamol(int.Parse(tbKísérlet.Text),
                       int.Parse(tbSikeres.Text),
                       int.Parse(tbYardok.Text),
                       int.Parse(tbTDk.Text),
                       int.Parse(tbEladott.Text)), 2);
                lMutató.Foreground = Brushes.Black;
                lMutató.Content = "Irányító mutató: " + mutató;
            }
            catch (Exception)
            {
                lMutató.Foreground = Brushes.Red;
                lMutató.Content = "Hibás adat";

            }
        }
    }
}


<Window x:Class="IranyitoMutato.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:IranyitoMutato"
        mc:Ignorable="d"
        Title="Irányító mutató kalkulátor" Height="223" Width="564">
    <Grid>
        <Label Content="Átadási kísérletek száma:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
        <Label Content="Sikeres átadások száma:" HorizontalAlignment="Left" Margin="10,40,0,0" VerticalAlignment="Top"/>
        <Label Content="Passzolt yardok:" HorizontalAlignment="Left" Margin="10,70,0,0" VerticalAlignment="Top"/>
        <Label Content="Tochdown passzok:" HorizontalAlignment="Left" Margin="10,100,0,0" VerticalAlignment="Top"/>
        <Label Content="Eladott átadások:" HorizontalAlignment="Left" Margin="10,130,0,0" VerticalAlignment="Top"/>
        <TextBox x:Name="tbKísérlet" HorizontalAlignment="Left" Margin="163,14,0,0" Text="0" TextWrapping="Wrap" VerticalAlignment="Top" Width="40" TextAlignment="Center" TextChanged="tbKísérlet_TextChanged"/>
        <TextBox x:Name="tbSikeres" IsEnabled="False" HorizontalAlignment="Left" Margin="163,44,0,0" Text="0" TextWrapping="Wrap" VerticalAlignment="Top" Width="40" TextAlignment="Center"/>
        <TextBox x:Name="tbYardok" IsEnabled="False"  HorizontalAlignment="Left" Margin="163,74,0,0" Text="0" TextWrapping="Wrap" VerticalAlignment="Top" Width="40" TextAlignment="Center"/>
        <TextBox x:Name="tbTDk" IsEnabled="False"  HorizontalAlignment="Left" Margin="163,104,0,0" Text="0" TextWrapping="Wrap" VerticalAlignment="Top" Width="40" TextAlignment="Center"/>
        <TextBox x:Name="tbEladott" IsEnabled="False"  HorizontalAlignment="Left" Margin="163,134,0,0" Text="0" TextWrapping="Wrap" VerticalAlignment="Top" Width="40" TextAlignment="Center"/>
        <Label Name="lMutató" Content="Irányító mutató:" HorizontalAlignment="Left" Margin="288,66,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="20"/>
        <Button x:Name="btnSzamol" Content="Számol" HorizontalAlignment="Left" Margin="330,111,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.177,-0.185" Width="62" Click="btnSzamol_Click"/>

    </Grid>
</Window>


Az osztály meg volt adva:

using System;
using System.Collections.Generic;
using System.Text;

namespace NFL
{
    class Jatekos
    {
        public string Név { get; set; }
        public int Yardok { get; set; }
        public int Kísárletek { get; set; }
        public int Passzok { get; set; }
        public int TDk { get; set; }
        public int Eladott { get; set; }
        public double Mutató { get; set; }
        public string Egyetem { get; set; }
        public int YardMeterben
        {
            get
            {
                return (int)Math.Round(Yardok * 0.9144);
            }
        }
        public Jatekos(string sor)
        {
            //Deshaun Watson;4823;544;382;33;7;112,4;Clemson
            string[] adatok = sor.Split(';');
            Név = adatok[0];
            Yardok = int.Parse(adatok[1]);
            Kísárletek = int.Parse(adatok[2]);
            Passzok = int.Parse(adatok[3]);
            TDk = int.Parse(adatok[4]);
            Eladott = int.Parse(adatok[5]);
            Mutató = Konvertal(adatok[6]);
            Egyetem = adatok[7];
        }
        private double Konvertal(string iranyitoMutato)
        {
            var decimalSeparator = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
            iranyitoMutato = iranyitoMutato.Replace(",", decimalSeparator).Replace(".", decimalSeparator);
            if (double.TryParse(iranyitoMutato, out var ertek))
                return ertek;
            throw new FormatException("Hibás érték (irányítómutató)");
        }

        public string FormazottNev(string nev)
        {
            var n = nev.Split(' ');
            n[n.Length - 1] = n[n.Length - 1].ToUpper();
            return string.Join(" ", n);
        }
    }
}


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

namespace NFL
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Jatekos> játékosok = new List<Jatekos>();
            foreach (var sor in File.ReadAllLines("NFL_iranyitok.txt"))
            {
                játékosok.Add(new Jatekos(sor));
            }

            Console.WriteLine("5. feladat: A statisztikában {0} irányító szerepel.",játékosok.Count);

            Console.WriteLine("7. feladat: Legjobb irányítók:");
            foreach (var item in játékosok)
            {
                if (item.Mutató >= 100 && item.YardMeterben >= 4000)
                {
                    Console.WriteLine("\t{0} (Irányító mutató: {1}. Passzok: {2}m.",
                        item.FormazottNev(item.Név),item.Mutató,item.YardMeterben);
                }
            }

            Console.Write("8. feladat: Eladott labdák száma: ");
            int eladott = int.Parse(Console.ReadLine());
            List<string> legtobbeladott = new List<string>();
            foreach (var item in játékosok)
            {
                if (item.Eladott > eladott)
                    legtobbeladott.Add(item.FormazottNev(item.Név));
            }
            legtobbeladott.Sort();
            File.WriteAllLines("legtobbeladott.txt", legtobbeladott);

            int legjobb = 0;
            for (int i = 1; i < játékosok.Count; i++)
            {
                if (játékosok[i].TDk > játékosok[legjobb].TDk)
                {
                    legjobb = i;
                }
            }
            Console.WriteLine("9. feladat: A legtöbb TD-t szerző játékos: ");
            Console.WriteLine("\tNeve: {0}",játékosok[legjobb].Név);
            Console.WriteLine("\tTD-k száma: {0}",játékosok[legjobb].TDk);
            Console.WriteLine("\tEladott labdák száma: {0}",játékosok[legjobb].Eladott);

            Dictionary<string, int> stat = new Dictionary<string, int>();
            foreach (var item in játékosok)
            {
                if (stat.ContainsKey(item.Egyetem))
                    stat[item.Egyetem]++;
                else
                    stat.Add(item.Egyetem, 1);
            }

            Console.WriteLine("10. feladat: Legsikeresebb egyetemek:");
            foreach (var item in stat)
            {
                if (item.Value > 1)
                    Console.WriteLine("\t{0} - {1}",item.Key,item.Value);
            }
        }
    }
}
-- A feladatok megoldására elkészített SQL parancsokat illessze be a feladat sorszáma után!

-- 11. feladat:
CREATE DATABASE utazas
    CHARACTER SET utf8
    COLLATE utf8_hungarian_ci;

-- 13. feladat:
UPDATE helyseg
  SET nev = 'Porec'
  WHERE nev = 'Porecs';

-- 14. feladat:
SELECT DISTINCT
  szalloda.nev
FROM utak
  INNER JOIN szalloda
    ON utak.szalloda_az = szalloda.az
WHERE szalloda.tengerpart_tav = 0
AND szalloda.felpanzio = 'Igen'
AND utak.indulas BETWEEN '2022.01.01' AND '2022.01.31';

-- 15. feladat:
SELECT
  szalloda.nev,
  szalloda.besorolas
FROM szalloda
WHERE szalloda.nev LIKE '%hotel%'
ORDER BY szalloda.nev;
 
-- 16. feladat:
SELECT
  helyseg.orszag AS Ország,
  COUNT(szalloda.az) AS `Szállodák száma`
FROM szalloda
  INNER JOIN helyseg
    ON szalloda.helyseg_az = helyseg.az
GROUP BY helyseg.orszag
ORDER BY `Szállodák száma` DESC;
 
-- 17. feladat:
SELECT
  szalloda.nev AS `Szálloda neve`,
  AVG(utak.ar) AS `Átlagár/fő`,
  szalloda.besorolas AS `Csillagok száma`
FROM szalloda
  INNER JOIN helyseg
    ON szalloda.helyseg_az = helyseg.az
  INNER JOIN utak
    ON utak.szalloda_az = szalloda.az
WHERE helyseg.orszag = 'Egyiptom'
AND utak.idotartam = 8
GROUP BY szalloda.az,
         szalloda.nev,
         szalloda.besorolas
ORDER BY `Átlagár/fő` DESC
LIMIT 1;




Nincsenek megjegyzések:

Megjegyzés küldése