Example #1
0
        /// <summary>
        /// Permite fazer a leitura de um vector a partir de texto.
        /// </summary>
        /// <param name="lines">O tamanho do vector.</param>
        /// <param name="vectorString">O texto que representa o vector.</param>
        /// <returns>O vector.</returns>
        public IMathVector <double> ReadVector(int length, string vectorString)
        {
            var integerParser      = new DoubleExpressionParser();
            var vectorFactory      = new ArrayVectorFactory <double>();
            var reader             = new StringReader(vectorString);
            var stringSymbolReader = new StringSymbolReader(reader, false);
            var vectorReader       = new ConfigVectorReader <double, string, string, CharSymbolReader <string> >(
                length,
                vectorFactory);

            vectorReader.MapInternalDelimiters("left_bracket", "right_bracket");
            vectorReader.AddBlanckSymbolType("blancks");
            vectorReader.SeparatorSymbType = "comma";

            var vector = default(IMathVector <double>);

            if (vectorReader.TryParseVector(stringSymbolReader, integerParser, out vector))
            {
                return(vector);
            }
            else
            {
                throw new Exception("An error has occured while reading integer vector.");
            }
        }
Example #2
0
        /// <summary>
        /// Permite fazer a leitura de um vector.
        /// </summary>
        /// <typeparam name="T">O tipo de elementos do vector.</typeparam>
        /// <param name="dimension">A dimensão do vector a ser lido.</param>
        /// <param name="vectorText">O texto que representa o vector.</param>
        /// <param name="vectorFactory">A fábrica responsável pela criação de vectores.</param>
        /// <param name="elementParser">O leitor de elementos.</param>
        /// <param name="readNegativeNumbers">Indica se são lidos os números negativos.</param>
        /// <returns></returns>
        public static IMathVector <T> ReadVector <T>(
            int dimension,
            string vectorText,
            IMathVectorFactory <T> vectorFactory,
            IParse <T, string, string> elementParser,
            bool readNegativeNumbers = false)
        {
            var reader             = new StringReader(vectorText);
            var stringSymbolReader = new StringSymbolReader(reader, readNegativeNumbers);
            var arrayVectorReader  = new ConfigVectorReader <T, string, string, CharSymbolReader <string> >(
                dimension,
                vectorFactory);

            arrayVectorReader.MapInternalDelimiters("left_bracket", "right_bracket");
            arrayVectorReader.AddBlanckSymbolType("blancks");
            arrayVectorReader.SeparatorSymbType = "comma";

            var vector = default(IMathVector <T>);

            if (arrayVectorReader.TryParseVector(stringSymbolReader, elementParser, out vector))
            {
                return(vector);
            }
            else
            {
                throw new Exception("Can't read vector.");
            }
        }