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