1 / 1 / 0
Регистрация: 12.08.2012
Сообщений: 21
1

Индекс находится вне границ массива

16.05.2016, 17:34. Показов 609. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, у меня проблема , индекс находится вне границ массива всё облазил не смог найти ответа, точнее причина понятна но не могу решить проблема самостоятельно. Прошу помощи.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2016, 17:34
Ответы с готовыми решениями:

Индекс находится вне границ массива
Я не могу понять в чём проблема.. Думал что с циклом, посмотрел на него, вроде всё нормально, потом...

Индекс находится вне границ массива
Суть программы: считывание из файла и вывод на экран английского текста, заменяя первую букву слов,...

Индекс находится вне границ массива
Программа на вход должна получить 2 параметра: путь к файлу и число, которое нужно заменить на 0....

Индекс находится вне границ массива
Пишу программу для извлечения данных БД в формате JSON, при попытке вставки обратного слэша перед...

3
341 / 303 / 135
Регистрация: 14.03.2015
Сообщений: 1,121
Записей в блоге: 1
16.05.2016, 17:40 2
Цитата Сообщение от cebi Посмотреть сообщение
C#
1
2
3
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;
...
double[] parametrs = new double[] {180.0, 1.5, 3.5};
Передаете вы 3 элемента. Индексация начинается с 0. Вы пытаетесь обратиться к 4 элементу (а его нет)

Если вы желаете, чтобы данный код работал (только при 3 элементах), то понизьте индексы на единицу.

Например:
C#
1
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;
1
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
16.05.2016, 17:43 3
в функции Constraint так же неверное назначение индексов, массивы всегда идут с 0, а не с 1
1
1 / 1 / 0
Регистрация: 12.08.2012
Сообщений: 21
16.05.2016, 17:57  [ТС] 4
Спасибо всем. Проблема исчерпана.
0
16.05.2016, 17:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2016, 17:57
Помогаю со студенческими работами здесь

Индекс находится вне границ массива
Здравствуйте, ув форумчане. Я хотел добавить в свою программу сохранения и чтения историю ссылок....

Индекс находится вне границ массива
Добрый день, не могу понять, в чем ошибка (выдает на строчку if (s == '1'), пишет, что массив...

Индекс находится вне границ массива
Выдает ошибку на { Console.WriteLine(&quot;Чётные: &quot; + &quot;a=&quot; +...

Индекс находится вне границ массива
Здравствуйте. Подскажите, как исправить ошибку при парсинге. if (oneOid.Split('=').Trim() ==...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru