Передача параметров в методы в Java и C# (Лабораторная работа № 3), страница 3

    output(a, sum);

    }

}

Рисунок 3 – Результат выполнения программы

Пример 4

В листинге 4 представлена программа, в которой нормируется матрица действительных чисел, т.е. каждый элемент матрицы делится на максимальное по модулю число матрицы. Строки полученной матрицы сортируются по возрастанию первых элементов строк.

Для сортировки строк матрицы используется сортировка методом выбора. Он состоит в том, что из массива выбирается наименьший элемент и меняется местами с первым элементом, затем рассматриваются элементы, начиная со второго, и  наименьший из них меняется местами со вторым элементом и так далее n-1 раз (при последнем проходе цикла при необходимости меняются местами предпоследний и последний элементы массива). Одновременно с обменом элементов массива выполняется и обмен значений двух соответствующих строк матрицы.

Для создания программы использовалась среда разработки MS Visual C# 2010 Express.

Создание проекта в MS Visual C# 2010 Express: Файл -> Создать проект -> Консольное приложение.Компиляция, сборка и выполнение проекта: Отладка -> Начать отладку (F5).

На рисунке 4 показан результат выполнения программы.

Листинг4

using System;

namespace ConsoleApplication1

{

    class Program

    {

        static void input(out double[,] c)

        {

            Console.Write("n= ");

            int n = int.Parse(Console.ReadLine());

            Console.Write("m= ");

            int m = int.Parse(Console.ReadLine());

            double[,] a = new double[n, m];

            for (int i = 0; i < a.GetLength(0); i++)

            {

                for (int j = 0; j < a.GetLength(1); j++)

                {

                    Console.Write("a[{0},{1}]= ", i, j);

                    a[i, j] = int.Parse(Console.ReadLine());

                }

            }

            c = a;

        }

        static void output(double[,] a)

        {

            for (int i = 0; i < a.GetLength(0); i++)

            {

                for (int j = 0; j < a.GetLength(1); j++)

                    Console.Write("{0: 0.00} ", a[i, j]);

                Console.WriteLine();

            }

        }

        static void norm(double[,] a)

        {

            double max = Math.Abs(a[0, 0]);

            for (int i = 0; i < a.GetLength(0); i++)

                for (int j = 0; j < a.GetLength(1); j++)

                    if (Math.Abs(a[i, j]) > max)

                        max = Math.Abs(a[i, j]);

            Console.WriteLine("max = {0}", max);

            for (int i = 0; i < a.GetLength(0); i++)

                for (int j = 0; j < a.GetLength(1); j++)

                    a[i, j] /= max;

        }

        static void sort(double[,] a)

        {

            double[] s = new double[a.GetLength(0)];

            for (int i = 0; i < a.GetLength(0); i++)

                s[i] = a[i, 0];

            //сортировка

            double buf_s; int nmin; double buf_a;

            for (int i = 0; i < a.GetLength(0) - 1; i++)

            {

                nmin = i;

                for (int j = i + 1; j < a.GetLength(0); j++)

                    if (s[j] < s[nmin])

                        nmin = j;

                buf_s = s[i];

                s[i] = s[nmin]; s[nmin] = buf_s;

                for (int j = 0; j < a.GetLength(1); j++)

                {

                    buf_a = a[i, j];

                    a[i, j] = a[nmin, j];

                    a[nmin, j] = buf_a;

                }

            }

        }

        public static void Main(string[] args)

        {

            double[,] a;

            input(out a);

            Console.WriteLine("Исходная матрица: ");

            output(a);

            norm(a);       

            Console.WriteLine("Mатрица после нормирования:");

            output(a);

            sort(a);

            Console.WriteLine("Mатрица после сортировки:");

            output(a);

            Console.Write("Press any key to continue . . . ");

            Console.ReadKey(true);

        }

    }

}

Рисунок 4 – Результат выполнения программы