Индекс находится вне границ массива - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д