Индекс находится вне границ массива - C# (185325)
Формулировка задачи:
Добрый день, у меня проблема , индекс находится вне границ массива всё облазил не смог найти ответа, точнее причина понятна но не могу решить проблема самостоятельно. Прошу помощи.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Дипломная_работа_Функционал { public class Functional { private const double penalty = 10; private double Sqr(double x) { return x * x; } private double Cub(double x) { return x * x * x; } private double max(double x, double y) { return (x > y) ? x : y; } private double Constraint(double[] x, int index) { switch (index) { case 1: return max(0, x[1] + 500 * x[2] + 75 * x[3] - 1250); case 2: return max(0, x[1] - 360); case 3: return max(0, x[2] - 3); case 4: return max(0, x[3] - 7); case 5: return max(0, -x[1]); case 6: return max(0, -x[2]); case 7: return max(0, -x[3]); default: return 0; } } public double TargetFunction(double[] x) { double value = 1 - (2 * x[1] + Sqr(x[2]) + Sqr(x[3])) * Math.Log(1 + 360 / (Math.Pow(x[1], 1.1) + Sqr(x[2]) + Sqr(x[3]) + 1)) / 360; for (int i = 1; i <= 7; i++) { value += penalty * Sqr(Constraint(x, i)); } return value; } } class Program { static void Main(string[] args) { Functional test = new Functional(); double[] parametrs = new double[] {180.0, 1.5, 3.5}; Console.WriteLine(test.TargetFunction(parametrs)); Console.ReadKey(); } } }
Решение задачи: «Индекс находится вне границ массива»
textual
Листинг программы
double value = 1 - (2 * x[0] + Sqr(x[1]) + Sqr(x[2])) * Math.Log(1 + 360 / (Math.Pow(x[0], 1.1) + Sqr(x[1]) + Sqr(x[2]) + 1)) / 360;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д