2020.11.18. Informatikai verseny programozás feladat megoldása

using System;

using System.IO;

namespace InfoVerseny
{
    class MainClass
    {
        //Olvasd be a verseny.txt pontosvesszővel tagolt szövegfájlból az eredményeket.Használj két egymásbaágyazott ciklust a beolvasáskor.
        static int sor = 20;
        static int elem = 10;

        static int[,] eredmenyek = new int[sor, elem];

        static void beolvas()
        {
            int i = 0;
            string[] aktualisSor;

            StreamReader sr = new StreamReader("verseny.txt");

            while (!sr.EndOfStream)
            {
                aktualisSor = sr.ReadLine().Split(';');
                for (int x = 0; x < elem; x++)
                {
                    eredmenyek[i, x] = Convert.ToInt32(aktualisSor[x]);
                }
                i++;
            }

            sr.Close();
        }

        //Írd ki a képernyőre az értékeket táblázatos formában. (Formázáskor: {0,4})
        static void kiir()
        {
            for (int i = 0; i < sor; i++)
            {
                for (int x = 0; x < elem; x++)
                {
                    Console.Write("{0, 4}", eredmenyek[i, x]);
                }
                Console.WriteLine();
            }
            Console.WriteLine("\n");
        }

        //Ugyanezt a kiíró feladatot valósítsd meg, de az első sorba is írd ki a sorszámokat, meg a sorok elejére is.
        static void sorszamosKiiras()
        {
            Console.Write("     "); //3 db space (esztétika)

            //Oszlopok sorszáma
            for (int j = 0; j < elem; j++)
            {
                Console.Write("{0, 1}.  ", j + 1);
            }
            Console.WriteLine("\n");

            //Sorok sorszáma
            for (int i = 0; i < sor; i++)
            {
                Console.Write("{0}.", i + 1);
                for (int x = 0; x < elem; x++)
                {
                    Console.Write("{0, 4}", eredmenyek[i, x]);
                }
                Console.WriteLine();
            }

            Console.WriteLine("\n");
        }

        static void legjobbEredmeny()
        {
            //Hányas számú versenyző érte el a legjobb eredményt? Ne használj segéd tömböt a megoldáshoz.
            int sum;
            int pontszam = 0;
            int sorszam = -1;

            for (int i = 0; i < sor; i++)
            {
                sum = 0;
                for (int x = 0; x < elem; x++)
                {
                    sum += eredmenyek[i, x];
                }

                if (sum > pontszam)
                {
                    pontszam = sum;
                    sorszam = i + 1;
                }
            }

            Console.WriteLine("A {0}. szamu versenyzo erte el a legjobb eredmenyt {1} ponttal", sorszam, pontszam);
            Console.WriteLine("\n");
        }

        static void atlagAlatt()
        {

            //Átlag kiszámítása
            int[] versenyzoPontszam = new int[sor];
            int osszPontszam = 0;

            for (int i = 0; i < sor; i++)
            {
                for (int x = 0; x < elem; x++)
                {
                    versenyzoPontszam[i] += eredmenyek[i, x];
                    osszPontszam += eredmenyek[i, x];
                }
            }

            double atlag = osszPontszam / Convert.ToDouble(versenyzoPontszam.Length); //Átlag

            //Átlag alattiak vizsgálata
            Console.Write("Atlag alatt teljesito versenyzok sorszama: ");

            for (int i = 0; i < versenyzoPontszam.Length; i++)
            {
                if (versenyzoPontszam[i] < atlag) Console.Write("{0} ", i + 1);
            }
            Console.WriteLine("\n");
        }

        static void atlagAlattTombNelkul()
        {

        }

        static void legjobbanSikerult()
        {
            Console.Write("Hanyas szamu versenyzore vagy kivancsi? ");
            int sorszam = Convert.ToInt16(Console.ReadLine()) - 1;
            Console.WriteLine();

            int maxSorszam = -1;
            int maxPontszam = 0;

            for (int i = 0; i < elem; i++)
            {
                if (eredmenyek[sorszam, i] > maxPontszam)
                {
                    maxPontszam = eredmenyek[sorszam, i];
                    maxSorszam = i + 1;
                }
            }

            Console.WriteLine("A {0}. szamu versenyzo legjobban sikerult feladata a {1}. feladat", sorszam + 1, maxSorszam);
            Console.WriteLine("\n");
        }

        static void csillagTablazat()
        {
            string csillag = "*";
            string space = " ";

            for (int i = 0; i < sor; i++)
            {
                Console.Write("{0}.", i + 1);
                for (int x = 0; x < elem; x++)
                {
                    if (eredmenyek[i, x] == 10) Console.Write("{0, 4}", csillag);
                   
                    else Console.Write("{0, 4} ", space);
                }
                Console.WriteLine();
            }

            Console.WriteLine("\n");
        }

        static void csillagTablazatFajl()
        {
            string csillag = "*";
            string space = " ";

            StreamWriter sw = new StreamWriter("csillag.txt");

            for (int i = 0; i < sor; i++)
            {
          
                for (int x = 0; x < elem; x++)
                {
                    if (eredmenyek[i, x] == 10) sw.Write("{0, 4}", csillag);
                    else sw.Write("{0, 4} ", space);
                }
                sw.WriteLine();
            }
            sw.Close();
        }

        //Írjuk ki, hogy a 3. feladatnál mennyi volt a minimum pontszám.
        static void harmadikMinimum()
        {
            int min = eredmenyek[0, 2];

            for (int i = 1; i < sor; i++)
            {
                if (eredmenyek[i, 2] < min)
                {
                    min = eredmenyek[i, 2];
                }
            }

            Console.WriteLine("A minimum pontszam a 3. feladatnal: {0}", min);
        }

        public static void Main(string[] args)
        {
            beolvas();
            kiir();
            sorszamosKiiras();
            legjobbEredmeny();
            atlagAlatt();
            legjobbanSikerult();
            csillagTablazat();
            csillagTablazatFajl();
            harmadikMinimum();

            Console.ReadKey();
        }
    }
}
Kissé átalakítva, ha úgy tetszik, tanári verzió:

using System;
using System.IO;

namespace infoVerseny
{
    class program
    {
        //Olvasd be a verseny.txt pontosvesszővel tagolt szövegfájlból az eredményeket.
        //Használj két egymásbaágyazott ciklust a beolvasáskor.
        static int sor = 20;
        static int oszlop = 10;

        static int[,] eredmenyek = new int[sor, oszlop];

        static void beolvas()
        {
            int i = 0;
            string[] atmeneti;

            StreamReader sr = new StreamReader("verseny.txt");

            while (!sr.EndOfStream)
            {
                atmeneti = sr.ReadLine().Split(';');
                for (int j = 0; j < oszlop; j++)
                {
                    eredmenyek[i, j] = Convert.ToInt32(atmeneti[j]);
                }
                i++;
            }

            sr.Close();
        }

        //Írd ki a képernyőre az értékeket táblázatos formában. (Formázáskor: {0,4})
        static void kiir()
        {
            for (int i = 0; i < sor; i++)
            {
                for (int j = 0; j < oszlop; j++)
                {
                    Console.Write("{0, 4}", eredmenyek[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine("\n");
        }

        //Ugyanezt a kiíró feladatot valósítsd meg,
        //de az első sorba is írd ki a sorszámokat, meg a sorok elejére is.
        static void sorszamosKiiras()
        {
            Console.Write("   ");

            //Oszlopok sorszáma
            for (int j = 0; j < oszlop; j++)
            {
                Console.Write("{0,3}.", j + 1);
            }
            Console.WriteLine("\n");

            //Sorok sorszáma
            for (int i = 0; i < sor; i++)
            {
                Console.Write("{0}.", i + 1);
                for (int j = 0; j < oszlop; j++)
                {
                    Console.Write("{0,4}", eredmenyek[i, j]);
                }
                Console.WriteLine();
            }

            Console.WriteLine("\n");
        }

        static void legjobbEredmeny()
        {
            //Hányas számú versenyző érte el a legjobb eredményt?
            //Ne használj segéd tömböt a megoldáshoz.
            int osszeg;
            int max = 0;
            int sorszam = 0;

            for (int i = 0; i < sor; i++)
            {
                osszeg = 0;
                for (int j = 0; j < oszlop; j++)
                {
                    osszeg += eredmenyek[i, j];
                }

                if (osszeg > max)
                {
                    max = osszeg;
                    sorszam = i + 1;
                }
            }

            Console.WriteLine("A {0}. szamu versenyzo erte el a legjobb eredmenyt {1} ponttal", sorszam, max);
            Console.WriteLine("\n");
        }

        static void atlagAlatt()
        {

            //Átlag kiszámítása
            int[] versenyzoPontszam = new int[sor];
            int osszPontszam = 0;

            for (int i = 0; i < sor; i++)
            {
                for (int j = 0; j < oszlop; j++)
                {
                    versenyzoPontszam[i] += eredmenyek[i, j]; //egyből a tömbelemben gyűjtjük az összeget;
                    osszPontszam += eredmenyek[i, j];
                }
            }

            double atlag = osszPontszam / (double)sor; //Átlag

            //Átlag alattiak vizsgálata
            Console.Write("Atlag alatt teljesito versenyzok sorszama: ");

            for (int i = 0; i < versenyzoPontszam.Length; i++)
            {
                if (versenyzoPontszam[i] < atlag) Console.Write("{0} ", i + 1);
            }
            Console.WriteLine("\n");
        }


        static void legjobbanSikerult()
        {
            Console.Write("Hanyas szamu versenyzore vagy kivancsi? ");
            int sorszam = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            int maxSorszam = 0;
            int maxPontszam = 0;

            for (int i = 0; i < oszlop; i++)
            {
                if (eredmenyek[sorszam-1, i] > maxPontszam)
                {
                    maxPontszam = eredmenyek[sorszam-1, i];
                    maxSorszam = i + 1;
                }
            }

            Console.WriteLine("A {0}. szamu versenyzo legjobban sikerult feladata a {1}. feladat", sorszam, maxSorszam);
            Console.WriteLine("\n");
        }

        static void csillagTablazat()
        {
            string csillag = "*";
            string space = " ";

            for (int i = 0; i < sor; i++)
            {
                Console.Write("{0}.", i + 1);
                for (int x = 0; x < oszlop; x++)
                {
                    if (eredmenyek[i, x] == 10) Console.Write("{0,4}", csillag);
                 
                    else Console.Write("{0,4} ", space);
                }
                Console.WriteLine();
            }

            Console.WriteLine("\n");
        }

        static void csillagTablazatFajl()
        {
            string csillag = "*";
            string space = " ";

            StreamWriter sw = new StreamWriter("csillag.txt");

            for (int i = 0; i < sor; i++)
            {
                sw.Write("{0}.", i + 1);        
                for (int x = 0; x < oszlop; x++)
                {
                    if (eredmenyek[i, x] == 10) sw.Write("{0,4}", csillag);
                    else sw.Write("{0,4} ", space);
                }
                sw.WriteLine();
            }
            sw.Close();
        }

        //Írjuk ki, hogy a 3. feladatnál mennyi volt a minimum pontszám.
        static void harmadikMinimum()
        {
            int min = eredmenyek[0, 2];

            for (int i = 1; i < sor; i++)
            {
                if (eredmenyek[i, 2] < min)
                {
                    min = eredmenyek[i, 2];
                }
            }

            Console.WriteLine("A minimum pontszam a 3. feladatnal: {0}", min);
        }

        public static void Main(string[] args)
        {
            beolvas();
            Console.WriteLine("2. feladat");
            kiir();
            Console.WriteLine("3. feladat");
            sorszamosKiiras();
            Console.WriteLine("4. feladat");
            legjobbEredmeny();
            Console.WriteLine("5. feladat");
            atlagAlatt();
            Console.WriteLine("6. feladat");
            legjobbanSikerult();
            Console.WriteLine("7. feladat");
            csillagTablazat();
            csillagTablazatFajl();
            Console.WriteLine("9. feladat");

            harmadikMinimum();
            Console.ReadLine();
        }
    }

}
 }

Megjegyzések