2023. szeptember 12., kedd

2023.09.12. Pékárus feladat befejezése

 LINQ tutorial

Aki nincs vele készen, annak házi feladat befejezni, digifüzetbe belemásolni.

Tamás megoldása

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


namespace ConsoleApp3
{
    class Pekaruk
    {
        public string PekAru { get; set; }
        public double Zsir { get; set; }
        public double Szenhidrat { get; set; }

        public Pekaruk(string sor)
        {
            string[] alkalmi = sor.Split(';');
            this.PekAru = alkalmi[0];
            this.Zsir = double.Parse(alkalmi[1]);
            this.Szenhidrat = double.Parse(alkalmi[2]);


        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<Pekaruk> pekaru = new List<Pekaruk>();


            foreach (var item in File.ReadAllLines(@"..\..\..\adatok.txt"))
            {
                pekaru.Add(new Pekaruk(item));
            }
            List<Pekaruk> pekaruclone = new List<Pekaruk>(pekaru);


            kiiras(pekaru);
            Console.ReadLine();
            legkisebbzsir(pekaru);
            sorbarendezes(pekaru);
            Console.ReadLine();
            List<double> szenhidratok = sorbarendezes(pekaru);
            foreach (var item in szenhidratok)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
            kereses(pekaru);
            Console.ReadLine();
            atlagalattiszenhidrat(pekaru);
            Console.ReadLine();
        }




        static void atlagalattiszenhidrat(List<Pekaruk> e)
        {
            double atlagszenhidrat = 0;
            int i = 0;
            foreach (var item in e)
            {
                atlagszenhidrat += item.Szenhidrat;
                i++;
            }
            atlagszenhidrat /= i;
            Console.WriteLine($"{atlagszenhidrat}");
            var sw = new StreamWriter(@"..\..\..\szenhidrat.txt");
            for (int k = 0; k < i; k++)
            {
                if (e[k].Szenhidrat < atlagszenhidrat)
                {
                    sw.WriteLine(e[k].PekAru);
                }
            }
            sw.Close();
        }


        static void kereses(List<Pekaruk> d)
        {
            List<int> zsirindexek = new List<int>();


            for (int i = 0; i < d.Count; i++)
            {
                if (d[i].Zsir == 0.7)
                {
                    zsirindexek.Add(i);
                }
            }
            if (zsirindexek.Count > 0)
            {
                Console.WriteLine($"A következő ételel 0.7gramm zsírt tartalmaznak: ");
                for (int i = 0; i < zsirindexek.Count; i++)
                {
                    Console.WriteLine($"{d[zsirindexek[i]].PekAru}");
                }
            }
            else
            {
                Console.WriteLine($"Nincs 0.7 gramm zsírt tartalmazó étel");
            }
        }


        static List<double> sorbarendezes(List<Pekaruk> c)
        {
            List<double> szenhidratok = new List<double>();


            for (int i = 0; i < c.Count; i++)
            {
                szenhidratok.Add(c[i].Szenhidrat);
            }
            szenhidratok.Sort();
            return szenhidratok;
        }


        static void kiiras(List<Pekaruk> a)
        {
            foreach (var item in a)
            {
                Console.WriteLine($"{item.PekAru}, {item.Zsir}, {item.Szenhidrat}");
            }


        }
        static void legkisebbzsir(List<Pekaruk> b)
        {
            int i = 0;
            double legkisebb = 100000;
            string legkisebbneve = "asd";
            while (i < b.Count)
            {
                if (b[i].Zsir < legkisebb)
                {
                    legkisebb = b[i].Zsir;
                    legkisebbneve = b[i].PekAru;
                }
                i++;
            }
            Console.WriteLine($"A Legkisebb zsírtartalmú kaja: {legkisebbneve}");




        }
    }
}

2023.09.12. Alap algoritmusok – gyakorlati példák

  Alap algoritmusok – gyakorlati példák

A kiválasztás tétele

Adjuk meg, hogy hányadik a tömbben az 55, és írjuk ki a sorszámát!
Ha több is van, csak az elsőt írjuk ki.
Ha nincs ilyen szám, írjunk ki hibaüzenetet!

int i = 0;
while (i < szamok.Length && szamok[i] != 55)
{
    i++;
}
if (i != szamok.Length)
    Console.WriteLine("A keresett szám (55) a {0}. indexű elem.", i);
else
    Console.WriteLine("A keresett szám (55) nincs a tömbben!");

A megszámlálás tétele

Számoljuk meg egy tömbben az 50 alatti elemeket!
Írjuk ki a végeredményt. (For ciklussal is jó.)
int i = 0;
int db = 0;
while (i < szamok.Length)
{
    if (szamok[i] < 50)
    {
          db++;
    }
    i++;
}
Console.WriteLine("{0} db 50 alatti szám van a tömbben.", db);

Az eldöntés tétele

Döntsük el, hogy van-e a tömbben 10-nél nagyobb szám.
Amennyiben találtunk egyet, a ciklus álljon meg,
és írjuk ki a képernyőre a megtalált elemet.
(Nem kell a többit is megkeresni.)
Ha végigmentünk a tömbön, és nem találtunk egyet sem, azt is írjuk ki.

int i = 0;
bool van = false;
while (i < szamok.Length && !van)
{
    if (szamok[i] > 10)
    {
        van = true;
    }
    i++;
}
if (van)
    Console.WriteLine("Van a tömbben 10-nél nagyobb elem: {0}", szamok[i-1]);
else
    Console.WriteLine("Nincs a tömbben 10-nél nagyobb elem.");

A kiválogatás tétele

Adott két azonos elemszámú tömb.
Másoljuk át az első tömbből a másodikba a páros elemeket.
(While ciklussal is jó.)
int j = 0;
for (int i = 0; i < szamok1.Length; i++)
{
    if (szamok1[i] % 2 == 0)
    {
        szamok2[j] = szamok1[i];
        j++;
    }
}

Az összegzés tétele

Egy tömbben add össze az elemeket.
Írd ki a végeredményt. (While ciklussal is jó.)
int osszeg = 0;
for (int i = 0; i < egeszSzamok.Length; i++)
{
    osszeg = osszeg + egeszSzamok[i];
}
Console.WriteLine("A tömbelemek összege: {0}", osszeg);

Változat: Add össze a páros elemeket. Írd ki a végeredményt.
int parosOsszeg = 0;
for (int i = 0; i < egeszSzamok.Length; i++)
{
    if (egeszSzamok[i] % 2 == 0)
    {
        parosOsszeg = parosOsszeg + egeszSzamok[i];
     }
}
Console.WriteLine("A páros elemek összege: {0}", parosOsszeg);

Változat: Szorozd össze az 50-nel osztható elemeket. Írd ki a végeredményt.
int szorzat = 1;
for (int i = 0; i < egeszSzamok.Length; i++)
{
    if (egeszSzamok[i] % 50 == 0)
    {
        szorzat = szorzat * egeszSzamok[i];
     }
}
if (szorzat != 1)
{
    Console.WriteLine("Az 50-nel osztható elemek szorzata: {0}", szorzat);
}
else
{
    Console.WriteLine("Nem voltak 50-nel osztható elemek!");
}

A minimumkeresés tétele

Egy tömbben keresd meg a legkisebb elemet,
és add meg az indexét. (While ciklussal is jó.)
int min = tomb[0];
int index = 0;
for (int i = 1; i < tomb.Length; i++)
{
    if (tomb[i] < min)
    {
        min = tomb[i];
        index = i;
    }
}
Console.WriteLine("A legkisebb elem a {0}. indexű helyen van, értéke: {1}", index, min);

A maximumkeresés tétele

Egy tömbben keresd meg a legnagyobb elemet,
és add meg az indexét. (While ciklussal is jó.)
int max = tomb[0];
int index = 0;
for (int i = 1; i < tomb.Length; i++)
{
    if (tomb[i] > max)
    {
        max = tomb[i];
        index = i;
    }
}
Console.WriteLine("A legnagyobb elem a {0}. indexű helyen van, értéke: {1}", index, max);