Россия |
Опубликован: 19.02.2009 | Уровень: специалист | Доступ: платный
Лекция 8:
Массивы
Практикум
-
Дана последовательность целых чисел.Замечание. Задачи из данного пункта решить двумя способами, используя одномерный массив, а затем двумерный. Размерность массива вводится с клавиатуры.
- Заменить все положительные элементы противоположными им числами.
Пример 1: для одномерного массива
using System; namespace ConsoleApplication2 { class Class { static int [] Input () { Console.WriteLine("введите размерность массива"); int n=int.Parse(Console.ReadLine()); int []a=new int[n]; for (int i = 0; i < n; ++i) { Console.Write("a[{0}]= ", i); a[i]=int.Parse(Console.ReadLine()); } return a; } static void Print(int[] a) { for (int i = 0; i < a.Length; ++i) Console.Write("{0} ", a[i]); Console.WriteLine(); } static void Change(int[] a) { for (int i = 0; i < a.Length; ++i) if (a[i] > 0) a[i] = -a[i]; } static void Main() { int[] myArray=Input(); Console.WriteLine("Исходный массив:"); Print(myArray); Change(myArray); Console.WriteLine("Измененный массив:"); Print(myArray); } } }
Пример 2: для двумерного массива
using System; namespace ConsoleApplication { class Class { static int [,] Input (out int n, out int m) { Console.WriteLine("введите размерность массива"); Console.Write("n = "); n=int.Parse(Console.ReadLine()); Console.Write("m = "); m=int.Parse(Console.ReadLine()); int [,]a=new int[n, m]; for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) { Console.Write("a[{0},{1}]= ", i, j); a[i, j]=int.Parse(Console.ReadLine()); } return a; } static void Print(int[,] a) { for (int i = 0; i < a.GetLength(0); ++i,Console.WriteLine() ) for (int j = 0; j < a.GetLength(1); ++j) Console.Write("{0,5} ", a[i, j]); } static void Change(int[,] a) { for (int i = 0; i < a.GetLength(0); ++i) for (int j = 0; j < a.GetLength(1); ++j) if (a[i, j] > 0) a[i, j] = -a[i, j]; } static void Main() { int n,m; int[,] myArray=Input(out n, out m); Console.WriteLine("Исходный массив:"); Print(myArray); Change(myArray); Console.WriteLine("Измененный массив:"); Print(myArray); } } }
- Заменить все элементы, меньшие заданного числа, этим числом.
- Заменить все элементы, попадающие в интервал , нулем.
- Заменить все отрицательные элементы, не кратные , противоположными им числами.
- Все элементы, меньшие заданного числа, увеличить в два раза.
- Подсчитать среднее арифметическое элементов.
- Подсчитать среднее арифметическое отрицательных элементов.
- Подсчитать количество нечетных элементов.
- Подсчитать сумму элементов, попадающих в заданный интервал.
- Подсчитать сумму элементов, кратных 9.
- Подсчитать количество элементов, не попадающих в заданный интервал.
- Подсчитать сумму квадратов четных элементов.
- Вывести на экран номера всех элементов больших заданного числа.
- Вывести на экран номера всех нечетных элементов.
- Вывести на экран номера всех элементов, которые не делятся на 7.
- Вывести на экран номера всех элементов, не попадающих в заданный интервал.
- Определить, является ли произведение элементов трехзначным числом.
- Определить, является ли сумма элементов двухзначным числом.
- Вывести на экран элементы с четными индексами (для двумерного массива - сумма индексов должна быть четной).
- Вывести на экран положительные элементы с нечетными индексами (для двумерного массива - первый индекс должен быть нечетным).
- Заменить все положительные элементы противоположными им числами.
-
Дана последовательность из n действительных чисел.Замечание. Задачи из данного пункта решить, используя одномерный массив.
- Подсчитать количество максимальных элементов.
Пример.
using System; namespace ConsoleApplication { class Class { static int [] Input () { Console.WriteLine("введите размерность массива"); int n=int.Parse(Console.ReadLine()); int []a=new int[n]; for (int i = 0; i < n; ++i) { Console.Write("a[{0}]= ", i); a[i]=int.Parse(Console.ReadLine()); } return a; } static int Max(int[] a) { int max=a[0]; for (int i = 1; i < a.Length; ++i) if (a[i] > max) max=a[i]; return max; } static void Main() { int[] myArray=Input(); int max=Max(myArray); int kol=0; for (int i=0; i<myArray.Length;++i) if (myArray[i]==max)++kol; Console.WriteLine("Количество максимальных элементов = "+kol); } } }
- Вывести на экран номера всех минимальных элементов.
- Заменить все максимальные элементы нулями.
- Заменить все минимальные элементы на противоположные.
- Поменять местами максимальный элемент и первый.
- Вывести на экран номера всех элементов, не совпадающих с максимальным.
- Найти номер первого минимального элемента.
- Найти номер последнего максимального элемента.
- Подсчитать сумму элементов, расположенных между максимальным и минимальным элементами (минимальный и максимальный элементы в массиве единственные). Если максимальный элемент встречается позже минимального, то выдать сообщение об этом.
- Найти номер первого максимального элемента.
- Найти номер последнего минимального элемента.
- Подсчитать сумму элементов, расположенных между первым максимальным и последним минимальными элементами. Если максимальный элемент встречается позже минимального, то выдать сообщение об этом.
- Поменять местами первый минимальный и последний максимальный элементы.
- Найти максимум из отрицательных элементов.
- Найти минимум из положительных элементов.
- Найти максимум из модулей элементов.
- Найти количество пар соседних элементов, разность между которыми равна заданному числу.
- Подсчитать количество элементов, значения которых больше значения предыдущего элемента.
- Найти количество пар соседних элементов, в которых предыдущий элемент кратен последующему.
- Найти количество пар соседних элементов, в которых предыдущий элемент меньше последующего.
- Подсчитать количество максимальных элементов.
-
Дан массив размером nxn, элементы которого целые числа.Замечание. При решении задач из данного пункта использовать двумерный массив.
- Подсчитать среднее арифметическое нечетных элементов, расположенных выше главной диагонали.
Пример.
using System; namespace ConsoleApplication { class Class { static int [,] Input (out int n) { Console.WriteLine("введите размерность массива"); Console.Write("n = "); n=int.Parse(Console.ReadLine()); int [,]a=new int[n, n]; for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) { Console.Write("a[{0},{1}]= ", i, j); a[i, j]=int.Parse(Console.ReadLine()); } return a; } static void Print(int[,] a) { for (int i = 0; i < a.GetLength(0); ++i,Console.WriteLine() ) for (int j = 0; j < a.GetLength(1); ++j) Console.Write("{0,5} ", a[i, j]); } static double Rezalt(int[,] a) { int k=0; double s=0; for (int i = 0; i < a.GetLength(0); ++i) for (int j = i+1; j < a.GetLength(1); ++j) if (a[i, j] %2!= 0) {++k; s+=a[i, j];} if (k!=0) return s/k; else return 0; } static void Main() { int n; int[,] myArray=Input(out n); Console.WriteLine("Исходный массив:"); Print(myArray); double rez=Rezalt(myArray); Console.WriteLine("Среднее арифметическое ={0:f2}", rez); } } }
- Подсчитать среднее арифметическое четных элементов, расположенных ниже главной диагонали.
- Подсчитать сумму элементов, расположенных на побочной диагонали.
- Подсчитать среднее арифметическое ненулевых элементов, расположенных над побочной диагональю.
- Подсчитать среднее арифметическое элементов, расположенных под побочной диагональю.
- Поменять местами столбцы по правилу: первый с последним, второй с предпоследним и т.д.
- Поменять местами две средних строки, если количество строк четное, и первую со средней строкой, если количество строк нечетное.
- Поменять местами два средних столбца, если количество столбцов четное, и первый со средним столбцом, если количество столбцов нечетное.
- Если количество строк в массиве четное, то поменять строки местами по правилу: первую строку со второй, третью - с четвертой и т.д. Если количество строк в массиве нечетное, то оставить массив без изменений.
- Если количество столбцов в массиве четное, то поменять столбцы местами по правилу: первый столбец со вторым, третий - с четвертым и т.д. Если количество столбцов в массиве нечетное, то оставить массив без изменений.
- Вычислить , где - натуральное число.
- Подсчитать норму матрицы по формуле
- Подсчитать норму матрицы по формуле
- Вывести элементы матрицы в следующем порядке:
- Выяснить, является ли матрица симметричной относительно главной диагонали.
- Заполнить матрицу числами от 1 до n (где , а - количесто строк, а - количество столбцов прямоугольной матрицы) следующим образом:
- Определить, есть ли в данном массиве строка, состоящая только из положительных элементов.
- Определить, есть ли в данном массиве столбец, состоящий только из отрицательных элементов.
- В каждой строке найти максимум и заменить его на противоположный элемент.
- В каждом столбце найти минимум и заменить его нулем.
- Подсчитать среднее арифметическое нечетных элементов, расположенных выше главной диагонали.
-
Дан массив размером nxn, элементы которого целые числа.Замечание. Для хранения массив n?n использовать ступенчатый массив.
- Найти максимальный элемент в каждой строке и записать данные в новый массив.
Пример
using System; namespace ConsoleApplication { class Class { static int [][] Input () { Console.WriteLine("введите размерность массива"); Console.Write("n = "); int n=int.Parse(Console.ReadLine()); int [][]a=new int[n][]; for (int i = 0; i < n; ++i) { a[i]=new int [n]; for (int j = 0; j < n; ++j) { Console.Write("a[{0},{1}]= ", i, j); a[i][j]=int.Parse(Console.ReadLine()); } } return a; } static void Print1(int[] a) { for (int i = 0; i < a.Length; ++i) Console.Write("{0,5} ", a[i]); } static void Print2(int[][] a) { for (int i = 0; i < a.Length; ++i,Console.WriteLine() ) for (int j = 0; j < a[i].Length; ++j) Console.Write("{0,5} ", a[i][j]); } static int Max(int[] a) { int max=a[0]; for (int i = 1; i < a.Length; ++i) if (a[i] >max) {max=a[i];} return max; } static void Main() { int[][] myArray=Input(); Console.WriteLine("Исходный массив:"); Print2(myArray); int[]rez=new int [myArray.Length]; for (int i=0;i<myArray.Length; ++i) rez[i]=Max(myArray[i]); Console.WriteLine("Новый массив:"); Print1(rez); } } }
- Найти минимальный элемент в каждом столбце и записать данные в новый массив.
- Четные столбцы таблицы заменить на вектор .
- Нечетные строки таблицы заменить на вектор .
- Вычислить , где - двумерная матрица, - вектор.
- Для каждой строки подсчитать количество положительных элементов и записать данные в новый массив.
- Для каждого столбца подсчитать сумму отрицательных элементов и записать данные в новый массив.
- Для каждого столбца подсчитать сумму четных положительных элементов и записать данные в новый массив.
- Для каждой строки подсчитать количество элементов, больших заданного числа, и записать данные в новый массив.
- Для каждого столбца найти первый положительный элемент и записать данные в новый массив.
- Для каждой строки найти последний четный элемент и записать данные в новый массив.
- Для каждого столбца найти номер последнего нечетного элемента и записать данные в новый массив.
- Для каждой строки найти номер первого отрицательного элемента и записать данные в новый массив.
- Для каждой строки найти сумму элементов с номерами от до и записать данные в новый массив.
- Для каждого столбца найти произведение элементов с номерами от до и записать данные в новый массив.
- Для каждой строки подсчитать сумму элементов, не попадающих в заданный интервал, и записать данные в новый массив.
- Подсчитать сумму элементов каждой строки и записать данные в новый массив. Найти максимальный элемент нового массива.
- Подсчитать произведение элементов каждого столбца и записать данные в новый массив. Найти минимальный элемент нового массива.
- Для каждой строки найти номер первой пары неравных элементов. Данные записать в новый массив.
- Для каждого столбца найти номер первой пары одинаковых элементов. Данные записать в новый массив.
- Найти максимальный элемент в каждой строке и записать данные в новый массив.