Индекс находится вне границ массива - 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы