Материал: Разработка консольных приложений в Visual Studio .NET. практикум. Ганцева Е.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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);}

}

}

}

Контрольная работа № 4 перечисления и структуры

Цель работы: составление программ, использующих сложные типы данных и их методы.

Теоретические сведения

Перечислимый тип описывается с помощью ключевого слова 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);

}

Источник: https://studfile.net/preview/16562901/