2023. február 17., péntek

2023.02.17. Online programozó oldalak

 Leetcode

Coding Game

2023.02.17. Csillagok kiírása ciklussal

Csillagok kiírása ciklussal

1. Mit csinál ez a kód?
2. Alakítsd át úgy, hogy a for ciklust cseréld le while ciklusra.  
using System;

namespace kiiro
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 80; i++)
            {
                Console.Write("*");
            }
            Console.ReadLine();
            Console.Clear();
            int sor = 0;
            int oszlop = 0;
            for (int i = 0; i < 80; i++)
            {
                Console.SetCursorPosition(oszlop,sor );
                Console.Write("*");
                oszlop++;
                sor++;
            }  
            Console.ReadLine();
            Console.Clear();
            sor = 0;
            oszlop = 79;
            for (int i = 0; i < 80; i++)
            {
                Console.SetCursorPosition(oszlop, sor);
                Console.Write("*");
                oszlop--;
                sor++;
            }
            Console.ReadLine();
        }
    }
}

2023.02.17. While ciklus - gyakorló feladat

  

While – gyakorló feladat

1       feladat:

       Kérd be a felhasználótól, hogy hány nap múlva lesz vége a tanévnek.

       Számolj visszafelé egyesével 1-ig, az aktuális értéket írd ki a képernyőre (élesben naponta egyet kellene kiírni).

2       feladat:

Monitorokat szállítasz ki a raktárból.

       A kezdőkészlet értékét kérd be (tehát hány db monitor van).

       A ciklus addig megy, amíg el nem fogy minden monitor.

       Minden cikluslépésben csökkents a készletet egy 1 és 10 közötti friss véletlenszámmal.

       Minden cikluslépésben írd ki, hogy hányat akar venni a vásárló, hány darab monitor van még, és a vásárlás után hány maradt. (A végén figyelj, hogy ne menj mínuszba.)

Máté megoldása:
using System;


namespace Orai20230217
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            //1       feladat:
            //−       Kérd be a felhasználótól, hogy hány nap múlva lesz vége a tanévnek.
            //−       Számolj visszafelé egyesével 1 - ig, az aktuális értéket írd ki a képernyőre(élesben naponta egyet kellene kiírni).
            Console.Write("Hány nap múlva ér véget a tanév?  ");
            int napok = Convert.ToInt32(Console.ReadLine());
            while (napok > 0)
            {
                Console.WriteLine($"Még {napok} nap maradt hátra a tanévből!");
                napok--;
            }
            Console.WriteLine();
            //2       feladat:
            //Monitorokat szállítasz ki a raktárból.
            //−       A kezdőkészlet értékét kérd be(tehát hány db monitor van).
            //−       A ciklus addig megy, amíg el nem fogy minden monitor.
            //−       Minden cikluslépésben csökkents a készletet egy 1 és 10 közötti friss véletlenszámmal.
            //−       Minden cikluslépésben írd ki, hogy hányat akar venni a vásárló, hány darab monitor van még, és a vásárlás után hány maradt. (A végén figyelj, hogy ne menj mínuszba.)
            Console.Write("Hány darab monitor van raktáron?  ");
            int monitorok = Convert.ToInt32(Console.ReadLine());
            int vétel = 0;
            while (monitorok > 0)
            {
                vétel = rnd.Next(1, 11);
                if (monitorok > vétel)
                {
                    Console.WriteLine($"Jelenleg {monitorok} darab monitor van raktáron, amiből a vevő {vétel} darabot vesz, így raktáron marad {monitorok - vétel} darab.");
                }
                else
                {
                    if (monitorok == vétel)
                    {
                        Console.WriteLine($"Jelenleg {monitorok} darab monitor van raktáron, a vevő {vétel} darabot vesz, és nem marad raktáron monitor.");
                    }
                    else
                    {
                        Console.WriteLine($"Jelenleg {monitorok} darab monitor van raktáron, a vevő {vétel} darabot akart venni, de mivel nincs elég, így a vevő csak {monitorok} darabot tud venni, és nem marad raktáron monitor.");
                    }
                }

                monitorok -= vétel;
            }
            Console.ReadLine();
        }
    }
}

Tamás megoldása alapján:
using System;
namespace kiiro
{
    class Program
    {
        static void Main(string[] args)
        {
           
            Console.Write("Hány nap múlva lesz vége a tanévnek: ");
            int tanevvege = Convert.ToInt32(Console.ReadLine());
           
            while (tanevvege >= 0)
            {
                Console.WriteLine(tanevvege);
                tanevvege--;
            }
            Console.ReadLine();

            Console.Write("Kérem a kezdőkészlet értékét: ");
            int kezdokeszlet = Convert.ToInt32(Console.ReadLine());

            Random rnd = new Random();
            int randomszam = 0;
           
            while (kezdokeszlet > 0)
            {
                randomszam = rnd.Next(1,11);
                Console.WriteLine($"Ennyi monitort szeretne: {randomszam}");
                Console.WriteLine($"Ennyi monitor van még: {kezdokeszlet}");
                kezdokeszlet -= randomszam;
                if (kezdokeszlet < 0)
                {
                    kezdokeszlet = kezdokeszlet * -1;
                    Console.WriteLine($"Elfogytak a monitorok szóval ennyi monitort nem kapott meg a vásárló: {kezdokeszlet}");
                    kezdokeszlet = 0;
                }
                else
                {
                    Console.WriteLine($"Ennyi maradt: {kezdokeszlet}");
                    Console.WriteLine();
                }
            }
            Console.ReadLine();
           
        }
    }

}





2023. február 15., szerda

2023.02.15. SQL - Szótár

 Befejeztük a Szótár adatbázist. Akinek még nincs kész, annak házi feladat befejezni. Következő óra elején ellenőrizzük.

Jövő héten a Hajó, Szótár adatbázisból röpi lesz.

Az otthon levők is pótoljanak lehetőség szerint.


Megoldás + további példák:

/*1.  Hozzon létre a lokális SQL szerveren szotar néven adatbázist!
  Az adatbázis alapértelmezett rendezési sorrendje a magyar szabályok
  szerinti legyen!
  Ha az Ön által választott SQL szervernél nem alapértelmezés az UTF-8 kódolás,
  akkor azt is állítsa be alapértelmezettnek az adatbázis létrehozásánál!*/
CREATE DATABASE szotar
  CHARACTER SET utf8
  COLLATE utf8_hungarian_ci;

/*2.  A tabla.sql és az adatok.sql állományok tartalmazzák a táblákat létrehozó, valamint az adatokat a táblába beszúró SQL parancsokat! Futtassa a lokális SQL szerveren elsőként a tabla.sql, majd az adatok.sql parancsfájlt.
A feladatok megoldására elkészített SQL parancsokat a megoldasok.sql állományba illessze be a feladatok végén jelzett zárójelben lévő sor alá!*/


/*3.  Készítsen lekérdezést, amely felsorolja azokat az angol szavakat,
  amelyeknek magyar megfelelőjét pontosan
  az angol írásmóddal egyezően írják! (3. feladat:) */
select szolista.angol
  from szolista
  where angol=magyar;

/*4.  Készítsen lekérdezést, amely ABC sorrendben
  felsorolja azokat a magyar szavakat,
  amelyeknél az adatbázisba kerülés dátuma 2003-ban,
  vagy 2004-ben volt! (4. feladat:)*/
select szolista.magyar
  from szolista
  where felvetel>='2003.01.01.' AND felvetel<='2004.12.31.'
  order by magyar;

select szolista.magyar
  from szolista
  where felvetel between '2003.01.01.' AND '2004.12.31.'
  order by magyar;

  select szolista.magyar
  from szolista
  where year(felvetel) between 2003 AND 2004
  order by magyar;

    select szolista.magyar
  from szolista
  where year(felvetel) = 2003 OR year(felvetel) = 2004
  order by magyar;

  select szolista.magyar
  from szolista
  where felvetel like "2003%" OR felvetel like "2004%"
  order by magyar;


/*5.  Készítsen lekérdezést, amely megjeleníti azokat az angol szavakat,
  amelyek valamelyik magyar jelentését legalább 150 fő helyesnek ítélte,
  vagy kevesebb, mint 5 fő találta hibásnak! (5. feladat:)*/
select angol
  from szolista
  where helyes>=150 or helytelen<5;

/*6.  Készítsen lekérdezést, amely megjeleníti
  az „ac” betűkkel kezdődő és „y”-nal végződő angol  szavakat
  és a magyar megfelelőiket. (6. feladat:)*/
select angol, magyar
  from szolista
  where angol like 'ac%y';

/*7.  Készítsen lekérdezést, amely megadja a 4000-nél
  nagyobb azonosítójú angol szavakra vonatkozóan
  a következőket: helyes minősítések száma,
  helytelen minősítések száma,
  minősítések száma átlagosan.
  A harmadik mező „átlag” néven jelenjen meg.
  (Egyetlen sort kell kiírni.) (7. feladat:)*/
select sum(helyes), sum(helytelen), avg(helyes+helytelen) as 'átlag'
  from szolista
  where azon>4000;
 
  /*Rávezető feladatok:
  7.a Készítsen lekérdezést, amely megadja a 4000-nél
  nagyobb azonosítójú angol szavakra vonatkozóan
  a következőket: angol szó, magyar szó,
  helyes minősítések száma (soronként),
  helytelen minősítések száma (soronként),
  minősítések száma átlagosan (soronként).
  A harmadik mező „minősítések száma átlagosan soronként” néven jelenjen meg.
  (Több sort kell kiírni.) (7.a feladat:)*/

  select angol, magyar, helyes, helytelen,
   (helyes+helytelen)/2 as 'minősítések száma átlagosan soronként'
  from szolista where azon>4000;
 
  /*  7.b Készítsen lekérdezést, amely megadja a 4000-nél
  nagyobb azonosítójú angol szavakra vonatkozóan
  a következőket:
  helyes minősítések száma átlagosan (az összes sorban lévő értékek átlaga),
  helytelen minősítések száma átlagosan (az összes sorban lévő értékek átlaga),
  helyes és helytelen minősítések száma átlagosan (az összes sorban lévő értékek átlaga).
  (Egyetlen sort kell kiírni.) (7.b feladat:)*/

  select avg(helyes), avg(helytelen),
  avg(helyes+helytelen) as 'minősítések száma átlagosan'
  from szolista where azon>4000;
  /*Itt a helyes értékeket soronként összeadja,majd elosztja a rekordok számával,
  a helytelen értékeket soronként összeadja,majd elosztja a rekordok számával,
  soronként a helyes és helytelen értékeket összeadja,
   majd ezeket is összeadja és elosztja a rekordok számával.
   Ha két rekorddal ki akarjuk próbálni, konkrétan milyen eredményt kapunk:
  select avg(helyes), avg(helytelen), avg(helyes+helytelen) as 'minősítések száma átlagosan'
  from szolista where azon = 3203 or azon = 3204;
   */


 /*  7.c  Készítsen lekérdezést, amely megadja a 4000-nél
  nagyobb azonosítójú angol szavak számát.
  (Egyetlen sort kell kiírni.) (7.c feladat:)*/

  select count(angol) as 'rekordok száma'
  from szolista where azon>4000;
  /*Itt minden olyan mezőt megadhatunk a függvénynek, aminek az értéke garantáltan kitöltött.
  Az azonosító mező ezért mindig alkalmas.
  Vegyük észre, hogy az ilyen feladatoknál nincs értelme
  kiírni egy mezőt, pl. az angol nevet, mivel az nem köthető
  az összesítő függvény eredményéhez.
  pl. a következő megoldás nem dob hibát, de nincs értelme:
  select angol, count(azon) as 'rekordok száma' from szolista where azon>4000;
  Itt az első, szűrésnek megfelelő rekordban lévő angol szót írja ki.
  Győződj meg róla:
  SELECT angol, azon FROM `szolista` where angol like "perfume";
  */





/*8.  Készítsen lekérdezést, amely megadja,
  hogy legelőször mikor került
  a „warp” angol szó az adatbázisba! (8. feladat:)*/

select felvetel
  from szolista
WHERE angol like 'warp'
order by felvetel
limit 1;


select min(felvetel)
  from szolista
WHERE angol like 'warp';


/*9.  Készítsen lekérdezést, amely megadja,
  hogy az adatbázis angol szavai közül
  melyeknek van legalább 3 magyar jelentése!
  A lekérdezésben csak az angol szavak jelenjenek meg. (9. feladat:)*/
select angol
  from szolista
  group by angol
  having count(azon)>=3;

2025.02.19.[helyettesítés] SQL feladatmegoldás - AI alapú önálló gyakorlás

A következő feladatsor a dolgozatokra készít fel, ahol egészen hasonló feladatokat fogtok kapni. Kérem a hiányzókat is, hogy pótoljanak lehe...