.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();
}
}