Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методички по информатике / Программирование в среде Visual C# (Часть 1).pdf
Скачиваний:
67
Добавлен:
27.05.2015
Размер:
1.17 Mб
Скачать

2.4 Одномерные массивы

Задание: Преобразовать одномерный целочисленный массив путем умножения всех его элементов на элемент с максимальным значением.

Для решения поставленной задачи потребуются компоненты:

Source_L класса Label для подписи компонента Source_TB;

Source_TB класса TextBox для ввода исходного массива;

Dest_L класса Label для подписи компонента Dest_TB;

Dest_TB класса TextBox для вывода преобразованного массива;

Calc_B класса Button для активизации расчета.

Установим следующие значения свойств компонентов (таблица 7);

Таблица 7 – Значения свойств компонентов для примера выполнения задания по работе с одномерными массивами

Компонент.Свойство

Значение

Source_L.Text

&Исходный массив

Source_TB.Multiline

true

 

 

Source_TB.ScrollBars

Vertical

 

 

Dest_L.Text

&Преобразованный массив

Dest_TB.Multiline

true

 

 

Dest_TB.ReadOnly

true

 

 

Dest_TB.ScrollBars

Vertical

 

 

Calc_B.Text

П&реобразовать

Опишем событие Click кнопки Calc_B:

private void Calc_B_Click(object sender, EventArgs e)

{

/* Определение количества элементов массива */ int count = Source_TB.Lines.Length;

int[] mas = new int[count]; int i;

/* Заполнение массива */ for (i=0; i<count; i++)

mas[i] = Convert.ToInt32(Source_TB.Lines[i]); /* Поиск максимального значения */

int max = mas[0];

for (i=1; i<count; i++) if (max < mas[i])

max = mas[i];

/* Преобразование массива */ for (i=0; i<count; i++)

mas[i] *= max;

17

/* Вывод результата */

Dest_TB.Clear(); // Удаление старых строк for (i=0; i<count; i++)

Dest_TB.AppendText(mas[i] + "\n"); // Добавление строк

}

Внешний вид и пример работы программы показаны на рисунке 4.

Рисунок 4 – Внешний вид и пример работы программы, реализующей обработку одномерных массивов

2.5 Матрицы

Задание: Составить программу определения индексов минимального элемента прямоугольной целочисленной матрицы A, имеющей n строк и m столбцов (значения всех элементов различны).

Будем считать, что начальное и минимально число строк и столбцов матрицы равно двум, а максимальное – 10.

Для решения поставленной задачи потребуются компоненты:

Source_L класса Label для подписи компонента Source_DGV;

Source_DGV класса DataGridView для ввода исходной матрицы;

Rows_L класса Label для подписи компонента Rows_NUD;

Rows_NUD класса NumericUpDown для задания количества строк n;

Cols_L класса Label для подписи компонента Cols_NUD;

Cols_NUD класса NumericUpDown для задания количества столбцов m;

Calc_B класса Button для активизации расчета;

FindRow_L класса Label для подписи компонента FindRow_TB;

FindRow_TB класса TextBox для вывода индекса строки найденного

элемента;

FindCol_L класса Label для подписи компонента FindCol_TB;

18

FindCol_TB класса TextBox для вывода индекса столбца найденного элемента.

Установим следующие значения свойств компонентов (таблица 8).

Таблица 8 – Значения свойств компонентов для примера выполнения задания по работе с матрицами

Компонент.Свойство

Значение

Source_L.Text

&Исходная матрица

Source_DGV.AllowUserToAddRows

false

 

 

Source_DGV.AllowUserToDeleteRows

false

 

 

Source_DGV.ColumnHeadersVisible

false

 

 

Source_DGV.RowHeadersVisible

false

 

 

Rows_L.Text

Число &строк

Rows_NUD.Minimum

2

 

 

Rows_NUD.Maximum

10

 

 

Rows_NUD.Value

2

 

 

Cols_L.Text

Число с&толбцов

Cols_NUD.Minimum

2

 

 

Cols_NUD.Maximum

10

 

 

Cols_NUD.Value

2

 

 

Calc_B.Text

Рас&чет

FindRow_L.Text

Номер стро&ки найденного элемента

FindCol_L.Text

Номер столб&ца найденного элемента

FindRow_TB.ReadOnly

true

 

 

FindCol_TB.ReadOnly

true

 

 

Опишем событие Load формы для задания начального значения количества строк и столбцов в компоненте Source_DGV:

private void Form1_Load(object sender, EventArgs e)

{

Source_DGV.RowCount = Convert.ToInt32(Rows_NUD.Value); Source_DGV.ColumnCount = Convert.ToInt32(Cols_NUD.Value);

}

Опишем событие ValueChanged компонента Rows_NUD:

private void Rows_NUD_ValueChanged(object sender, EventArgs e)

{

Source_DGV.RowCount = Convert.ToInt32(Rows_NUD.Value);

}

19

Опишем событие ValueChanged компонента Cols_NUD:

private void Cols_NUD_ValueChanged(object sender, EventArgs e)

{

Source_DGV.ColumnCount = Convert.ToInt32(Cols_NUD.Value);

}

Опишем событие Click кнопки Calc_B:

private void Calc_B_Click(object sender, EventArgs e)

{

int i, j, min_i, min_j; /* Заполнение матрицы */

int[,] matr = new int[Source_DGV.RowCount, Source_DGV.ColumnCount];

for (i=0; i<Source_DGV.RowCount; i++)

for (j=0; j<Source_DGV.ColumnCount; j++)

matr[i,j] = Convert.ToInt32(Source_DGV[j,i].Value); /* Поиск: min_i - номер строки минимального элемента

min_j - номер столбца минимального элемента */ min_i = min_j = 0;

for (i=0; i<Source_DGV.RowCount; i++)

for (j=0; j<Source_DGV.ColumnCount; j++) if (matr[min_i,min_j] > matr[i,j])

{

min_i = i; min_j = j;

}

/* Вывод результатов */

FindRow_TB.Text = (min_i+1).ToString();

FindCol_TB.Text = (min_j+1).ToString();

}

Внешний вид и пример работы программы показаны на рисунке 5.

Рисунок 5 – Внешний вид и пример работы программы, реализующей обработку матриц

20