- •Блок контроля освоения дисциплины
- •4.1.1.2. Методические указания к выполнению контрольной работы 1
- •Задача 1
- •Задача 2
- •4.1.2. Контрольная работа 2
- •4.1.2.1. Задание на контрольную работу 2
- •Задача 1 Использование функций в языке си, возвpащающих одно значение
- •Задача 2 Использование функций в языке си, получающих и возвpащающих pазличное количество аpгументов
- •4.1.2.2. Методические указания к выполнению контрольной работы 2
- •Задача 1
- •Задача 2
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.
В данной задаче необходимо написать программу, выполняющую следующие действия:
С клавиатуры ввести данные в массив A[4,5].
Определить массив B[4].
Вывести на экран исходный (введенный с клавиатуры) массив 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, в противном случае массивы оставить без изменений.
В данной задаче необходимо написать программу, выполняющую следующие действия:
Ввод исходных массивов C и D.
Вывод на экран исходных массивов.
Преобразование массивов.
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();
}
}