Informatika gyűjtemény

NézetNyomtat

kb_uzenet.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: utf-8
Méret: 2 KB
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace Uzenetek
{
    class Program
    {
        // egy adott zárójelen belül a vesszők száma+1 (nem számoljuk a "belső vesszőket").
        private int maxDirectConnection = 0; // A
        // "Legmélyebb pont"
        private int longestConnectionChain = 0; // B
        // név után [,] vagy [)] következik -> nincs kinek továbbadnia az üzenetet.
        private int pplAtEndOfChain = 0; // C
        private int currentDeepness = 0;
        private int[] peopleAtDeepness = new int[1000];

        public Program()
        {
            peopleAtDeepness[0] = 0;
            StreamReader ins = new StreamReader("uzenet5.be");
            StreamWriter outs = new StreamWriter("uzenet5.ki");
            string s = ins.ReadLine();
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] == '#')
                {
                    if (s[- 1] != ',' && s[- 1] != ')') pplAtEndOfChain++;
                    break;
                }
                switch( s[i] )
                {
                    case '(':
                        currentDeepness++;
                        if (currentDeepness > longestConnectionChain) longestConnectionChain = currentDeepness;
                        peopleAtDeepness[currentDeepness] = 0; // nullázunk
                        break;
                    case ')':
                        // egy adott mélységet befejezünk.
                        if (++peopleAtDeepness[currentDeepness] > maxDirectConnection)
                        {
                            maxDirectConnection = peopleAtDeepness[currentDeepness];
                        }
                        currentDeepness--;
                        break;
                    case ',':
                        peopleAtDeepness[currentDeepness]++;
                        break;
                    default:
                        if (s[+ 1] == ',' || s[+ 1] == ')') pplAtEndOfChain++;
                        break;
                }
            }

            outs.WriteLine(maxDirectConnection);
            outs.WriteLine(longestConnectionChain);
            outs.WriteLine(pplAtEndOfChain);
            outs.Close();
        }

        static void Main(string[] args)
        {
            new Program();
        }
    }
}
(Vissza)