Класс Parallel, ошибка IndexOutOfRangeException - C#
Формулировка задачи:
Здравствуйте. Не могу понять в чем дело, выдает ошибку IndexOutOfRangeException на строчке ress[i] += Math.Pow(a[i, j], 2);
Помоги разобраться.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Diagnostics;
- namespace arch3
- {
- class Program
- {
- static void Main(string[] args)
- {
- int i, j;
- const int n = 5, m = 5;
- double[,] a = new double[m, n];
- double[] ress = new double[m];
- double result = 1;
- Stopwatch watch = new Stopwatch();
- watch.Start();
- for (i = 0; i < m; i++)
- for (j = 0; j < n; j++)
- a[i, j] = i + j;
- Parallel.For(0, n - 1, delegate(int k)
- {
- for (i = 0; i < m; i++)
- {
- for (j = 0; j < n; j++)
- {
- Console.Write("{0,4}", a[i, j]);
- ress[i] += Math.Pow(a[i, j], 2);
- }
- Console.WriteLine();
- Console.WriteLine("Сумма по столбцам равна: " + ress[i]);
- result *= ress[i];
- }
- }
- );
- Console.WriteLine("Произведение по строкам равно: " + result);
- watch.Stop();
- Console.WriteLine("Время выполнения матрицы " + m + "*" + n + " Затраченное время:" + watch.Elapsed.Milliseconds + "мсек.\r\n");
- Console.WriteLine("Время выполнения матрицы " + m + "*" + n + " Затраченное время:" + watch.Elapsed + "такт.\r\n");
- Console.ReadKey();
- }
- }
- }
Решение задачи: «Класс Parallel, ошибка IndexOutOfRangeException»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Diagnostics;
- using System.Threading.Tasks;
- namespace ConsoleApplication17 {
- class Program {
- static void Main(string[] args) {
- int i, j;
- const int n = 5, m = 5;
- double[,] a = new double[m, n];
- double[] ress = new double[m];
- double result = 1;
- Stopwatch watch = new Stopwatch();
- watch.Start();
- for (i = 0; i < m; i++)
- for (j = 0; j < n; j++)
- a[i, j] = i + j;
- Parallel.For(0, n - 1, delegate(int k) {
- for (i = 0; i < m; i++) {
- int index1 = i;
- for (j = 0; j < n; j++) {
- int index2 = j;
- Console.Write("{0,4}", a[index1, index2]);
- ress[index1] += Math.Pow(a[index1, index2], 2);
- }
- Console.WriteLine();
- Console.WriteLine("Сумма по столбцам равна: " + ress[index1]);
- result *= ress[index1];
- }
- }
- );
- Console.WriteLine("Произведение по строкам равно: " + result);
- watch.Stop();
- Console.WriteLine("Время выполнения матрицы " + m + "*" + n + " Затраченное время:" + watch.Elapsed.Milliseconds + "мсек.\r\n");
- Console.WriteLine("Время выполнения матрицы " + m + "*" + n + " Затраченное время:" + watch.Elapsed + "такт.\r\n");
- Console.ReadKey();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д