Программа подсчитываем количество четных и нечетных элементов в массиве. Все элементы массива задаются случайным образом диапазоне от 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# для описания, инициализации и обработки одномерных массивов.
- Создать консольное приложение, в котором реализовать следующие вычисления:
- объявление заданного массива фиксированной заданной длины (прог.);
- инициализацию элементов массива случайными целыми числами в заданном интервале (в одном цикле for);
- вывод элементов массива на консоль (в одном цикле foreach);
- заданную обработку массива и вывод элементов обработанного массива на консоль.
- В качестве результатов вывести исходный и обработанный массивы, а также (если это предполагает задание на обработку) найденное числовое значение.
- Выполнить контрольную пошаговую обработку вручную для массива длиной ручн.
- Сделать вывод.
Варианты заданий к лабораторной работе №3, 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 | [0, 100] | Поменять местами 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. Как заменить положительные элементы массива нулями?