Informatika gyűjtemény

Egy szinttel feljebb tb_folyok.cs

2004050607080910

NézetNyomtat

tb_folyok.cs (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 2 KB
using System;
using System.Text;

namespace Folyok
{
    class Folyo
    {
        public string nev = "Nincs";
        public Folyo hova = null;
        public System.Collections.ArrayList honnan = new System.Collections.ArrayList();

        public Folyo(string nev)
        {
            this.nev = nev;
        }

        public Folyo(string nev, Folyo hova)
        {
            this.nev = nev;
            this.hova = hova;
        }
    }

    class Program
    {
        const string InpFile = "folyo.be";
        const string OutFile = "folyo.ki";

        private int N;
        private string folyo;
        private System.IO.StreamWriter sw = new System.IO.StreamWriter(OutFile, false, Encoding.Default);
        private System.Collections.ArrayList tarolo = new System.Collections.ArrayList();
        private System.Collections.Hashtable folyok = new System.Collections.Hashtable();

        private void UjFolyo(string nev, string hova)
        {
            if (!(folyok.ContainsKey(hova))) {
                folyok.Add(hova, new Folyo(hova));
            }

            folyok.Add(nev, new Folyo(nev, (Folyo) folyok[hova]));
            ((Folyo) folyok[hova]).honnan.Add(folyok[nev]);
        }

        private void Beolvas()
        {
            string nev, hova;

            System.IO.StreamReader sr = new System.IO.StreamReader(InpFile, Encoding.Default);

            N = Convert.ToInt32(sr.ReadLine());
            for (int i = 0; i < N; i++) {
                nev = sr.ReadLine();
                hova = sr.ReadLine();
                UjFolyo(nev, hova);
            }
            folyo = sr.ReadLine();

            sr.Close();
        }

        private void RekurzioA(string nev)
        {
            foreach (Folyo f in ((Folyo) folyok[nev]).honnan) {
                RekurzioA(f.nev);
                tarolo.Add(f.nev);
            }
        }

        private void RekurzioB(string nev)
        {
            if (((Folyo) folyok[nev]).hova != null) {
                RekurzioB(((Folyo) folyok[nev]).hova.nev);
                tarolo.Add(((Folyo) folyok[nev]).hova.nev);
            }
        }

        private void KiirA()
        {
            tarolo.Clear();
            RekurzioA(folyo);

            sw.WriteLine(tarolo.Count);
            foreach (string s in tarolo) {
                sw.WriteLine(s);
            }
        }

        private void KiirB()
        {
            tarolo.Clear();
            RekurzioB(folyo);

            sw.WriteLine(tarolo.Count);
            foreach (string s in tarolo) {
                sw.WriteLine(s);
            }
            sw.Close();
        }

        public static void Main(string[] args)
        {
            Program program = new Program();
            program.Beolvas();
            program.KiirA();
            program.KiirB();
        }
    }
}
(Vissza)