2. Составить программу, которая получает матрицу Х размерностью m*n. Программа в каждой строке определяет наименьший элемент и его индексы и формирует из этих чисел матрицу, расположив в первом ее столбце наименьшие элементы строк, а во втором и третьем столбцах их индексы.
Вариант 18
1. Дан массив целых чисел, в котором могут быть повторяющиеся числа. Создать новый массив, в который поместить только разные числа из исходного массива. Если новый массив равен исходному массиву, выдать об этом соответствующее сообщение.
2. Составить программу, которая получает матрицу Х размерностью m*n и формирует новую матрицу, удалив из исходной матрицы те строки или столбцы, которые оказались равными между собой. Программа выдает на экран исходную и сформированную матрицу с указанием, сколько строк и столбцов удалось удалить в исходной матрице.
Вариант 19
1. Дан массив действительных чисел. Создать новый массив, каждый элемент которого равен среднему арифметическому всех предшествующих ему элементов.
2.
Составить программу, которая получает
матрицу А
размерностью m*m
и, вычислив сумму и количество элементов
матрицы А,
находящихся под главной диагональю и
удовлетворяющих условию:
,
формирует новую матрицу, удалив из
исходной матрицы те строки, которые не
содержат элементов отвечающих указанному
условию.
Вариант 20
1. Даны натуральное число n, целые числа а1...аn . Требуется получить последовательность x1 ,y1 ,x2 ,y2,...,xk ,yk , где x1 ,... xm - взятые в порядке следования четные члены последовательности а1...аn , а y1...yl - нечетные члены, k=min(m, l).
2. Составить программу, которая получает матрицу В размерностью m*n. Программа формирует новую матрицу, меняя местами элементы строки с номером i на элементы строки с номером j исходной матрицы В.
Вариант 21
1. Дан массив вещественных чисел а1...аn. Требуется получить новый массив b1...bn, где каждое bi - среднее арифметическое всех членов последовательности а1...аn кроме аi(i=1,2,…., n).
2. Составить программу, которая получает матрицу C размерностью m*n. Программа находит наибольший элемент матрицы С и его индексы и получает новую матрицу, разделив все элементы исходной матрицы (кроме найденного наибольшего) на сумму индексов самого элемента и найденного максимального элемента.
Вариант 22
1. Дан массив целых чисел. Если в массиве сумма всех элементов четное число, то получить новый массив, удалив из исходного члены с максимальным значением, в противном случае удалить его минимальный элемент.
2. Составить программу, которая получает матрицу Х размерностью n*n. Программа определяет количество положительных, нулевых и отрицательных элементов в каждом столбце матрицы X и формирует из них матрицу Y, размером 3*n.
Вариант 23
1. Дан массив целых чисел. Если в исходном массиве максимальный элемент нечетное число, то получить новый массив. В этом новом массиве все члены исходной последовательности с четными номерами, предшествующие первому по порядку члену с максимальным значением, помножить на максимальный элемент. Если в исходном массиве максимальный элемент четное число, то массив новый не создается и выдается сообщение об этом.
2. Составить программу, которая получает матрицу А размерностью m*n и формирует новую матрицу, строки которой расположены в порядке возрастания сумм элементов этих строк.
Вариант 24
1. Дан массив целых чисел, каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются (+,-,+,-,+,-... или -,+,-,+,-,+,...), то в новый массив включить саму исходная последовательность. Иначе получить новый массив, включив в него все отрицательные члены последовательности, сохранив обратный порядок их следования.
2. Составить программу, которая получает матрицу А размерностью m*n и формирует новую матрицу, все строки которой упорядочены по возрастанию суммы модулей элементов строки.
Вариант 25
1. Дан массив целых чисел. Если в данной последовательности ни одно четное число не расположено после нечетного числа, то получить новый массив, включив в него все отрицательные члены последовательности, иначе - все положительные. Порядок следования чисел в первом случае не меняется, во втором случае заменяется обратным порядком.
2. Составить программу, которая получает матрицу А размерностью n*n и формирует новую матрицу, записав на место отрицательных элементов нули, а на место положительных единицы. Программа выводит на экран исходную и преобразованную матрицы, а также их нижнюю треугольную матрицу.
Вариант 26
1. Дан массив действительных чисел, среди которых заведомо есть как отрицательные числа, так и неотрицательные. Получить а1 x1 +...+аs xs , гду а1... аp - отрицательные члены исходной последовательности, взятые в порядке их следования, x1... xq - неотрицательные члены, взятые в обратном порядке, s=min(p, q).
2. Составить программу, которая получает матрицу C размерностью m*n. Программа находит наибольший элемент матрицы С и его индексы и получает новую матрицу, разделив все элементы исходной матрицы (кроме найденного наибольшего) на сумму индексов самого элемента и найденного максимального элемента.
Вариант 27
1. Дан массив n целых чисел. Создать новый массив, оставив исходный массив без изменений, если он упорядочен по не убыванию; в противном случае удалить каждый N элемент (N<=n/2), сохранив прежний порядок остальных элементов.
2. Составить программу, которая получает матрицу А размерностью n*n и формирует новую транспонированную матрицу. Программа выводит исходную и транспонированную матрицы, элементы главной диагонали.
Вариант 28
1. Дан массив n действительных чисел. Если исходный массив имеет равное количество положительных и отрицательных чисел, создать новый массив, упорядочив исходный массив следующим образом. Первыми идут два максимальных элемента, затем два минимальных; далее два максимальных и два минимальных из оставшихся и т.д. Если количество положительных и отрицательных элементов различно, то выдать о том, что новый массив не создан.
2. Составить программу, которая получает матрицу А размерностью m*n. Из положительных элементов матрицы A программа формирует матрицу B, размером m*r. Количество элементов r в строке матрицы B определяется как максимальное число положительных элементов среди всех строк матрицы A. В каждой строке матрицы B расположены подряд положительные элементы соответствующей строки матрицы A. На место недостающих положительных значений в матрице В дописываются нули.
Дан массив действительных чисел. Создать новый массив, в который поместить элементы в следующем порядке: максимальный – минимальный, максимальный из оставшихся – минимальный из оставшихся и т.д.
using System;
namespace з1
{
class Class1
{
static void Main(string[] args)
{
Console.WriteLine("Введите размерность");
double[] A=new double[Convert.ToInt32(Console.ReadLine())];
double[] C=new double[A.Length];
double[] Sort=new double[A.Length];
for (int i=0; i<A.Length; i++)
{
int h=i;
Console.WriteLine("Введите элемент "+(++h));
A[i]=Convert.ToDouble(Console.ReadLine());
}
Array.Copy(A,0,C,0,A.Length);
for (int i=0; i<(C.Length/2)+(C.Length%2); i++)
{
double max=C[i];
int nom=i;
for (int j=i; j<C.Length; j++)
{
if (C[j]>max)
{
max=C[j];
nom=j;
}
}
double f=C[i];
C[i]=max;
C[nom]=f;
}
for (int i=0; i<Sort.Length; i++)
{
int h=i*2;
if (i<Sort.Length/2+(Sort.Length%2))
{
Sort[h]=C[i];
}
else
{
Sort[2*C.Length-h-1]=C[i];
}
}
Console.WriteLine("\n"+"Исходный вектор");
for (int j=0; j<A.Length; j++)
{
Console.Write(A[j]+"\t");
}
Console.WriteLine("\n"+"\n"+"Результат");
for (int j=0; j<Sort.Length; j++)
{
Console.Write(Sort[j]+"\t");
}
}
} }
Даны матрица Х размерности m*n и вектор А размерности k. Сформировать новую матрицу, в которой все элементы, совпадающие с элементами вектора А, заменены на нули. Если есть строки и столбцы, в которых все элементы равны нулю, то вывести сообщение.
class Class1
{
static void Main(string[] args)
{
Console.WriteLine("Введите количество строк матрицы");
int m=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите количество столбцов матрицы");
int n=Convert.ToInt32(Console.ReadLine());
double[,] matr=new double [m,n];
//Ввод матрицы
for (int i=0; i<m; i++)
{
for (int j=0; j<n; j++)
{ int h=i,g=j;
Console.WriteLine("Введите элемент "+(++h)+(++g));
matr[i,j]=Convert.ToDouble(Console.ReadLine());
}
}//Конец ввода матрицы
//Ввод вектора
Сonsole.WriteLine("Введите размерность вектора");
int k=Convert.ToInt32(Console.ReadLine());
double[] vect=new double [k];
for (int t=0; t<k; t++)
{
int r=t;
Console.WriteLine("Введите "+(++r)+"-й элемент вектора");
vect[t]=Convert.ToDouble(Console.ReadLine());
}//Конец ввода вектора
double [,] newMatr=new double[m,n];
Array.Copy(matr,0,newMatr,0,matr.Length);
//Сравнение матрицы и вектора
for (int i=0; i<m; i++)
{ for (int j=0; j<n; j++)
{
foreach (double el in vect)
{ if (el==newMatr[i,j])
{
newMatr[i,j]=0;
}
}
}
}//Конец сравнения
Console.Write("\n"+"==Исходная матрица=="+"\n");
for (int i=0; i<m; i++)
{
for (int j=0; j<n; j++)
{
Console.Write(matr[i,j]+"\t");
}
Console.WriteLine();
}
Console.Write("\n"+"==Исходный вектор=="+"\n");
foreach(double el in vect) Сonsole.Write(el+"\t");
Console.Write("\n"+"\n"+"==Результат=="+"\n");
for (int i=0; i<m; i++)
{
for (int j=0; j<n; j++)
{
Console.Write(newMatr[i,j]+"\t");
}
Console.WriteLine();
}
//Проверка строк
for (int i=0; i<m; i++)
{ bool flag=true;
for (int j=0; j<n; j++) if (newMatr[i,j]!=0) {flag=false;};
int h=i;
if (flag) {Console.WriteLine("В {0}-й строке все элементы равны 0!",h+1);}
//Проверка столбцов
for (int j=0; j<n; j++)
{ bool flag=true;
for (int i=0; i<m; i++) if (newMatr[i,j]!=0) {flag=false;};
int h=j;
if (flag)
{Console.WriteLine("В {0}-м столбце все элементы равны 0!",h+1);}
}
}
}
Цель работы: составление программ, использующих сложные типы данных и их методы.
Перечислимый тип описывается с помощью ключевого слова enum
enum <имяТипа>
{
<значение1>,
<значение2>,
…,
<значениеN>
}
Пример:
enum ort : byte
{
norden,
suden,
osten ,
westen =4
}
ort myDirect = ort.osten;
// создаем переменную перечислимого типа
Console.WritelLine(“myDirect= {0}”, myDirect);
// выводим имя значения из перечисления
Console.WritelLine(“myDirect= {0}”, (byte)myDirect);
//выводим порядковый номер значения
// из списка перечисления
Рис. 21. Вывод переменной типа перечисление
Перечислимый тип обладает базовым типом. По умолчанию это int.
Но можно задать и другой тип в качестве базового.
enum <имяТипа> : <базовый тип>
{
<значение1>,
<значение2>,
…,
<значениеN>
}
Допустимы базовые типы:
byte, sbyte, short, ushort, int, long, ulong.
По умолчанию каждому значению перечислимого типа автоматически присваивается соответствующее значение базового типа, начиная с нуля, в том порядке, в котором они написаны, т.е. <значение1>=0, <значение2>=1, <значение3>=2 и т.д.
Можно самостоятельно задать фактические базовые значения для каждого из значений перечисления
enum <имяТипа> : <базовый тип>
{
<значение1> = <фактическоеЗначение1>,
<значение2> = <фактическоеЗначение2>,
…,
<значениеN> = <фактическоеЗначениеN>
}
Также можно задавать идентичные базовые значения для нескольких перечислимых значений, используя одно значение как базовое
enum <имяТипа> : <базовый тип>
{
<значение1> = <фактическоеЗначение1>,
<значение2> = <значение1>,
<значение3>,
…,
<значениеN> = <фактическоеЗначениеN>
}
Всем значения, оставшимся неуказанными, будут автоматически присвоены базовые значения, на 1 больше последнего указанного фактического значения. Например, если
enum <имяТипа> : <базовый тип>
{
<значение1> = <фактическоеЗначение1>,
<значение2>,
<значение3>=<значение1>,
<значение4>,
…,
<значениеN> = <фактическоеЗначениеN>
}
то окажется, что <значение2>=<значение4>.
Примеры:
enum ort : byte
{
norden=1 , // 1
sudden=osten, // 1
osten=norden, // 1
westen // 2
}
Можно писать и так
enum ort : byte
{
norden=1+1 , // 2
suden=osten+2, // 4
osten=norden-1 // 1
westen // 2
}
Рассмотрим преобразование типов для перечислений.
enum ort : byte
{
norden=1,
suden,
osten,
westen
}
static void Main(string[] args)
{
byte directByte;
string directString;
ort myDirect = ort.suden;
Console.WriteLine("myDirect= {0}", myDirect);
directByte=(byte)myDirect;
//явное преобразование в byte
directString=Convert.ToString(myDirect);
//преобразование в string
Console.WriteLine("byte эквивалент = {0}", directByte);
Console.WriteLine("string эквивалент ={0}", directString);
}