9. oldal / 11
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