Индекс находится вне границ массива - C# (185325)

Узнай цену своей работы

Формулировка задачи:

Добрый день, у меня проблема , индекс находится вне границ массива всё облазил не смог найти ответа, точнее причина понятна но не могу решить проблема самостоятельно. Прошу помощи.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Дипломная_работа_Функционал
  7. {
  8. public class Functional
  9. {
  10. private const double penalty = 10;
  11. private double Sqr(double x)
  12. {
  13. return x * x;
  14. }
  15. private double Cub(double x)
  16. {
  17. return x * x * x;
  18. }
  19. private double max(double x, double y)
  20. {
  21. return (x > y) ? x : y;
  22. }
  23. private double Constraint(double[] x, int index)
  24. {
  25. switch (index)
  26. {
  27. case 1:
  28. return max(0, x[1] + 500 * x[2] + 75 * x[3] - 1250);
  29. case 2:
  30. return max(0, x[1] - 360);
  31. case 3:
  32. return max(0, x[2] - 3);
  33. case 4:
  34. return max(0, x[3] - 7);
  35. case 5:
  36. return max(0, -x[1]);
  37. case 6:
  38. return max(0, -x[2]);
  39. case 7:
  40. return max(0, -x[3]);
  41. default:
  42. return 0;
  43. }
  44. }
  45. public double TargetFunction(double[] x)
  46. {
  47. 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;
  48. for (int i = 1; i <= 7; i++)
  49. {
  50. value += penalty * Sqr(Constraint(x, i));
  51. }
  52. return value;
  53. }
  54. }
  55. class Program
  56. {
  57. static void Main(string[] args)
  58. {
  59. Functional test = new Functional();
  60. double[] parametrs = new double[] {180.0, 1.5, 3.5};
  61. Console.WriteLine(test.TargetFunction(parametrs));
  62. Console.ReadKey();
  63. }
  64. }
  65. }

Решение задачи: «Индекс находится вне границ массива»

textual
Листинг программы
  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;

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


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

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

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы