2022. március 4., péntek

2022.03.04. Programozás - AB (Szudoku, Nyomtatás)

 Aki nem fejezte be az adatbázist, annak házi feladat.

 Hivatalos megoldások:

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

namespace sudokuCLI
{
    class Feladvany
    {
        public string Kezdo { get; private set; }
        public int Meret { get; private set; }

        public Feladvany(string sor)
        {
            Kezdo = sor;
            Meret = Convert.ToInt32(Math.Sqrt(sor.Length));
        }

        public void Kirajzol()
        {
            for (int i = 0; i < Kezdo.Length; i++)
            {
                if (Kezdo[i] == '0')
                {
                    Console.Write(".");
                }
                else
                {
                    Console.Write(Kezdo[i]);
                }
                if (i % Meret == Meret - 1)
                {
                    Console.WriteLine();
                }
            }
        }
    }
    class sudokuCLI
    {
        static void Main(string[] args)
        {
            //3.feladat
            List<Feladvany> feladvanyok = new List<Feladvany>();
            foreach (string Seged in File.ReadAllLines("feladvanyok.txt"))
            {
                feladvanyok.Add(new Feladvany(Seged));
            }
            Console.WriteLine("3. feladat: Beolvasva {0} feladvány", feladvanyok.Count);

            //4.feladat
            int meret;
            do
            {
                Console.Write("\n4. feladat: Kérem a feladvány méretét [4..9]: ");
                meret = Convert.ToInt32(Console.ReadLine());
            } while (meret < 4 || meret > 9);
            int meretDb = 0;
            foreach (var Seged in feladvanyok)
            {
                if (Seged.Meret == meret)
                {
                    meretDb++;
                }
            }
            Console.WriteLine("{0}x{0} méretű feladványból {1} darab van tárolva", meret, meretDb);

            //5.feladat
            Random Veletlen = new Random();
            int kivalasztott;
            do
            {
                kivalasztott = Veletlen.Next(0, feladvanyok.Count);
            } while (feladvanyok[kivalasztott].Meret != meret);
            Console.WriteLine("\n5. feladat: A kiválasztott feladvány:\n{0}", feladvanyok[kivalasztott].Kezdo);

            //6.feladat
            int toltottDb = 0;
            foreach (char szamJegy in feladvanyok[kivalasztott].Kezdo)
            {
                if (szamJegy != '0')
                {
                    toltottDb++;
                }
            }
            double szazalekErtek = Math.Round((double)100 * toltottDb / feladvanyok[kivalasztott].Kezdo.Length, 0, MidpointRounding.AwayFromZero);
            Console.WriteLine("\n6. feladat: A feladvány kitöltöttsége: {0}%", szazalekErtek);

            //7.feladat
            Console.WriteLine("\n7. feladat: A feladvány kirajzolva:");
            feladvanyok[kivalasztott].Kirajzol();

            //8.feladat
            StreamWriter Ki = new StreamWriter("sudoku" + meret + ".txt");
            foreach (var seged in feladvanyok)
            {
                if (seged.Meret == meret)
                {
                    Ki.WriteLine(seged.Kezdo);
                }
            }
            Ki.Close();
            Console.WriteLine("\n8. feladat: sudoku{0}.txt állomány {1} darab feladvánnyal létrehozva", meret, meretDb);

            Console.ReadLine();
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 sudokuGUI
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();            
        }
        public int meret = 4;
        public int mezoSzam = 16;

        private void MeretModositas(object sender, RoutedEventArgs e)
        {
            if ((sender as Button).Content.ToString() == "-" && meret > 4)
            {
                meret--;
                MeretBox.Text = meret.ToString();
                mezoSzam = meret * meret;
            }
            else if ((sender as Button).Content.ToString() == "+" && meret < 9)
            {
                meret++;
                MeretBox.Text = meret.ToString();
                mezoSzam = meret * meret;
            }
        }

        private void HosszFrissites(object sender, TextChangedEventArgs e)
        {
            HosszCimke.Content = "Hossz: " + KezdoAllapot.Text.Length;
        }

        private void Ellenorzes(object sender, RoutedEventArgs e)
        {
            if (mezoSzam > KezdoAllapot.Text.Length)
            {
                int karakterKulonbseg = mezoSzam - KezdoAllapot.Text.Length;
                MessageBox.Show("A feladvány rövid: kell még " + karakterKulonbseg + " számjegy!");
            }
            else
            {
                if (mezoSzam < KezdoAllapot.Text.Length)
                {
                    int karakterKulonbseg = KezdoAllapot.Text.Length - mezoSzam;
                    MessageBox.Show("A feladvány hosszú: törlendő " + karakterKulonbseg + " számjegy!");
                }
                else
                {
                    MessageBox.Show("A feladvány megfelelő hosszúságú!");
                }
            }
        }
    }
}


<Window x:Class="sudokuGUI.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:sudokuGUI"
        mc:Ignorable="d"
        Title="Sudoku-ellenőrző" Height="210" Width="540">
    <Grid>
        <Label Content="Új feladvány mérete:" HorizontalAlignment="Left" Margin="17,29,0,0" VerticalAlignment="Top"/>
        <Button Content="-" Click="MeretModositas" HorizontalAlignment="Left" Margin="142,30,0,0" VerticalAlignment="Top" Width="17" />
        <TextBox Name="MeretBox" HorizontalAlignment="Left" Height="23" Margin="164,30,0,0" TextWrapping="Wrap" Text="4" TextAlignment="Center" VerticalAlignment="Top" Width="24" IsReadOnly="True"/>
        <Button Content="+" Click="MeretModositas" HorizontalAlignment="Left" Margin="193,30,0,0" VerticalAlignment="Top" Width="17"/>
        <Label Content="Kezdőállapot:" HorizontalAlignment="Left" Margin="17,79,0,0" VerticalAlignment="Top"/>
        <TextBox Name="KezdoAllapot" TextChanged="HosszFrissites" HorizontalAlignment="Left" Height="23" Margin="21,107,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="490"/>
        <Label Name="HosszCimke" Content="Hossz: 0" HorizontalAlignment="Left" Margin="17,130,0,0" VerticalAlignment="Top"/>
        <Button Content="Ellenőrzés" Click="Ellenorzes" HorizontalAlignment="Left" Margin="436,139,0,0" VerticalAlignment="Top" Width="75"/>

    </Grid>
</Window>


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


-- 8. feladat:
CREATE DATABASE konyvtarak
  DEFAULT CHARACTER SET utf8
  COLLATE utf8_hungarian_ci;

-- 10. feladat:
UPDATE megyek
  SET megyeNev="Budapest"
  WHERE megyeNev="BP";

-- 11. feladat:
SELECT
  konyvtarNev, irsz
FROM
  konyvtarak
WHERE
  konyvtarNev LIKE "%Szakkönyvtár%";

-- 12. feladat:
SELECT
  konyvtarNev, irsz, cim
FROM
  konyvtarak
WHERE
  irsz LIKE "1%"
ORDER BY
  irsz ASC;

-- 13. feladat:
SELECT
  telepNev,
  count(id) AS konyvtarDarab
FROM
  konyvtarak INNER JOIN telepulesek
    ON konyvtarak.irsz=telepulesek.irsz
GROUP BY
  telepNev
HAVING konyvtarDarab>=7;

-- 14. feladat:
SELECT
  megyeNev,
  count(irsz) AS telepulesDarab
FROM
  telepulesek INNER JOIN megyek
    ON telepulesek.megyeId=megyek.id
WHERE
  irsz NOT LIKE "1%"
GROUP BY
  megyeNev
ORDER BY
  telepulesDarab DESC;


Nincsenek megjegyzések:

Megjegyzés küldése