/// <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."); } }
/// <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."); } }