Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример: Ввести массив А из 6 элементов, найти сумму и количество отрицательных, а так же максимальный элемент






using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication8

{

class Program

{

static void Main(string[] args)

{

const int n = 6;

int[] a = new int[n];

Console.WriteLine(" Исходный массив: ");

for (int i = 0; i < n; ++i)

{

a[i] = Convert.ToInt16(Console.ReadLine());

}

long sum = 0; // сумма отрицательных элементов

int num =0; // количество отрицательных элементов

for (int i =0; i < n; ++i)

if (a[i] < 0)

sum += a[i]; ++num;

Console.WriteLine(" Сумма отрицательных = " + sum);

Console.WriteLine(" Кол-во отрицательных = " + num);

int max = a[0]; // максимальный элемент

for (int i = 1; i < n; ++i)

if (a[i] > max) max = a[i];

Console.WriteLine(" Максимальный элемент = " + max);

Console.ReadKey();

}

Task1. Дан массив размера N. Вывести его элементы в обратном порядке.

Task2. Дан массив размера N. Вывести вначале его элементы с четными1|нечетными2 индексами, а затем — с нечетными1|четными2.

Task3. Дан целочисленный массив A размера 10. Вывести номер первого1|последнего2 из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[10]. Если таких элементов нет, то вывести 0.

Task4. Дан целочисленный массив размера N. Вывести вначале все его четные1|нечетные2 элементы, а затем — нечетные1|четные2.

Task5. Поменять местами минимальный и максимальный элементы массива размера 10.

Task6. Заменить все положительные1|отрицательные2 элементы целочисленного массива размера 10 на значение минимального3|максимального4.

Task7. Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.

Task8. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево1|вправо2 на одну позицию.

Task9. Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево1|вправо2 на k позиций.

Task10. Проверить, образуют ли элементы целочисленного массива размера N арифметическую1|геометрическую2 прогрессию. Если да, то вывести разность1|знаменатель2 прогрессии, если нет — вывести 0.

Task11. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем [четные и нечетные]1|[положительные и отрицательные]2 числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.

Task12. Дан массив размера N. Найти количество его локальных минимумов1|максимумов2.

Task13. Дан массив размера N. Найти максимальный1|минимальный2 из его локальных минимумов1|максимумов2.

Task14. Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают1|убывают2.

Task15. Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).

Task16. Дано вещественное число R и массив размера N. Найти элемент массива, который наиболее1|наименее2 близок к данному числу.

Task17. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наиболее1|наименее2 близка к данному числу.

Task18. Дан массив размера N. Найти номера двух ближайших чисел из этого массива.

Task19. Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.

Task20. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся [менее двух раз]1|[более двух раз]2|[ровно два раза]3|[ровно три раза]4.

 

 

Задачи на использование одномерных целочисленных массивов. Условие вида " дан массив" означает, что пользователем вводится величина размерности и все элементы массива с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Если по ходу решения задачи требуется создание дополнительных массивов, размерность которых изначально неизвестна, необходимо выполнить предварительную обработку исходного массива, для выяснения размерности вновь создаваемого. Не допускается использование операторов, прерывающих ход программы (break, goto). Ввод массивов, обработка и вывод результатов реализуется отдельными методами.

Task01. Даны два массива A и B одинакового размера N. Сформировать новый массив C того же размера, каждый элемент которого равен максимальному из элементов массивов A и B с тем же индексом.

Task02.Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B все четные числа из исходного массива (в том же порядке) и вывести размер полученного массива B и его содержимое.

Task03.Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен сумме элементов массива A с номерами от 0 до K.

Task04.Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен среднему арифметическому элементов массива A с номерами от 0 до K.

Task05.Дан массив A размера N. Сформировать два новых массива B и C: в массив B записать все положительные элементы массива A, в массив C — все отрицательные (сохраняя исходный порядок следования элементов). Вывести вначале размер и содержимое массива B, а затем — размер и содержимое массива C.

Task06.Даны два массива A и B, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий массив C остался упорядоченным по возрастанию

Task07.Даны два массива A и B. Распечатать те элементы, которые присутствуют в обоих массивах.

Task08.Даны два массива A и B. Распечатать те элементы массива А, которых нет в массиве В. Распечатать те элементы массива В, которых нет в массиве А.

Task09.Даны два массива A и B. Определить которых из них имеет больший диапазон, т.е. разницу между самым большим и самым меньшим значением.

Task10.Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B все элементы с порядковыми номерами, кратными трем (3, 6, …), и вывести размер полученного массива B и его содержимое. Условный оператор не использовать.

Задачи на исследование серий в одномерных целочисленных массивах. Условие вида " дан массив" означает, что пользователем вводится величина размерности и все элементы массива с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Если по ходу решения задачи требуется создание дополнительных массивов, размерность которых изначально неизвестна, необходимо выполнить предварительную обработку исходного массива, для выяснения размерности вновь создаваемого. Не допускается использование операторов, прерывающих ход программы (break, goto). Ввод массивов, обработка и вывод результатов реализуется отдельными методами.

Task01.Дан целочисленный массив A размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Сформировать два новых целочисленных массива B и C одинакового размера, записав в массив B длины всех серий исходного массива, а в массив C — значения элементов, образующих эти серии.

Task02.Дан целочисленный массив размера N. Вставить перед каждой его серией элемент с нулевым значением. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Task03.Дан целочисленный массив размера N. Вставить после каждой его серии элемент с нулевым значением. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Task04. Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Task05.Дан целочисленный массив размера N. Преобразовать массив, уменьшив каждую его серию на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Task06.Дано целое число K и целочисленный массив размера N. Удалить из массива серию с номером K. Если серий в массиве меньше K, то вывести массив без изменений. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Task07.Дано целое число K и целочисленный массив размера N. Поменять местами первую серию массива и его серию с номером K. Если серий в массиве меньше K, то вывести массив без изменений. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Task08.Дано целое число L и целочисленный массив размера N. Заменить каждую серию массива, длина которой меньше L, на один элемент с нулевым значением. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Task09.Дан целочисленный массив размера N. Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Task10.Дан целочисленный массив размера N. Преобразовать массив, увеличив все его серии наибольшей длины на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).

Массивы многомерные
Массивы могут иметь несколько измерений. Например, матрица - это двухмерный массив. В примере показано объявление двухмерного и трёхмерного массивов: int[, ] my_matrix1 = new int[4, 2]; int[,, ] my_cube1 = new int[4, 2, 3]; Массив можно инициализировать при объявлении, как показано в следующем примере: int[, ] array2D = new int[, ] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; int[,, ] array3D = new int[,, ] { { { 1, 2, 3 } }, { { 4, 5, 6 } } }; int[, ] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; Если нужно создать переменную массива без инициализации, то необходимо использовать оператор new, чтобы присвоить массив переменной. Например: int[, ] array5; array5 = new int[, ] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; // OK//array5 = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}; // Будет ошибка! В следующем примере кода переменные массивов инициализируются значениями по умолчанию: int[, ] array6 = new int[10, 10]; Доступ к каждому элементу массива можно осуществить через квадратные скобки. Индексация многомерных массивов начинается с нуля: array5[2, 1] = 25; Пример 1: осуществить ввод и распечатку содержимого матрицы //описываем необходимые переменныеint i, j, M, N; string s; //вводим число элементовConsole.Write(" Введите число строк матрицы N="); s = Console.ReadLine(); N = Convert.ToInt32(s); Console.Write(" Введите число столбцов матрицы M="); s = Console.ReadLine(); M = Convert.ToInt32(s); //создаём двухмерный массив необходимой длиныint[, ] my_matrix= new int[N, M]; //запускаем циклы по всем элементам матрицыfor (i = 0; i < N; i++) //цикл по строкам for (j = 0; j < M; j++) //цикл по столбцам { //вводим i, j-ый элемент Console.Write(" Введите элемент матрицы ({0}, {1}) ", i+1, j+1); s = Console.ReadLine(); my_matrix[i, j] = Convert.ToInt32(s); }Console.WriteLine(); for (i = 0; i < N; i++) { for (j = 0; j < M; j++) Console.Write(" {0, 3} ", my_matrix[i, j]); Сonsole.WriteLine(); }   Пример 2: преобразовать содержимое матрицы так, чтобы в каждой строке была возрастающая последовательность int i, j, k, b, M, N; int[, ] my_matrix = new int[, ] { { 1, 3, 4}, { 1, 4, 8 }, { 5, 8, 6 }, { 7, 8, 2 } }; N = 4; M = 3; for (i = 0; i < N; i++) //цикл по строкам for (j = 0; j < M-1; j++) //цикл по столбцам for (k = 0; k < M - j-1; k++) if (my_matrix[i, k] > my_matrix[i, k+1]) { b = my_matrix[i, k]; my_matrix[i, k] = my_matrix[i, k + 1]; my_matrix[i, k + 1] = b; }

 

1. static intBinarySearch

(Array, object, IComparer); Ищет в одномерном отсортированном массиве Array элемент object с помощью интерфейса IComparer и возвращает индекс элемента или отрицательное число, если элемент не найден

2. public static void Clear (Array, Index, Length); Помещает в Length элементов одномерного массива Array, начиная с элемента Index, значения 0, false или null в зависимости от типа элементов

3. public static voidCopyTo (Array, Index); Копирует из текущего одномерного массива все элементы в массив Array, начиная с индекса Index

4. public static Array Createlnstance

(Type ElementsType, int[] Lengths, int [] LowerBounds); Создает многомерный массив из элементов типа ElementsType с количеством Lengths элементов по каждому измерению и нижними границами индексов LowerBounds. Перегруженные методы позволяют создавать одно- и многомерные массивы с индексами, начинающимися с 0

5. public virtual IEnumerator GetEnumerator(); Возвращает итератор интерфейса IEnumerator для текущего массива

6. public intGetLenght (Dimension); Возвращает количество элементов массива по измерению Dimension Возвращает итератор интерфейса IEnumerator для текущего массива

7. public int GetLowerBound (Dimension); Возвращает минимальное значение ин­декса по измерению Dimension

8. public intGetUpperBound (Dimension); Возвращает максимальное значение индекса по измерению Dimension

9. X public object GetValue | (Index); Возвращает значение элемента Index текущего одномерного массива. Перекрытые методы приспособлены для работы с многомерными массивами

10. public static void Reverse (Array); Изменяет порядок следования элементов одномерного массива Array на обратный

11. public void SetValue(Value, Index); Устанавливает значение Value элемента Index текущего одномерного массива. Перекрытые методы приспособлены для работы с многомерными массивами

12. public static void Sort (Array); Сортирует элементы одномерного массива Array

 

Массивы массивов
Массив массивов — это массив, элементы которого сами являются массивами. Элементы массива массивов могут иметь различные размеры и измерения. Массивы массивов иногда также называются " невыровненными массивами". В следующих примерах показано, как выполняется объявление, инициализация и доступ к массивам массивов. int[][] mas_mas = new int[3][]; mas_mas[0] = new int[5]; mas_mas[1] = new int[4]; mas_mas[2] = new int[2]; Для заполнения элементов массива значениями можно также использовать инициализаторы, при этом размер массива знать не требуется. mas_mas[0] = new int[] { 1, 3, 5, 7, 9 }; mas_mas[1] = new int[] { 0, 2, 4, 6 }; mas_mas[2] = new int[] { 11, 22 }; Также массив можно инициализировать путем объявления. int[][] mas_mas2 = new int[][]{ new int[] {1, 3, 5, 7, 9}, new int[] {0, 2, 4, 6}, new int[] {11, 22}}; Также можно использовать сокращенную форму. Обратите внимание, что при инициализации элементов оператор new опускать нельзя, так как инициализации по умолчанию для этих элементов не существует. int[][] mas_mas3 ={ new int[] {1, 3, 5, 7, 9}, new int[] {0, 2, 4, 6}, new int[] {11, 22}}; C#: динамические массивы Динамическим называют массив, который способен изменять свои размеры при добавлении и удалении элементов, другими словами — динамически выделять дополнительную память для хранения новых элементов и освобождать ее при удалении. Как известно стандартные массивы в C# являются immutable (неизменными), их размеры жестко задаются при инициализации объекта массива. Класс List Класс List (список) является мощной реализацией динамического массива на платформе.NET. Это, пожалуй, наиболее популярная среди разработчиков коллекция.NET. Краткий пример создания списка со строковыми элементами (.NET C#)
  static void Main(string[] args) { // Объявили var ar = new List< string> ();   // Добавляем ar.Add(" Солнце"); ar.Add(" Угольные шахты"); ar.Add(" Море"); ar.Add(" Песок");   // Удаляем по индексу " Угольные шахты". ar.RemoveAt(1);   // Выводим на консаоль foreach (var item in ar) Console.WriteLine(item); Console.ReadLine(); }

Вывод консоли

Солнце
Море
Песок

 

Лабораторная работа№5 (6)

Двумерные массивы (матрицы)






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.