Массив выходит за пределы - C#

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

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace парные_сравнения
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = new StreamReader(File.Open("inputs.txt", FileMode.Open)).ReadToEnd();
            var inp = input.Replace(" ", "").Replace("\r", "").Split('\n');
            for (int abc = 0; abc < inp.Count(); abc += 2)
            {
                var a = inp[abc].Split(',').Select(Int32.Parse).ToArray();
                var b = inp[abc + 1].Split(',').Select(Int32.Parse).ToArray();

                int[] start = a;
                int[] finish = b;
                int n = finish.Length;
 
                int[] scores = new int[n];
                for (int i = 0; i < n; i++)
                {
                    scores[i] = start[i] - finish[i];
                }
 
                scores = scores.Where(p => p != 0).ToArray();
 
                int[] ABCscores = new int[scores.Length];
                for (int i = 0; i < scores.Length; i++)
                {
                    ABCscores[i] = Math.Abs(scores[i]);
                }

                int pos = 0;
                var res = ABCscores.Join(
                ABCscores.GroupBy(g => g)
                .OrderBy(o => o.Key)
                .Select(s => { pos += s.Count(); return new { Score = s.Key, Rang = ((double)2 * pos - s.Count() + 1) / 2 }; }),
                i => i, o => o.Score, (o, i) => new { Score = o, Rang = i.Rang }).ToList();

                double[] rang = new double[n];
                int l = 0;
 
                foreach (var result in res)
                {
                    rang[l] = result.Rang;
                    l++;
                }
 
                double rang_min = 0;
                double rang_plus = 0;
                for (int i = 0; i < scores.Length; i++)
                {
                    if (scores[i] < 0)
                        rang_min += rang[i];
                    else
                        rang_plus += rang[i];
                }
                double Rmin = 0;
                if (rang_plus < rang_min)
                    Rmin = rang_plus;
                else Rmin = rang_min;
 
                double z_kr = 1.96;
                double z_emp = 0;
                double u_kr = 0;
 
                if (n < 10)
                {
                    Console.Write("Введите U_критическое из таблицы для U_kr(n={0},a=0.05): ", n--);
                    u_kr = Convert.ToDouble(Console.ReadLine());
                    if (Rmin > u_kr)
                        Console.WriteLine("Гипотеза подтверждается");
                    else
                        Console.WriteLine("Гипотеза не подтверждается");
                }
                else
                {
                    z_emp = Math.Abs(((Rmin - ((n * (n + 1.0)) / 4.0)) / Math.Sqrt((1.0 / 24.0) * n * (n + 1.0) * ((2.0 * n) + 1.0))));
                    if (z_emp < z_kr)
                        Console.WriteLine("Гипотеза подтверждается");
                    else
                        Console.WriteLine("Гипотеза не подтверждается");
                }
            }
            Console.Read();
        }
    }
}
Подскажите почему ошибка такая,или помогите исправить..

Необработанное исключение типа "System.IndexOutOfRangeException" в ConsoleApplication37.exe Дополнительные сведения: Индекс находился вне границ массива.

Решение задачи: «Массив выходит за пределы»

textual
Листинг программы
.Split(new [] { "\\n" }, StringSplitOptions.RemoveEmptyEntries);

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


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

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

9   голосов , оценка 4.333 из 5