Практический пример. Одномерный массив.
Программа подсчитываем количество четных и нечетных элементов в массиве. Все элементы массива задаются случайным образом диапазоне от 0 до 999.
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 + " Default size (=10)");
}
catch(FormatException ex)
{
// В случае ошибочного ввода
Console.WriteLine(ex.Message + " Default size (=10)");
}
// Если n = 0, то создадим массив из 10 элементов
if(n == 0)
n = 10;
// Создание массива
int [] ar = new int[n];
// Инициализация генератора случайных чисел
Random rand = new Random();
for(int i = 0; i < n; i++)
{
// Забиваем массив случайными числами
// от 0 до 999
ar[i] = rand.Next(1000);
Console.Write("{0,8}", ar[i]);
}
Console.WriteLine();
// Счетчики четных и нечетных чисел
int odd = 0, even = 0;
// Бежим по массиву
foreach(int i in ar)
{
if(i % 2 == 0)
++even;
else
++odd;
}
// Вывод результатов подсчета
Console.WriteLine("Четных чисел: {0}\nНечетных: {1}", even, odd);
}
}
}
Задание
- Самостоятельно изучить возможности языка программирования C# для описания, инициализации и обработки одномерных массивов.
- Создать консольное приложение, в котором реализовать следующие вычисления:
- объявление заданного массива фиксированной длины прог (табл. 6);
- инициализацию элементов массива случайными целыми числами в заданном интервале (в одном цикле for);
- вывод элементов массива на консоль (в одном цикле foreach);
- вывод на консоль значения вычисленного параметра;
- заданную обработку массива и вывод элементов обработанного массива на консоль, обеспечить контроль исключений.
- В качестве результатов вывести исходный и обработанный массивы, а также (если это предполагает задание на обработку) найденное числовое значение.
- Отдельно протестировать обработку контролируемых исключений.
- Выполнить контрольную пошаговую обработку вручную для массива длиной ручн.
- Разработать блок-схему алгоритма программы.
- Сделать вывод.
Таблица 6. Варианты заданий к лабораторной работе №4
№ варианта | Длина массива для прог. / ручн. | Интервал генерации | Обработка элементов массива |
50 / 8 | [-10, 5] | Определить количество четных положительных элементов и сделать указанные элементы отрицательными | |
70 / 5 | [-5, 10] | Найти максимальный положительный элемент и отрицательные элементы увеличить на найденный максимальный положительный элемент | |
65 / 5 | [-20, 10] | Определить количество четных элементов больше 5, а нечетные элементы уменьшить на 5 | |
30 / 6 | [-30, 0] | Удвоить элементы, меньшие среднего арифметическое значение элементов массива | |
20 / 6 | [-20, 25] | Найти максимальный по модулю элемент массива. Положительные элементы сделать отрицательными и увеличить на найденный максимальный элемент | |
50 / 5 | [-15, 75] | Найти минимальный по модулю ненулевой элемент и заменить на него нулевые элементы массива | |
100 / 7 | [-30, 100] | Определить количество отрицательных элементов массива. Элементы, значение которых меньше найденного количества, увеличить вдвое | |
50 / 8 | [-40, 20] | Определить количество нечетных элементов меньше 5, а четные элементы обнулить | |
60 / 3 | [-40, 60] | Нечетные элементы уменьшить на минимальный четный элемент | |
25 / 3 | [-15, 15] | Вычислить разность количества положительных и отрицательных элементов массива и все элементы увеличить на найденную разность | |
30 / 3 | [-50, 50] | Поменять местами 1-й положительный элемент с последним положительным элементом, 2-й - предпоследним и т.д. | |
55 / 5 | [-50, 50] | Определить количество пар соседних элементов, которые имеют одинаковые абсолютные значения, но противоположные знаки | |
70 / 9 | [0, 100] | Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение | |
45 / 4 | [-50, 50] | Заменить все элементы с положительными значениями абсолютным значением отрицательного элемента с максимальным абсолютным значением | |
50 / 6 | [-50, 50] | Подсчитать количество пар соседних элементов с одинаковыми значениями | |
50 / 4 | [-100, 100] | Во всех последовательностях положительных чисел ограничить значения тех элементов, абсолютное значение которых ниже абсолютного среднего для этой последовательности | |
75 / 8 | [-100, 100] | Заменить каждый элемент на среднее арифметическое его и его соседей слева и справа. | |
80 / 4 | [-100, 100] | Найти ту непрерывную последовательность положительных чисел, сумма элементов в которой максимальная | |
60 / 4 | [-50, 50] | Во всех последовательностях отрицательных чисел поменять местами элементы с максимальным и минимальным значениями | |
30 / 3 | [-100, 100] | Во всех последовательностях положительных чисел ограничить снизу значения тех элементов, значения которых меньше среднего для этой последовательности | |
40 / 3 | [-50, 50] | Подсчитать количество пар соседних элементов, которые имеют противоположные знаки | |
50 / 5 | [-50, 50] | Для каждого положительного элемента определить, есть ли в массиве отрицательный элемент с противоположным значением; если да, заменить эти элементы на 0 | |
40 / 7 | [-100, 100] | Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой, а нули - между ними | |
100 / 4 | [0, 100] | Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов | |
50 / 8 | [-100, 100] | Ограничить значения всех элементов, абсолютные значения которых превышают среднее для положительных и отрицательных элементов | |
55 / 6 | [-50, 50] | Вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел | |
45 / 3 | [0, 100] | Подсчитать количество участков, которые образуют непрерывные последовательности чисел с неуменьшающимися значениями | |
65 / 5 | [-50, 50] | Найти из непрерывных последовательностей отрицательных чисел ту, которая имеет наибольшее абсолютное значение среднего арифметического ее элементов | |
40 / 5 | [-100, 100] | Во всех последовательностях отрицательных чисел изменить порядок элементов на противоположный и зеркально поменять последовательности местами | |
50 / 5 | [-50, 50] | Во всех последовательностях положительных чисел изменить порядок элементов на противоположный | |
75 / 8 | [0, 100] | Найти непрерывный участок из 10 элементов, сумма которых максимальна | |
45 / 5 | [-50, 50] | Вывести начальные индексы всех непрерывных последовательностей чисел с неувеличивающимися значениями | |
55 / 4 | [-100, 100] | Вывести начальные индексы всех непрерывных последовательностей неотрицательных чисел, длина которых больше 5 | |
80 / 7 | [-100, 100] | Заменить все элементы с отрицательными значениями средним арифметическим значением всех положительных элементов | |
55 / 6 | [-50, 50] | Найти непрерывные участки, на которых сумма элементов равна 0 | |
65 / 5 | [-50, 50] | Определить среднюю длину непрерывных участков положительных чисел | |
50 / 4 | [-50, 50] | Подсчитать количество всех, непрерывных последовательностей положительных чисел, длина которых больше 7 | |
65 / 6 | [-100, 100] | Разместить все элементы с нулевыми значениями в левой части массива, элементы с отрицательными значениями - за ними, а за ними - элементы с положительными значениями | |
30 / 4 | [-100, 100] | Во всех последовательностях положительных чисел заменить значения элементов с максимальным и минимальным значением на среднее для этой последовательности | |
75 / 5 | [-100, 100] | Заменить все элементы с отрицательным значением на значение минимального не равного 0 положительного элемента |
Контрольные вопросы.
1. Что такое массив?
2. Объявление массива в С#.
3. Создание экземпляра массива.
4. Какими значениями инициализируется вновь созданный массив по умолчанию?
5. Правила обращения к элементам массива.
6. Способы инициализации элементов массива.
7. Структура инициализации элементов массива с использованием параметрического цикла.
8. Структура цикла foreach, его назначение и отличия от параметрического цикла for.
9. Отличительные особенности обработки массивов в циклах for и foreach.
10. Как в языке С# осуществить генерацию случайного целого числа в диапазоне [a, b]?
11. Как в языке С# произвести инициализацию целочисленной переменной значением, введенным с клавиатуры?
12. Как выполнить поиск максимального по модулю элемента массива?
13. Как определить количество четных элементов массива?
14. Как определить количество отрицательных элементов массива?
15. Как заменить положительные элементы массива нулями?
Дата добавления: 2021-12-14; просмотров: 754;