Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
контрольная ООП.docx
Скачиваний:
6
Добавлен:
02.04.2015
Размер:
84.12 Кб
Скачать

4.1.1.2. Методические указания к выполнению контрольной работы 1

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

Задача 1

Условие задачи – дан вещественный массив A[4,5]. Требуется определить значения вещественного массива B[4] по правилу:

B[i]=максимальному значению i-й строки массива A, если A[i,0]>=0;

B[i]=минимальному значению i-й строки массива A, если A[i,0]<0.

Значение переменной i изменяется от 0 до 3.

В данной задаче необходимо написать программу, выполняющую следующие действия:

  1. С клавиатуры ввести данные в массив A[4,5].

  2. Определить массив B[4].

  3. Вывести на экран исходный (введенный с клавиатуры) массив A и вычисленный массив B.

Текст программы на С#

using System;

class Program

{

static void Main(string[] args)

{

// объявление массивов и переменных

float [, ] a = new float [4,5];

float [ ] b = new float [4];

int i,j;

// ввод данных в массив a

Console.WriteLine("Ввод массива a:");

for (i=0; i<4; i++)

for (j=0; j<5; j++)

{

Console.Write("a[ {0}, {1}]=", i, j);

a[i,j] = Convert.ToSingle(Console.ReadLine() );

}

// расчет массива b

for (i=0; i<4; i++) // организация цикла по строкам массива

if (a[ i, 0] >= 0)

{ // поиск максимального элемента в строке

b[i] = a[ i, 0]; // за максимум приняли элемент a[i][0]

for (j=1; j<5; j++)

if (a [ i, j ] > b[i])

// если элемент массива a[i][j] больше максимума,

b[i] = a[i,j]; // то его принимаем за максимум

}

else

{ // поиск минимального элемента в строке

b[i]=a[i,0]; // за минимум приняли элемент a[i][0]

for (j=1; j<5; j++)

if (a[i,j] < b[i])

// если элемент массива a[i][j] меньше минимума,

b[i] = a[i,j]; // то его принимаем за минимум

}

/* вывод на экран исходного массива a

и полученного массива b */

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

for (i=0; i<4; i++)

{

for (j=0; j<5; j++)

Console.Write("{0,7:#######.##}", a[i,j]);

Console.WriteLine();

}

Console.WriteLine("Полученный массив b:");

for (i=0; i<4; i++)

Console.Write("{0,7:#######.##}", b[i]);

Console.ReadLine();

}

}

Задача 2

Условие задачи – даны целочисленные массивы C[15], D[15]. Каждый массив пpеобpазовать по пpавилу: если компоненты массива упорядочены по возрастанию, то все положительные компоненты следует заменить на значение 0, в противном случае массивы оставить без изменений.

В данной задаче необходимо написать программу, выполняющую следующие действия:

  1. Ввод исходных массивов C и D.

  2. Вывод на экран исходных массивов.

  3. Преобразование массивов.

4. Вывод на экран измененных массивов.

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

Пусть

input() - функция ввода данных

output() - функция вывода на экран

preobr() - функция преобразования массивов

Текст программы на языке C#

using System;

class Program

{

// определение функции ввода массива input()

static void input(ref int[] x, char name)

{

int i;

Console.WriteLine("Вводим массив " + name);

for (i = 0; i < 15; i++)

{

Console.Write(name + "[" + i + "]=");

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

}

}

// определение функции вывода массива output()

static void output(int[] x, string zag)

{

int i;

Console.WriteLine("\n\n" + zag + "\n");

for (i = 0; i < 15; i++)

Console.Write("{0,5}", x[i]);

}

// определение функции преобразования массива preobr()

static void preobr(int[] m)

{

int i, prizn;

prizn = 1; // вспомогательная переменная - если ее значение не

// изменится, значит массив упорядочен по возрастанию

for (i = 0; i < 14; i++)

if (m[i + 1] <= m[i])

// последующий элемент массива не больше предыдущего,

// следовательно, массив не упорядочен по возрастанию

{

prizn = 0; // изменили значение признака

break; // вышли из цикла, так как массив не упорядочен

// и до конца выполнять цикл не имеет смысла

}

if (prizn == 1)

// массив упорядочен по возрастанию - заменяем положительные

// элементы на нули

for (i = 0; i < 15; i++)

if (m[i] > 0)

m[i] = 0;

Console.WriteLine("\n\nprizn={0}", prizn);

for (i = 0; i < 15; i++)

Console.Write("{0,5}", m[i]);

}

static void Main(string[] args)

{

// объявление массивов и переменных

int [] c = new int [15];

int [] d = new int [15];

// обращение к функциям (вызов для выполнения):

input(ref c, 'c'); // в функцию в качестве аргументов передается

input(ref d, 'd'); // массив и его имя (символ в апострофах)

output(c, "Исходный массив c:");

preobr(c);

output(c, "Преобразованный массив c:");

output(d, "Исходный массив d:");

preobr(d);

output(d, "Преобразованный массив d:");

Console.ReadLine();

}

}