Получить новую матрицу путём деления всех элементов данной матрицы на её наибольший по модулю элемент - C#
Формулировка задачи:
Дана действительная матрица размера nxm, в которой не все элементы равны нулю. Получить новую матрицу путём деления всех элементов данной матрицы на её наибольший по модулю элемент. При этом надо это сделать через функцию.
Когда я делаю ссылку на функцию в myArr3, компилятор ругается, что нельзяconvert type 'double' to 'double[]'
. Помогите, пожалуйста, довести программу до ума. Также в спойлере вкладываю работающий код, только там без функции.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double[,] myArr = new double[4, 10];
double[,] myArr2 = new double[4, 10];
double[,] myArr3 = new double[4, 10];
double Max = int.MinValue;
myArr3 = r2(myArr, myArr2, Max);
Console.ReadKey();
}
public static double[] r2 (double[,] myArr, double[,] myArr2, double Max)
{
Random rnd = new Random();
Console.WriteLine("myArr: ");
//заполнение исходного массива случайными значениями:
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 10; j++)
{
myArr[i, j] = rnd.Next(1, 1000);
Console.Write(myArr[i, j] + " ");
}
Console.WriteLine(""); //перевод на новую строку
}
for (int i = 0; i < 4; i++)
for (int j = 0; j < 10; j++)
if (Math.Abs(myArr[i, j]) > Max) //определение максимального числа в матрице
Max = myArr[i, j];
Console.WriteLine("\nSecond Matrix: ");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 10; j++)
{
myArr2[i, j] = (myArr[i, j] / Max);
Console.Write("{0:F2}", myArr2[i, j]); //F2- округление до 2х знаков после запяой
Console.Write(" "); //пробел между числами в строке
}
Console.WriteLine(""); //перевод на новую строку
}
return(Max);
}
}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double[,] myArr = new double[4, 10];
double[,] myArr2 = new double[4, 10];
Random rnd = new Random();
Console.WriteLine("myArr: ");
//заполнение исходного массива случайными значениями:
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 10; j++)
{
myArr[i, j] = rnd.Next(1, 1000);
Console.Write(myArr[i, j] + " ");
}
Console.WriteLine(""); //перевод на новую строку
}
Double Max = int.MinValue;
for (int i = 0; i < 4; i++)
for (int j = 0; j < 10; j++)
if (Math.Abs(myArr[i, j]) > Max) //определение максимального числа в матрице
Max = myArr[i, j];
Console.WriteLine("\nSecond Matrix: ");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 10; j++)
{
myArr2[i, j] = (myArr[i, j] / Max);
Console.Write("{0:F2}", myArr2[i, j]); //F2- округление до 2х знаков после запяой
Console.Write(" "); //пробел между числами в строке
}
Console.WriteLine(""); //перевод на новую строку
}
Console.ReadKey();
}
}
}Решение задачи: «Получить новую матрицу путём деления всех элементов данной матрицы на её наибольший по модулю элемент»
textual
Листинг программы
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double[,] myArr = new double[4, 10];
double[,] myArr2 = new double[4, 10];
double[,] myArr3 = new double[4, 10];
double Max = int.MinValue;
Max = r2(myArr, myArr2, Max);
Console.ReadKey();
}
public static double r2(double[,] myArr, double[,] myArr2, double Max)
{
Random rnd = new Random();
Console.WriteLine("myArr: ");
//заполнение исходного массива случайными значениями:
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 10; j++)
{
myArr[i, j] = rnd.Next(1, 1000);
Console.Write(myArr[i, j] + " ");
}
Console.WriteLine(""); //перевод на новую строку
}
for (int i = 0; i < 4; i++)
for (int j = 0; j < 10; j++)
if (Math.Abs(myArr[i, j]) > Max) //определение максимального числа в матрице
Max = myArr[i, j];
Console.WriteLine("\nSecond Matrix: ");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 10; j++)
{
myArr2[i, j] = (myArr[i, j] / Max);
Console.Write("{0:F2}", myArr2[i, j]); //F2- округление до 2х знаков после запяой
Console.Write(" "); //пробел между числами в строке
}
Console.WriteLine(""); //перевод на новую строку
}
return (Max);
}
}
}