2022. február 17., csütörtök

2022.02.17. Programozás - Almatermelés feladat

Elkezdtük a lenti feladatot. Házi feladat befejezni hétfőre.

 Feladat: alma termelés

-        Egyes országok több éven keresztül mért adataival kell dolgoznod. Ezek az adatok megmutatják, hogy az adott ország mennyi almát termelt az adott évben. Az adatok ezer tonnában vannak megadva. A megoldáshoz segítségül használd az alma.xlsx-et. (Kötelező!)

-        A feladatokat úgy oldd meg, hogy hasonló szerkezetű, de konkrétan más adatokat tartalmazó szövegfájl esetén is jól működjenek.

-        Minden feladatot külön metódusban oldj meg, a metódus neve tartalmazza a feladat sorszámát valamilyen formában.

-        Nincs szükség arra, hogy kiírd a feladat sorszámát a képernyőre, továbbá semmilyen magyarázó szöveget se kell kiírni, csak magukat az adatokat – ha a feladat nem kér mást.

-    A feladatok a következők:

1.       Olvasd be a mellékelt alma.txt pontosvesszővel tagolt fájlból az összes adatot egy listába, aminek minden sora egy objektumpéldány. A fájlnak 52 sora van:

a.       ország neve;

b.       egy mező, ami megmutatja, hogy az ország az Európai Unió tagja-e;

A mező értékei:

tag: EU

nem tag: NO

c.       7 számadat, ami 2011 és 2017 között mutatja a termelési adatokat. Ezeket a számokat tárold az osztályon belül egy újabb listában.

2.       Írd ki az adatokat a képernyőre a tanult módon táblázatos formában.

3.       Egy új listában tárold minden ország 7 éves össz-termelését.

4.       A 3. feladat listájának segítségével írd ki a képernyőre annak az országnak a nevét, ahol a legtöbb almát termelték a 7 év alatt.

5.       2012-ben előfordult-e, hogy 10 ezer tonna alatt termelt valamelyik ország? Ha volt, írd ki az első ilyen ország nevét, ha nem volt, írj ki hibaüzenetet. (Az adatok ezer tonnában vannak megadva.)

6.       Írd ki a képernyőre, hogy hány európai uniós ország érte el az európai átlagot? (Ehhez használhatod a 3. feladatban létrehozott listát.)

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

namespace _20220217alma
{
    public class Alma
    {
        public string nev;
        public bool tag;
        public List<double> adat;

        public Alma(string sor)
        {
            List<string> atmeneti = sor.Split(';').ToList();
            nev = atmeneti[0];
            if (atmeneti[1] == "EU")
            {
                tag = true;
            }
            else
            {
                tag = false;
            }
            adat = new List<double>();
            for (int i = 2; i < atmeneti.Count; i++)
            {
                adat.Add(Convert.ToDouble(atmeneti[i]));
            }
        }
        public void kiir()
        {
            Console.WriteLine("Ország neve: " + nev);
            Console.WriteLine("Tagja-e az EU-nak: " + tag);
            Console.WriteLine("2011 és 2017 között mutatja a termelési adatokat.");
            for (int i = 0; i < adat.Count; i++)
            {
                Console.WriteLine(adat[i]);
            }
        }
    }
    class Program
    {
        static void feladat3(List<Alma> a, List<double> b)
        {
            double osszeg = 0;
            for (int i = 0; i < a.Count; i++)
            {
                osszeg = a[i].adat.Sum();
                b.Add(osszeg);
            }
        }
        static int feladat4(List<double> max)
        {
            int index = 0;
            double maximum = max[0];
            for (int i = 0; i < max.Count; i++)
            {
                if (max[i] > maximum)
                {
                    maximum = max[i];
                    index = i;
                }
            }
            return index;
        }
        static void feladat5(List<Alma> f5)
        {
            int f = 0;
            bool van = false;
            while (f < f5.Count && !van)
            {
                if ((f5[f].adat[1] * 1000) < 10000)
                {
                    van = true;
                }
                f++;
            }
            if (van)
            {
                Console.WriteLine("{0}", f5[f - 1].nev);
            }
            else
            {
                Console.WriteLine("Nincs");
            }
        }
        static void feladat6(List<Alma> f6, List<double> l6)
        {
            double atlag = 0;
            for (int i = 0; i < l6.Count; i++)
            {
                atlag += l6[i];
            }
            atlag = (atlag / l6.Count);
            int db = 0;
            for (int i = 0; i < l6.Count; i++)
            {
                if (l6[i] < atlag)
                {
                    db++;
                }
            }
            Console.WriteLine("{0} ország nem érte el az átlagot!",db);
        }

        static void Main(string[] args)
        {
            List<Alma> teljesalma = new List<Alma>();
            foreach (var i in File.ReadAllLines("alma.txt"))
            {
                teljesalma.Add(new Alma(i));
            }
            for (int i = 0; i < teljesalma.Count; i++)
            {
                teljesalma[i].kiir();
                Console.WriteLine();
            }
            //3.       Egy új listában tárold minden ország 7 éves össz-termelését.
            List<double> ossztermeles = new List<double>();
            feladat3(teljesalma, ossztermeles);
            //A 3. feladat listájának segítségével írd ki a képernyőre annak az országnak a nevét, ahol a legtöbb almát termelték a 7 év alatt.
            int a = feladat4(ossztermeles);
            Console.WriteLine(teljesalma[a].nev);
            //2012-ben előfordult-e, hogy 10 ezer tonna alatt termelt valamelyik ország? Ha volt, írd ki az első ilyen ország nevét, ha nem volt, írj ki hibaüzenetet. (Az adatok ezer tonnában vannak megadva.)
            feladat5(teljesalma);
            //Írd ki a képernyőre, hogy hány európai uniós ország érte el az európai átlagot? (Ehhez használhatod a 3. feladatban létrehozott listát.)
            feladat6(teljesalma, ossztermeles);
            Console.ReadLine();
        }
    }
}



Nincsenek megjegyzések:

Megjegyzés küldése