2022. március 9., szerda

2022.03.09. Programozás - AB (Totó, Tisza)

 Totós feladatsorból a grafikus prg. és az adatbázis. Legközelebb ellenőrizzük a grafikusat.

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

namespace Toto
{
    class EredmenyElemzo
    {
        private string Eredmenyek;

        private int DontetlenekSzama
        {
            get
            {
                return Megszamol('X');
            }
        }

        private int Megszamol(char kimenet)
        {
            int darab = 0;
            foreach (var i in Eredmenyek)
            {
                if (i == kimenet) darab++;
            }
            return darab;
        }

        public bool NemvoltDontetlenMerkozes
        {
            get
            {
                return DontetlenekSzama == 0;
            }
        }

        public EredmenyElemzo(string eredmenyek) // konstruktor
        {
            Eredmenyek = eredmenyek;
        }
    }
    class FogadasiFordulo
    {
        public int Év { get; private set; }
        public int Hét { get; private set; }
        public int Forduló { get; private set; }
        public int TelitalálatDarab { get; private set; }
        public int TelitalálatNyereméy { get; private set; }
        public string Eredmények { get; private set; }

        public int NyereményÖsszeg => TelitalálatDarab * TelitalálatNyereméy;

        public FogadasiFordulo(string sor)
        {
            string[] m = sor.Split(';');
            Év = int.Parse(m[0]);
            Hét = int.Parse(m[1]);
            Forduló = int.Parse(m[2]);
            TelitalálatDarab = int.Parse(m[3]);
            TelitalálatNyereméy = int.Parse(m[4]);
            Eredmények = m[5];
        }

        public void EredménytKiír()
        {
            Console.WriteLine($"\tÉv: {Év}");
            Console.WriteLine($"\tHét: {Hét}.");
            Console.WriteLine($"\tForduló: {Forduló}.");
            Console.WriteLine($"\tTelitalálat: {TelitalálatDarab} db");
            Console.WriteLine($"\tNyeremény: {TelitalálatNyereméy} Ft");
            Console.WriteLine($"\tEredmények: {Eredmények}");
        }
    }
    class Toto
    {
        static void Main()
        {
            List<FogadasiFordulo> fordulók = new List<FogadasiFordulo>();
            foreach (var i in File.ReadAllLines("toto.txt").Skip(1))
            {
                fordulók.Add(new FogadasiFordulo(i));
            }

            Console.WriteLine($"3. feladat: Fordulók száma: {fordulók.Count}");

            // 4. feladat:
            int szelvény13p1Db = 0;
            foreach (var i in fordulók)
            {
                szelvény13p1Db += i.TelitalálatDarab;
            }
            Console.WriteLine($"4. feladat: Telitalálatos szelvények száma: {szelvény13p1Db} db");

            // 5. feladat:
            double nyereményekÖsszege = 0;
            int telitalálatosFordulóDb = 0;
            foreach (var i in fordulók)
            {
                checked
                {
                    nyereményekÖsszege += i.NyereményÖsszeg;
                    telitalálatosFordulóDb++;
                }
            }
            Console.WriteLine($"5. feladat: Átlag: {nyereményekÖsszege / telitalálatosFordulóDb:F0} Ft");

            Console.WriteLine("6. feladat:");
            int maxi = -1;
            int mini = -1;
            for (int i = 1; i < fordulók.Count; i++)
            {
                if (fordulók[i].TelitalálatDarab > 0)
                {
                    if (maxi == -1) maxi = i;
                    if (mini == -1) mini = i;
                    if (fordulók[i].TelitalálatNyereméy > fordulók[maxi].TelitalálatNyereméy)
                    {
                        maxi = i;
                    }
                    if (fordulók[i].TelitalálatNyereméy < fordulók[mini].TelitalálatNyereméy)
                    {
                        mini = i;
                    }
                }
            }
            Console.WriteLine("\tLegnagyobb:");
            fordulók[maxi].EredménytKiír();
            Console.WriteLine("\n\tLegkisebb:");
            fordulók[mini].EredménytKiír();

            // 8. feladat:
            bool voltDöntetlenNélküliForduló = false;
            foreach (var i in fordulók)
            {
                EredmenyElemzo ee = new EredmenyElemzo(i.Eredmények);
                if (ee.NemvoltDontetlenMerkozes)
                {
                    voltDöntetlenNélküliForduló = true;
                    break;
                }
            }
            Console.WriteLine($"8. feladat: {(voltDöntetlenNélküliForduló ? "Volt" : "Nem volt")} döntetlen nélküli forduló!");

            Console.ReadKey();
        }
    }
}

-------------------------------------
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;

namespace TotoGUI
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

       
        private void Eredények_TextChanged(object sender, TextChangedEventArgs e)
        {
            cbHossz.IsChecked = Eredények.Text.Length != 14;
            cbHossz.Content = $"Nem megfelelő a karakterek száma ({Eredények.Text.Length})";
            List<Char> hibásKarakterek = new List<char>();
            foreach (var i in Eredények.Text)
            {
                if ("12X".IndexOf(i) == -1)
                {
                    hibásKarakterek.Add(i);
                }
            }
            cbHibásKarakter.Content = $"Helytelen karakter az eredményekben ({string.Join(";", hibásKarakterek)})";
            cbHibásKarakter.IsChecked = hibásKarakterek.Count != 0;
            Mentés.IsEnabled = cbHossz.IsChecked == false && cbHibásKarakter.IsChecked == false;
        }
    }
}


<Window x:Class="TotoGUI.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:TotoGUI"
        mc:Ignorable="d"
        Title="Totó eredmény ellenőrző" Height="220" Width="400">
    <Grid>
        <Label Content="Kérem a forduló eredményeit [1, 2, X]:" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top" Width="265"/>
        <CheckBox x:Name="cbHossz" IsEnabled="False" Content="Nem megfelelő a karakterek száma (14)" HorizontalAlignment="Left" Margin="10,79,0,0" VerticalAlignment="Top" Width="365"/>
        <CheckBox x:Name="cbHibásKarakter" IsEnabled="False" Content="Helytelen karakter az eredményekben ()" HorizontalAlignment="Left" Margin="10,106,0,0" VerticalAlignment="Top" Width="365"/>
        <Button x:Name="Mentés" Content="Eredmények mentése" HorizontalAlignment="Left" Margin="10,143,0,0" VerticalAlignment="Top" Width="152"/>
        <TextBox x:Name="Eredények" HorizontalAlignment="Left" Height="23" Margin="10,40,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="255" Text="12X12X12X12X12" TextChanged="Eredények_TextChanged"/>
    </Grid>
</Window>


-- A feladatok megoldására elkészített SQL parancsokat illessze be a feladat sorszáma után!

-- 10. feladat:
CREATE DATABASE tisza
  DEFAULT CHARACTER SET utf8
  COLLATE utf8_hungarian_ci;

-- 12. feladat:
DELETE
FROM
  meres
WHERE
  meres.nap='2020-03-27';

-- 13. feladat:
UPDATE
  vizmerce
SET
  vizmerce.igId=2
WHERE
  vizmerce.varos="Tokaj";

-- 14. feladat:
SELECT
 vizmerce.varos,
  vizmerce.nullPont
FROM
  vizmerce
ORDER BY
  vizmerce.nullPont ASC
LIMIT 1;

-- 15. feladat:
SELECT
  vizmerce.varos,
  vizmerce.lnv-vizmerce.lkv AS ingadozas
FROM
  vizmerce
ORDER BY
  ingadozas DESC;
 
-- 16. feladat:
SELECT
  igazgatosag.nev,
  COUNT(vizmerce.id) AS merceszam
FROM
  igazgatosag INNER JOIN vizmerce
    ON vizmerce.igId=igazgatosag.id
GROUP BY
  igazgatosag.nev;
 
-- 17. feladat:
SELECT
  AVG(meres.vizAllas) AS atlag
FROM
  meres INNER JOIN vizmerce
    ON meres.vmId=vizmerce.id
WHERE
  MONTH(nap) = 4 AND vizmerce.varos='Szolnok';

Nincsenek megjegyzések:

Megjegyzés küldése