• Добро пожаловать на сайт - Forumteam.digital !

    Что бы просматривать темы форума необходимо зарегестрироваться или войти в свой аккаунт.

    Группа в телеграме (подпишитесь, что бы не потерять нас) - ForumTeam Chat [Подписатся]
    Связь с администратором - @ftmadmin

12. Два примера с массивами.

Redman

<FORUMTEAM>
Команда форума
Регистрация
13.11.17
Сообщения
13.340
Реакции
8.377
Баллы
1.200
FTC
208¢
Практический пример. Одномерный массив.

Программа подсчитываем количество четных и нечетных элементов в массиве, а так же количество n-значных элементов (n от 1 до 5). Все элементы массива задаются случайным образом.
Код:
using System;

namespace CSharpApplication.ArraysExample
{
    class Arrays
    {
        static void Main()
        {
            // Количество элементов
            uint n = 0;

            Console.WriteLine("Введите количество элементов массива: ");
            try
            {
                // Вводим количество элементов с клавиатуры
                n = Convert.ToUInt32(Console.ReadLine());
            }
            catch(OverflowException ex)
            {   
                // В случае ошибочного ввода (переполнения)
                Console.WriteLine(ex.Message + " Use default size (=10)");
            }
            catch(FormatException ex)
            {   
                // В случае ошибочного ввода
                Console.WriteLine(ex.Message + " Use default size (=10)");
            }
           
            // Если все плохо, то создадим массив из 10 элементов
            if(n == 0)
                n = 10;
           
            // Создание массива
            int [] ar = new int[n];

            // Инициализация генератора случайных чисел
            Random rand = new Random();

            for(int i = 0; i < n; i++)
            {
                // Забиваем массив случайными числами
                // от 0 до 99999
                ar[i] = rand.Next(100000);
                Console.Write("{0,8}", ar[i]);
            }
            Console.WriteLine();

            // Счетчики четных и нечетных чисел
            int odd = 0, even = 0;
            // Создаем 5 элементов-счетчиков для подсчета
            // количества n-значных чисел в массиве
            int [] ranks = new int[5];
            string text = "-значных";

            // Бежим по массиву
            foreach(int i in ar)
            {
                if(i % 2 == 0)
                    ++even;
                else
                    ++odd;

                // Записываем N-значный элемент в n-ый элемент массива
                ++ranks[i.ToString().Length - 1];
            }

            // Вывод результатов подсчета
            Console.WriteLine("Четных чисел: {0}\nНечетных: {1}", even, odd);
            for(int i = 0; i < 5; i++)
            {
                Console.WriteLine("{0}{1}: {2}", i + 1, text, ranks[i]);
            }
        }
    }
}

Практический пример. Двумерный массив.

Программа транспонирует матрицу, все элементы которой задаются случайным образом.
Код:
using System;

namespace CSharpApplication.ArraysExample
{
    class Arrays
    {
        /*******************************************************************/
        /* Во всех функциях размерности массивов определяются "на ходу".
        /* А можно было передать размерности в функцию в качестве параметров :)
        /*******************************************************************/
        // Транспонирование матрицы
        static int [,] Transform(int [,] mtr)
        {
            // число строк
            int M = mtr.GetLength(0);
            // число столбцов
            int N = mtr.GetLength(1);

            // Создание массива
            int [,] t_ar = new int[N, M];

            // Транспонирование
            for(int i = 0; i < M; i++)
            {
                for(int j = 0; j < N; j++)
                {
                    t_ar[j,i] = mtr[i,j];
                }
            }

            return t_ar;
        }

        // Вывод матрицы
        static void Print(int [,] mtr)
        {
            // число строк
            int M = mtr.GetLength(0);
            // число столбцов
            int N = mtr.GetLength(1);

            for(int i = 0; i < M; i++)
            {
                for(int j = 0; j < N; j++)
                {
                    Console.Write("{0,8}", mtr[i,j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }

        // Инициализация матрицы случайными значениями
        static void Init(int [,] mtr)
        {
            // Инициализация генератора случайных чисел
            Random rand = new Random();

            // Определение размерностей матрицы
            int M = mtr.GetLength(0);
            int N = mtr.GetLength(1);

            for(int i = 0; i < M; i++)
            {
                for(int j = 0; j < N; j++)
                {
                    // Забиваем массив случайными числами
                    // от 0 до 99999
                    mtr[i,j] = rand.Next(100000);
                }
            }
        }

        static void Main()
        {
            // Размерности матрицы
            uint M = 0, N = 0;

            Console.WriteLine("Введите размерности матрицы: ");
            try
            {
                // Вводим размерности матрицы с клавиатуры
                Console.WriteLine("M: ");
                M = Convert.ToUInt32(Console.ReadLine());
                Console.WriteLine("N: ");
                N = Convert.ToUInt32(Console.ReadLine());
            }
            catch(OverflowException ex)
            {   
                // В случае ошибочного ввода (переполнения)
                Console.WriteLine(ex.Message + " Use default size (=10x10)");
            }
            catch(FormatException ex)
            {   
                // В случае ошибочного ввода
                Console.WriteLine(ex.Message + " Use default size (=10x10)");
            }
           
            // Если все плохо, то создадим массив из 10х10 элементов
            if(M == 0 || N == 0)
                M = N = 10;
           
            // Создание массива
            int [,] ar = new int[M, N];

            Console.WriteLine("Матрица:");
            // Инициализация
            Init(ar);
            // Вывод
            Print(ar);

            // Транспонирование
            int [,] t_ar = Transform(ar);
           
            Console.WriteLine("Транспонированная матрица:");
            // Вывод транспонированной матрицы
            Print(t_ar);
       }
    }
}
 
Сверху Снизу