Tamás Ferenc: Programozási tételek 2. rész

Az 1. részhez kattintson IDE!
A 3. részhez kattintson IDE!

A 2. rész tartalma:

11. tétel: Szótagszámlálás
12. tétel: Sorba rendezés
13. tétel: Sorba rendezés fájlból
14. tétel: Kiválogatás
15. tétel: Statisztika fájlból (1.) - jegyek átlaga
16. tétel: Statisztika fájlból (2.) - tantárgyi átlagok
17. tétel: Statisztika fájlból (3.) - jegyek megszámolása
18. tétel: Statisztika fájlból (4.) - vércukor
19. tétel: Határérték fájlból
20. tétel: Szószámlálás fájlból
 


11. tétel: Szótagszám

Feladat: Egy-egy dalszövegnél időnként szükség van arra, hogy soronként hány szótagból áll egy dalszöveg. Szöveges felületen írjon egy programot, amely beolvas egy DAL.TXT állományt soronként, majd kiírja minden egyes sor elé kiírja, hogy hány szótagból áll.
Feltételezheti, hogy a fájl létezik és legalább 1 sor van benne. A szöveg minden karaktere kisbetűs és az egész szöveg UTF-8 kódolású. A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace 11tetel
{
    class Program
    {
        static void Main(string[] args)
        {
            //11. tétel: Szótagszám
            StreamReader bevisz = new StreamReader("DAL.TXT", System.Text.Encoding.UTF8);
            string s;           //Segédváltozó
            int szamol;         //Soronkénti szótagszám
            do
            {
                s = bevisz.ReadLine();
                szamol = 0;
                for (int i = 0; i < s.Length; i++)
                {
                    if ((s[i]=='a') || (s[i] == 'á') || (s[i] == 'e') || (s[i] == 'é') || (s[i] == 'i') || (s[i] == 'í') || (s[i] == 'o') || (s[i] == 'ó') || (s[i] == 'ö') || (s[i] == 'ő') || (s[i] == 'u') || (s[i] == 'ú') || (s[i] == 'ü') || (s[i] == 'ű'))
                        //Ezt listával is meg lehetne oldani, de ez így egyszerűbb (és csúnyább is)
                    {
                        szamol++;
                    }
                }
                Console.Write("{0}: ",szamol);
                Console.WriteLine(s);
            } while (!bevisz.EndOfStream);
            bevisz.Close();


            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}
//A megoldás hibája: csak a kisbetűket számolja össze. HA a Vagy-okat bővítjük, akkor jöhetnek a nagybetűk is. 

A DAL.TXT egyik lehetséges forrása:

T. Tamás Ferenc: Parti-himnusz

Lassan gyűlik a mulatni vágyó jónép,
Mint ezerszínű, tarka-barka mozgókép.
Csillogó ruhás nők pompáznak fényesen,
Lépkednek a buliba ál-szemérmesen.
Mulatni készül itt a gyülevész népség,
Itt már senkinek sem cél mértékletesség.
A józanság mértékét rég összetépték,
Senkinek sem kell immár az álszerénység!
Tárva-nyitva a kapu, beengedték az őrülteket,
Körbeadják mindenkinek a teli rumosüveget, 
Kivillanó formás combok diktálják a vad ütemet,
A parti éjszakáján érezd át az önkívületet!

A bombanő csakis a tükörnek pózol,
A magányos srác mindenkinek hajbókol,
Az időjós hamisan előre jósol,
A vad hódító szemérmesen behódol.
Az őrület éjszakáján mindent szabad,
Itt kiélheted vadító vágyaidat.
Szakítsd le magadról az angyalszárnyakat
És növeszd ki a vörös ördögszarvakat! 
Tárva-nyitva a kapu, beengedték az őrülteket,
Körbeadják mindenkinek a teli rumosüveget, 
Kivillanó formás combok diktálják a vad ütemet,
A parti éjszakáján érezd át az önkívületet!

Mikor a víg éjszaka csúcspontjára hág,
Középre pattan a rég elfeledett sztár,
Hamisan énekel, mint béna kismadár,
Aztán hamvába hullik, mint egy tűzmadár. 
Gyomrodban érezd a zene vad ritmusát!
Dúdolgasd az őrjöngő dalok rigmusát!
Itt nem a józanság a követendő cél,
Ördögibb legyél a legrosszabb ördögnél!
Tárva-nyitva a kapu, beengedték az őrülteket,
Körbeadják mindenkinek a teli rumosüveget, 
Kivillanó formás combok diktálják a vad ütemet,
A parti éjszakáján érezd át az önkívületet!

12. tétel: Sorba rendezés

Feladat: Írjon egy programot szöveges környezetben, mely eltárol a fájlban megadott 10 egész számot. A számok 1 és 50 közöttiek lehetnek. Írja ki a képernyőre, hogy hány számot talált, majd rendezze sorba a beolvasott számokat, majd írja ki először növekvő, majd csökkenő sorrendben a képernyőre!
A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 12tetel
{
    class Program
    {
        static void Main(string[] args)
        {
            //12. tétel: Sorba rendezés
            int[] szam = new int[] { 2, 0, 2, 2, 0, 7, 1, 1, 8, 36 };
            Console.WriteLine("Beolvasva {0} db szám.\n", szam.Length);
            Array.Sort(szam);       //Sorba rakjuk a vektort.
            //for (int i = 0; i < szamol; i++)
            Console.Write("Növekvő sorrend: ");
            foreach (var i in szam)
            {
                Console.Write("{0} ",i);
            }
            Console.WriteLine("\n");
            Array.Reverse(szam);    //Fordított sorba rendez
            Console.Write("Csökkenő sorrend: ");
            foreach (var i in szam)
            {
                Console.Write("{0} ", i);
            }
            Console.WriteLine("\n");

            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

A számok lehetnek a következők:

2, 0, 2, 2, 0, 7, 1, 1, 8, 36.

13. tétel: Sorba rendezés fájlból

Feladat: Írjon egy programot szöveges környezetben, mely beolvas az ADAT.TXT fájlból max. 100 egész számot. Csak a nem 0 számokkal foglalkozzon (a 0-kat nem kell eltárolni)! Írja ki a képernyőre, hogy hány számot talált, majd rendezze növekvő sorba a beolvasott számokat!
Feltételezheti, hogy a fájl létezik, legalább 1 szám van benne és az adatok csak egész számokat tartalmazhatnak, valamint minden egyes szám új sorban van. A beolvasott szám is biztosan egész lesz. A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace 13tetel
{
    class Program
    {
        static void Main(string[] args)
        {
            //13. tétel: Sorba rendezés fájlból
            StreamReader bevisz = new StreamReader("ADAT.TXT");
            int[] szam = new int[100];      //Ebben tároljuk el a beolvasott számokat
            int darab = 0;                  //Beolvasott számok darabszáma
            string s;               //Beolvasáshoz segédváltozó
            do
            {
                s = bevisz.ReadLine();
                szam[darab] = Convert.ToInt32(s);
                if (szam[darab] != 0)
                {
                    darab++;        //Csak akkor kell eltárolni, ha nem 0 a szám.
                }
            }
            while (!bevisz.EndOfStream);
            bevisz.Close();             //Fájl bezárása
            Console.WriteLine("Beolvasott, nem 0 számok: {0} darab.\n",darab);
            
            Array.Sort(szam);       //Növekvő sorba rendezi. 
            foreach (var i in szam)
            {
                if (i != 0)
                {
                    Console.Write("{0} ", i);
                }
            }
            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

Az ADAT.TXT fájl egy lehetséges tartalma:
Lásd az 5. tételnél!


14. tétel: Kiválogatás

Feladat: Írjon egy programot szöveges környezetben, mely véletlenszerűen generál 100 darab egész számot 1 és 50 között (a határokat is beleértve). Írja ki a képernyőre a generált számokat, majd a 10-nél nagyobb egészeket írja ki a KIMENET.TXT fájlba.
A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace 14tetel
{
    class Program
    {
        static void Main(string[] args)
        {
            //14. tétel: Kiválogatás
            const int utolso = 100;
            Random r1 = new Random();           //Véletlenszám objektum a rendszeridőből generálva.
            int[] szam = new int[utolso];       //Ebben tároljuk el a generált számokat
            Console.WriteLine("A generált számok: ");
            for (int i = 0; i < utolso; i++)
            {
                szam[i] = r1.Next(1, 51);
                Console.Write("{0} ", szam[i]);
            }
            Console.WriteLine("\n");
            StreamWriter kiir = new StreamWriter("KIMENET.TXT");
            //Létrehozza a fájlt a kért névvel. Ha már van ilyen, akkor fölülírja.
            for (int i = 0; i < utolso; i++)
            {
                if (szam[i]>10)
                {
                    kiir.WriteLine("{0}", szam[i]);
                }
            }
            kiir.Close();           //Ez lezárja a fájlt

            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

15. tétel: Statisztika fájlból (1.)

Feladat: Írjon egy programot szöveges környezetben, mely beolvas az ERETTS.TXT fájlból adatsorokat. 1 adatsor 1 sorból olvasható. Minden adatsor a következőket tartalmazza: tanuló neve, magyar jegy, matematika jegy, történelem jegy, angol jegy, D.K. jegy. Az egyes adatok vesszővel vannak elválasztva.
Írja ki a képernyőre, hogy hány tanulót olvasott be és minden névhez írja ki a jegyek átlagát két tizedes jegy pontossággal.
Feltételezheti, hogy a fájl létezik, legalább 1 sor van benne, maximum 20 adatsor várható. Az adatok valódiságát nem kell ellenőriznie. A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace 15tetel
{
    class Program
    {
        struct tanulo       //Így könnyebb lesz eltárolni a beolvasott adatokat
        {
            public string nev;
            public int magyar;
            public int matek;
            public int tori;
            public int angol;
            public int dk;
        }

        static void Main(string[] args)
        {
            //15. tétel: Statisztika fájlból (1.)
            StreamReader bevisz = new StreamReader("ERETTS.TXT");
            tanulo[] ember = new tanulo[20];
            string s;               //Beolvasáshoz segédváltozó
            int szamol=0;           //Adatsorokat számolja meg. 
            string[] reszek = new string[6];        //Tördeléshez ideális segítség
            do
            {
                szamol++;
                s = bevisz.ReadLine();
                reszek = s.Split(',');
                ember[szamol].nev = reszek[0];
                ember[szamol].magyar = Convert.ToInt32(reszek[1]);
                ember[szamol].matek = Convert.ToInt32(reszek[2]);
                ember[szamol].tori = Convert.ToInt32(reszek[3]);
                ember[szamol].angol = Convert.ToInt32(reszek[4]);
                ember[szamol].dk = Convert.ToInt32(reszek[5]);
            }   
            while (!bevisz.EndOfStream);
     bevisz.Close();
            Console.WriteLine("Beolvasott tanulók száma: {0}",szamol);
            Console.WriteLine("Nevek és átlagok:");
            int ossz;     //Átlagszámításhoz használt változó
            for (int i = 1; i <=szamol; i++)
            {
                Console.Write("{0} :",ember[i].nev);
                ossz = ember[i].magyar + ember[i].matek + ember[i].tori + ember[i].angol + ember[i].dk;
                Console.WriteLine(" {0,4:.00}",(float)ossz/5);
            }
            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

Az ERETTS.TXT fájl egy lehetséges tartalma:

B.Zs., 2,2,4,3,5
B.B.J., 4,2,3,4,4
F.M., 2,2,3,2,4
J.M., 4,4,4,5,5
J.A., 3,3,3,4,3
K.M.Zs., 2,3,4,4,5
K.P., 4,3,4,5,5
N.K., 4,4,4,5,4

16. tétel: Statisztika fájlból (2.)

Feladat: Írjon egy programot szöveges környezetben, mely beolvas az ERETTS.TXT fájlból adatsorokat. 1 adatsor 1 sorból olvasható. Minden adatsor a következőket tartalmazza: tanuló neve, magyar jegy, matematika jegy, történelem jegy, angol jegy, D.K. jegy. Az egyes adatok vesszővel vannak elválasztva.
Írja ki a képernyőre, hogy hány tanulót olvasott be és minden tárgyhoz írja ki az átlagot!
Feltételezheti, hogy a fájl létezik, legalább 1 sor van benne, maximum 20 adatsor várható. Az adatok valódiságát nem kell ellenőriznie. A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace 16tetel
{
    class Program
    {
        struct tanulo       //Így könnyebb lesz eltárolni a beolvasott adatokat
        {
            public string nev;
            public int magyar;
            public int matek;
            public int tori;
            public int angol;
            public int dk;
        }

        static void Main(string[] args)
        {
            // 16. tétel: Statisztika fájlból (2.)
            StreamReader bevisz = new StreamReader("ERETTS.TXT");
            tanulo[] ember = new tanulo[20];
            tanulo osszes;      //Összesítéshez használt változó
            osszes.magyar = 0;
            osszes.matek = 0;
            osszes.tori = 0;
            osszes.angol = 0;
            osszes.dk = 0;
            string s;               //Beolvasáshoz segédváltozó
            int szamol=0;           //Adatsorokat számolja meg. 
            string[] reszek = new string[6];        //Tördeléshez ideális segítség
            do
            {
                szamol++;
                s = bevisz.ReadLine();
                reszek = s.Split(',');
                ember[szamol].nev = reszek[0];
                ember[szamol].magyar = Convert.ToInt32(reszek[1]);
                osszes.magyar += ember[szamol].magyar;
                ember[szamol].matek = Convert.ToInt32(reszek[2]);
                osszes.matek += ember[szamol].matek;
                ember[szamol].tori = Convert.ToInt32(reszek[3]);
                osszes.tori += ember[szamol].tori;
                ember[szamol].angol = Convert.ToInt32(reszek[4]);
                osszes.angol += ember[szamol].angol;
                ember[szamol].dk = Convert.ToInt32(reszek[5]);
                osszes.dk += ember[szamol].dk;
            }   
            while (!bevisz.EndOfStream);
     bevisz.Close();
            Console.WriteLine("Beolvasott tanulók száma: {0}",szamol);
            Console.WriteLine("Tantárgyak és átlagok:");
            Console.WriteLine("Magyar átlag: {0,4:.00}", (float)osszes.magyar/szamol);
            Console.WriteLine("Matematika átlag: {0,4:.00}", (float)osszes.matek/szamol);
            Console.WriteLine("Történelem átlag: {0,4:.00}", (float)osszes.tori/szamol);
            Console.WriteLine("Angol átlag: {0,4:.00}", (float)osszes.angol/szamol);
            Console.WriteLine("D.K. átlag: {0,4:.00}", (float)osszes.dk/szamol);
            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

Az ERETTS.TXT fájl egy lehetséges tartalma:
Lásd a 15. tételnél!


17. tétel: Statisztika fájlból (3.)

Feladat: Írjon egy programot szöveges környezetben, mely beolvas az ERETTS.TXT fájlból adatsorokat. 1 adatsor 1 sorból olvasható. Minden adatsor a következőket tartalmazza: tanuló neve, magyar jegy, matematika jegy, történelem jegy, angol jegy, D.K. jegy. Az egyes adatok vesszővel vannak elválasztva.
Írja ki a képernyőre, hogy hány tanulót olvasott be és számolja meg, hogy hány darab jeles, jó, közepes, elégséges, illetve elégtelen született összesen!
Feltételezheti, hogy a fájl létezik, legalább 1 sor van benne, maximum 20 adatsor várható. Az adatok valódiságát nem kell ellenőriznie. A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace B17tetel
{
    class Program
    {
        static void hozzaad(tanulo ezt)
        {

        }

        struct tanulo       //Így könnyebb lesz eltárolni a beolvasott adatokat
        {
            public string nev;
            public int magyar;
            public int matek;
            public int tori;
            public int angol;
            public int dk;
        }
        
        static void Main(string[] args)
        {
            // 17. tétel: Statisztika fájlból (3.)
            StreamReader bevisz = new StreamReader("ERETTS.TXT");
            tanulo[] ember = new tanulo[20];
            string s;               //Beolvasáshoz segédváltozó
            int[] darab = new int[6];       //Ebben számoljuk meg a jegyek darabszámát.
            for (int i = 1; i <=5; i++)
            {
                darab[i] = 0;       //Kinullázzuk a jegyek darabszámát.
            }
            int szamol=0;           //Adatsorokat számolja meg. 
            int j;      //Ideiglenes változó
            string[] reszek = new string[6];        //Tördeléshez ideális segítség
            do
            {
                szamol++;
                s = bevisz.ReadLine();
                reszek = s.Split(',');
                ember[szamol].nev = reszek[0];
                /*ember[szamol].magyar = Convert.ToInt32(reszek[1]);        
//Ez most felesleges rész!
                ember[szamol].matek = Convert.ToInt32(reszek[2]);
                ember[szamol].tori = Convert.ToInt32(reszek[3]);
                ember[szamol].angol = Convert.ToInt32(reszek[4]);
                ember[szamol].dk = Convert.ToInt32(reszek[5]);*/
                for (int i = 1; i <=5; i++)
                {
                    j = Convert.ToInt32(reszek[i]);         //Átkonvertáljuk a jegyet
                    darab[j]++;             //Eggyel több darab van belőle
                }
            }   
            while (!bevisz.EndOfStream);
     bevisz.Close();
            Console.WriteLine("Beolvasott tanulók száma: {0}",szamol);
            Console.WriteLine("Érdemjegyek és számuk:");
            for (int i = 1; i <=5; i++)
            {
                Console.WriteLine("Jegy: {0} Darabszám: {1,3}",i,darab[i]);
            }
            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

Az ERETTS.TXT fájl egy lehetséges tartalma:
Lásd a 15. tételnél!

18. tétel: Statisztika fájlból (4.)

Feladat: Írjon egy programot szöveges környezetben, mely beolvas a VERCUKOR.TXT fájlból adatsorokat. 1 adatsor 1 sorból olvasható. Minden adatsor a következőket tartalmazza: mérés dátuma, a hét napja, napszak, mért érték (ponttal elválasztva). Az egyes adatok üres hellyel vannak elválasztva.
Írja ki a képernyőre, hogy hány mérés történt! Zárja ki az adatsorból a 15 feletti téves mérést! Írja ki a mért értékek átlagát is!
Feltételezheti, hogy a fájl létezik, legalább 1 sor van benne, maximum 100 adatsor várható. Az adatok valódiságát nem kell ellenőriznie. A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace 18tetel
{
    class Program
    {
        struct meres       //Így könnyebb lesz eltárolni a beolvasott adatokat
        {
            public string datum;
            public string hetnapja;
            public string napszak;
            public float ertek;
        }
        
        static void Main(string[] args)
        {
            // 18. tétel: Statisztika fájlból (4.)
            StreamReader bevisz = new StreamReader("VERCUKOR.TXT");
            meres[] adat = new meres[100];
            string s;               //Beolvasáshoz segédváltozó
            int szamol=0;           //Adatsorokat számolja meg. 
            string[] reszek = new string[6];        //Tördeléshez ideális segítség
            do
            {
                szamol++;
                s = bevisz.ReadLine();
                reszek = s.Split(' ');
                adat[szamol].datum = reszek[0];
                adat[szamol].hetnapja = reszek[1];
                adat[szamol].napszak = reszek[2];
                s = reszek[3];
                adat[szamol].ertek = float.Parse(s, System.Globalization.CultureInfo.InvariantCulture);
                if (adat[szamol].ertek>15)
                {
                    szamol--;       //Ezzel érvénytelenítjük a téves beolvasás miatti túl nagy értéket.
                }
            }   
            while (!bevisz.EndOfStream);
     bevisz.Close();
            Console.WriteLine("\nBeolvasott mérések száma: {0}",szamol);
            float osszeg = 0;       //Összegzéshez használt változó
            for (int i = 1; i <=szamol; i++)
            {
                osszeg += adat[i].ertek;
            }
            Console.WriteLine("Mért értékek átlaga: {0,4:.00}",osszeg/szamol);
            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

A VERCUKOR.TXT fájl egy lehetséges tartalma:

2022.01.02., v. du. 6.1
2022.01.04., k. du. 5.2
2022.01.07., p. du. 5.5
2022.01.10., h. du. 5.9
2022.01.13., cs. du. 5.3
2022.01.16., v. du. 6.9
2022.01.18., k. du. 4.9
2022.01.21., p. du. 5.5
2022.01.23., v. du. 5.8
2022.01.25., k. du. 6.0
2022.01.29., szo. du. 5.0
2022.02.02., sze. du. 5.3
2022.02.03., cs. du. 16.1
2022.02.04., p. du. 5.8
2022.02.06., v. du. 5.4
2022.02.09., sze. du. 5.3
2022.02.12., szo. du. 5.1
2022.02.16., sze. du. 4.9
2022.02.20., v. du. 6.2
2022.02.23., sze. du. 5.4
2022.02.28., h. du. 5.0
2022.03.03., cs. du. 5.0
2022.03.07., h. du. 5.9
2022.03.10., cs. du. 5.4
2022.03.12., szo. du. 5.9
2022.03.16., k. du. 5.6
2022.03.18., p. du. 4.9
2022.03.22., k. du. 6.1
2022.03.24., cs. du. 5.3
2022.03.28., h. du. 5.7
2022.03.31., cs. du. 6.2
2022.04.04.. h. du. 5.5
2022.04.08., p. du. 5.2
2022.04.11., h. du. 5.8
2022.04.14., cs, du. 5.0
2022.04.15., p. du. 5.5
2022.04.19., k. du. 5.4
2022.04.22., p. du. 5.5
2022.04.25., h. du. 6.2
2022.04.27., sze. du. 5.2

19. tétel: Határérték fájlból

Feladat: Írjon egy programot szöveges környezetben, mely beolvas a VERCUKOR.TXT fájlból adatsorokat. 1 adatsor 1 sorból olvasható. Minden adatsor a következőket tartalmazza: mérés dátuma, a hét napja, napszak, mért érték (ponttal elválasztva). Az egyes adatok üres hellyel vannak elválasztva.
Írja ki a képernyőre, hogy hány mérés történt! Zárja ki az adatsorból a 15 feletti téves mérést! Írja ki a mért értékek közül a legkisebbet és a legnagyobbat is!
Feltételezheti, hogy a fájl létezik, legalább 1 sor van benne, maximum 100 adatsor várható. Az adatok valódiságát nem kell ellenőriznie. A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace 19tetel
{
    class Program
    {
        struct meres       //Így könnyebb lesz eltárolni a beolvasott adatokat
        {
            public string datum;
            public string hetnapja;
            public string napszak;
            public float ertek;
        }
        
        static void Main(string[] args)
        {
            // 19. tétel: Határérték fájlból
            StreamReader bevisz = new StreamReader("VERCUKOR.TXT");
            meres[] adat = new meres[100];
            string s;               //Beolvasáshoz segédváltozó
            int szamol=0;           //Adatsorokat számolja meg. 
            string[] reszek = new string[6];        //Tördeléshez ideális segítség
            do
            {
                szamol++;
                s = bevisz.ReadLine();
                reszek = s.Split(' ');
                adat[szamol].datum = reszek[0];
                adat[szamol].hetnapja = reszek[1];
                adat[szamol].napszak = reszek[2];
                s = reszek[3];
                adat[szamol].ertek = float.Parse(s, System.Globalization.CultureInfo.InvariantCulture);
                if (adat[szamol].ertek>15)
                {
                    szamol--;       //Ezzel érvénytelenítjük a téves beolvasás miatti túl nagy értéket.
                }
            }   
            while (!bevisz.EndOfStream);
     bevisz.Close();
            Console.WriteLine("\nBeolvasott mérések száma: {0}",szamol);
            float minimum = adat[1].ertek;      //Minimális mért érték
            float maximum = adat[1].ertek;      //Maximális mért érték
            for (int i = 2; i <=szamol; i++)
            {
                if (adat[i].ertek<minimum)
                {
                    minimum = adat[i].ertek;
                }
                if (adat[i].ertek>maximum)
                {
                    maximum = adat[i].ertek;
                }
            }
            Console.WriteLine("Legkisebb mért érték : {0}", minimum);
            Console.WriteLine("Legnagyobb mért érték: {0}", maximum);
            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

A VERCUKOR.TXT fájl egy lehetséges tartalma:
Lásd a 18. tételnél!


20. tétel: Szószámlálás fájlból

Feladat: Az újságírók gyakran a leadott cikk szavainak száma alapján kapják a fizetésüket. Írjon egy programot szöveges környezetben, mely beolvassa a SZOVEG1.TXT fájlt, majd megszámolja és kiírja, hogy összesen hány szó van a szövegben. Feltételezheti, hogy a szöveg maximum 1000 szóból áll. Számolja meg, tovább írja ki azt is, hogy összesen hány karakter van a szövegben!
Feltételezheti, hogy a fájl létezik és legalább 5 szó van benne. A működő programot és a kódot mutassa be tanárának!

Egy lehetséges megoldás Visual C# nyelven:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;            //Ez kell a fájlműveletekhez

namespace 20tetel
{
    class Program
    {
       
        static void Main(string[] args)
        {
            // 20. tétel: Szószámlálás fájlból
            StreamReader bevisz = new StreamReader("SZOVEG1.TXT");
            string s;           //Beolvasáshoz szükséges segédváltozó
            string[] szo = new string[1000];
            int karszam = 0;        //Karakterek száma
            int szoszam = 0;        //Szavak száma
            do
            {
                s = bevisz.ReadLine();
                szo = s.Split(' ');
                karszam = karszam + s.Length + 1;      
        //Ezt azért kell hozzáadással megcsinálni, mert lehet, hogy a szöveg több bekezdésből áll.
                szoszam = szoszam + szo.Length + 1;
            }   
            while (!bevisz.EndOfStream);
            bevisz.Close();
            Console.WriteLine("A bevitt szöveg karaktereinek száma: {0}",karszam);
            Console.WriteLine("A bevitt szöveg szavainak száma: {0}",szoszam);
            Console.WriteLine("\n\nA program futása véget ért!");
        }
    }
}

A SZOVEG1.TXT fájl egy lehetséges tartalma:

Bármilyen szöveg, bárhonnan. 
Lényeges, hogy több bekezdésből álljon.


A folytatáshoz kattintson IDE!