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