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