- Автор темы
- #1
Практический пример. Одномерный массив.
Программа подсчитываем количество четных и нечетных элементов в массиве, а так же количество n-значных элементов (n от 1 до 5). Все элементы массива задаются случайным образом.
Практический пример. Двумерный массив.
Программа транспонирует матрицу, все элементы которой задаются случайным образом.
Программа подсчитываем количество четных и нечетных элементов в массиве, а так же количество 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);
}
}
}