.NET 4.x Создать случайно сгенерированную (рандомную) матрицу, сложить элементы выделенные в картинке - C#
Формулировка задачи:
Задача:
Создать случайно сгенерированную (рандомную) матрицу n x n,
сложить элементы выделенные в данной картинке:
1 вариант:
1 2 * 4 5
2 * * * 6
* * * * *
4 * * * 8
5 6 * 8 9
2 вариант:
1 2 * 4 5
2 * 4 * 6
* 4 5 6 *
4 * 6 * 8
5 6 * 8 9
По 2 варианту есть наработки, но с небольшими недочетами: 0 и последний член тоже складывается...:
Результат:
* 2 * 4 5
2 * 4 * 6
* 4 * 6 *
4 * 6 * 8
5 6 * 8 *
Проблема в том, что я не могу никак выделить диагонали четвертей...
Если кто занимался такой охинеей, помогите пожалуйста понять это сие чудо C#...
Заранее спасибо!
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main() { int i, j, n; n = Convert.ToInt32(Console.ReadLine()); int[,] matrix = new int[n, n]; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) { matrix[i, j] = i + j; if (i == j-n/2 ^ j == i-n/2 ) matrix[i, j] = 0; if (i == j ^ j == i - n / 2 ^ i == j + n / 2) matrix[i, j] = 0; Console.Write(matrix[i, j] + "\t"); } Console.WriteLine(); } Console.ReadLine(); } } }
Решение задачи: «.NET 4.x Создать случайно сгенерированную (рандомную) матрицу, сложить элементы выделенные в картинке»
textual
Листинг программы
using System; class Class { static void Main() { int n; //размер матрицы int i,j,k; //для циклов int q=1; int r; //для рандома int ser,ser_l,ser_r; //для матрицы шаблона (индекс середины, лев и правого края) int zn=1; //знак +1 или -1 int sum=0; bool b=false; n=5; Console.WriteLine("матрица размером {0}x{0}",n); int[,] arr =new int[n,n]; //матрица задания int [,] t = new int[n,n]; //доп матрица Random ran = new Random(); //заполнение матрицы случ числами for (i=0; i<n; i++) { for (j=0; j<n; j++) { r=ran.Next(0,9); //arr[i,j]=q++; arr[i,j]=r; } } Console.WriteLine(""); //матрица шаблон (нечетное кол элементов) ser=(n/2); ser_l=ser; ser_r=ser; for (i=0; i<n; i++) { t[i,ser_l]=1; t[i,ser_r]=1; ser_l-=1*(zn); ser_r+=1*(zn); if (ser_l==0) zn=-1; } //суммирование for (i=0; i<n; i++) { for (j=0; j<n; j++) { if (t[i,j]==1) { //Console.WriteLine(arr[i,j]); sum=sum+arr[i,j]; } } } Console.WriteLine("sum: "+sum); Console.WriteLine(""); //PRINT матрица рандомная Console.WriteLine("заданная матрица:"); for (i=0; i<n; i++) { for (j=0; j<n; j++) { Console.Write("{0}",arr[i,j]+" "); if (j==(n-1)) Console.WriteLine(); } } Console.WriteLine(); //PRINT матрица шаблон Console.WriteLine("матрица шаблон:"); for (i=0; i<n; i++) { for (j=0; j<n; j++) { Console.Write("{0}",t[i,j]+" "); if (j==(n-1)) Console.WriteLine(); } } Console.ReadLine(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д