• Предмет: Информатика
  • Автор: plakunleva
  • Вопрос задан 11 месяцев назад

Преобразовать массив: разделить элементы каждой строки матрицы на среднее арифметическое элементов этой строки

Ответы

Ответ дал: SantiVlad
0

Ответ:

static void Main(string[] args)

       {

           int N = 0, M = 0, srednArifm = 0, sum = 0; ;

           Console.Write("Введите размерность массива M: ");

           M = Convert.ToInt32(Console.ReadLine());

           Console.Write("Введите размерность массива N: ");

           N = Convert.ToInt32(Console.ReadLine());

           int[,] mas = new int[M, N];

           Random rnd = new Random();

           for (int i = 0; i < M; i++)

           {

               for (int j = 0; j < N; j++)

               {

                   mas[i, j] = rnd.Next(0, 10);

               }

           }

           Console.WriteLine();

           Console.Write("Массив: ");

           Console.WriteLine();

           for (int i = 0; i < M; i++)

           {

               for (int j = 0; j < N; j++)

               {

                   Console.Write(String.Format("{0,3}", mas[i, j]));

               }

               Console.WriteLine();

           }

           for (int i = 0; i < M; i++)

           {

               sum = 0;

               srednArifm = 0;

               for (int j = 0; j < N; j++)

               {

                   sum += mas[i, j];

               }

               srednArifm = sum / N;

               for (int g = 0; g < N; g++)

               {

                   mas[i, g] = mas[i, g] / srednArifm;

               }

           }

           Console.WriteLine();

           Console.Write("Массив после преобразования: ");

           Console.WriteLine();

           for (int i = 0; i < M; i++)

           {

               for (int j = 0; j < N; j++)

               {

                   Console.Write(String.Format("{0,3}", mas[i, j]));

               }

               Console.WriteLine();

           }

           Console.ReadKey();

       }

Объяснение:

Код на C#. Округляет числа до целых значений в меньшую сторону, т.к. тип данных int. Если нужны дробные значения - то смените тип массива на double.

Ответ дал: BobbyFresnel
0

===== PascalABC.NET =====

begin

 var (m, n) := ReadInteger2('Укажите m и n:');

 var a := MatrRandomReal(m, n, -99, 99);

 a.Transform(p -> p.Round(2));

 a.Println(8, 2);

 Writeln;

 var v := a.Rows.Select(row -> row.Average).ToArray;

 for var i := 0 to a.RowCount - 1 do

   for var j := 0 to a.ColCount - 1 do

     a[i, j] /= v[i];

 a.Println(8, 3)

end.

Приложения:

BobbyFresnel: Поскольку указано "5-9" классы, а уверенности в том, что вопрос принадлежит одному из десятка тысяч школьников, у которого чудак-учитель решил давать C#, у меня нет, решение сделано на PascalABC.NET.
BobbyFresnel: Да и потом, оно все же куда короче)))
SantiVlad: Язык указан не был, так что и притензии ни к чему.
BobbyFresnel: А где Вы прочитали претензии?
BobbyFresnel: Это было объяснение причины, почему ответ дан на указанном языке.
SantiVlad: Тогда отлично)
BobbyFresnel: Я мог бы это же и на C# написать, только смысл?
Вас заинтересует