/** * returns the OperationEval concrete impl instance corresponding * to the supplied operationPtg */ public static ValueEval Evaluate(OperationPtg ptg, ValueEval[] args, OperationEvaluationContext ec) { if (ptg == null) { throw new ArgumentException("ptg must not be null"); } NPOI.SS.Formula.Functions.Function result = _instancesByPtgClass[ptg] as NPOI.SS.Formula.Functions.Function; FreeRefFunction udfFunc = null; if (result == null) { if (ptg is AbstractFunctionPtg) { AbstractFunctionPtg fptg = (AbstractFunctionPtg)ptg; int functionIndex = fptg.FunctionIndex; switch (functionIndex) { case NPOI.SS.Formula.Function.FunctionMetadataRegistry.FUNCTION_INDEX_INDIRECT: udfFunc = Indirect.instance; break; case NPOI.SS.Formula.Function.FunctionMetadataRegistry.FUNCTION_INDEX_EXTERNAL: udfFunc = UserDefinedFunction.instance; break; default: result = FunctionEval.GetBasicFunction(functionIndex); break; } } } if (result != null) { if (result is ArrayFunction) { ArrayFunction func = (ArrayFunction)result; ValueEval eval = EvaluateArrayFunction(func, args, ec); if (eval != null) { return(eval); } } return(result.Evaluate(args, ec.RowIndex, (short)ec.ColumnIndex)); } else if (udfFunc != null) { return(udfFunc.Evaluate(args, ec)); } throw new Exception("Unexpected operation ptg class (" + ptg.GetType().Name + ")"); }
static void Main(string[] args) { var random1 = new Random(); int CountElements = random1.Next(1, 20); int[] array = new int[CountElements]; ArrayFunction.ArrayElements(array); ArrayFunction.WriteElements(array); int sum = ArrayFunction.ArraySumPositive(array); Console.WriteLine($"Сумма неотрицательных элементов массива {sum}"); Console.ReadKey(); }
static void Main(string[] args) { var random1 = new Random(); int n1 = random1.Next(1, 20); int n2 = random1.Next(1, 20); int n3 = random1.Next(1, 20); int[,,] array = new int[n1, n2, n3]; ArrayFunction.ArrayElements(array); ArrayFunction.ArrayReplacement(array); Console.WriteLine("Элементы заменены"); Console.ReadKey(); }
public ValueEval Evaluate(ValueEval[] args, OperationEvaluationContext ec) { int nIncomingArgs = args.Length; if (nIncomingArgs < 1) { throw new Exception("function name argument missing"); } ValueEval nameArg = args[0]; String functionName = string.Empty; if (nameArg is FunctionNameEval) { functionName = ((FunctionNameEval)nameArg).FunctionName; } else { throw new Exception("First argument should be a NameEval, but got (" + nameArg.GetType().Name + ")"); } FreeRefFunction targetFunc = ec.FindUserDefinedFunction(functionName); if (targetFunc == null) { throw new NotImplementedFunctionException(functionName); } int nOutGoingArgs = nIncomingArgs - 1; ValueEval[] outGoingArgs = new ValueEval[nOutGoingArgs]; Array.Copy(args, 1, outGoingArgs, 0, nOutGoingArgs); if (targetFunc is ArrayFunction) { ArrayFunction func = (ArrayFunction)targetFunc; ValueEval eval = OperationEvaluatorFactory.EvaluateArrayFunction(func, outGoingArgs, ec); if (eval != null) { return(eval); } } return(targetFunc.Evaluate(outGoingArgs, ec)); }
static void Main(string[] args) { var random1 = new Random(); int n1 = random1.Next(1, 5); int n2 = random1.Next(1, 5); int[,] array = new int[n1, n2]; for (int i = 0; i < n1; i++) { ArrayFunction.ArrayElements(array); } ArrayFunction.WriteElements(array); int sum = ArrayFunction.ArraySumEven(array); Console.WriteLine($"Сумма элементов на четных позициях {sum}"); Console.ReadKey(); }
public static ValueEval EvaluateArrayFunction(ArrayFunction func, ValueEval[] args, OperationEvaluationContext ec) { IEvaluationSheet evalSheet = ec.GetWorkbook().GetSheet(ec.SheetIndex); IEvaluationCell evalCell = evalSheet.GetCell(ec.RowIndex, ec.ColumnIndex); if (evalCell != null) { if (evalCell.IsPartOfArrayFormulaGroup) { // array arguments must be evaluated relative to the function defining range Util.CellRangeAddress ca = evalCell.ArrayFormulaRange; return(func.EvaluateArray(args, ca.FirstRow, ca.FirstColumn)); } else if (ec.IsArraymode) { return(func.EvaluateArray(args, ec.RowIndex, ec.ColumnIndex)); } } return(null); }
private static void UseCollectionOperators() { Console.WriteLine("Collection Operators"); var db = _Database; // # tag::query-collection-operator[] using (var query = QueryBuilder.Select( SelectResult.Expression(Meta.ID), SelectResult.Property("name"), SelectResult.Property("public_likes")) .From(DataSource.Database(db)) .Where(Expression.Property("type").EqualTo(Expression.String("hotel")) .And(ArrayFunction.Contains(Expression.Property("public_likes"), Expression.String("Armani Langworth"))))) { foreach (var result in query.Execute()) { var publicLikes = result.GetArray("public_likes"); var jsonString = JsonConvert.SerializeObject(publicLikes); Console.WriteLine($"Public Likes :: {jsonString}"); } } // # end::query-collection-operator[] }
static void Main(string[] args) { var random1 = new Random(); int countElements = random1.Next(1, 20); int[] array = new int[countElements]; ArrayFunction.ArrayElements(array); ArrayFunction.WriteElements(array); ArrayFunction.SortElements(array); Console.WriteLine("\n Отсортированный массив"); ArrayFunction.WriteElements(array); Console.WriteLine($"\n Минимальный элемент массива {array[0]}"); Console.WriteLine($"\n Максимальный элемент массива {array[array.Length - 1]}"); Console.ReadKey(); }