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