Читайте также: |
|
Версия 4.2
Лабораторная работа 1
Тема: ветвления и циклы.
Данные можно вводить с клавиатуры.
Во-первых, следует взять свой номер из списка и преобразовать его в троичную систему счисления. Далее надо откинуть все цифры, кроме последних трех. Эти три цифры будут означать варианты в заданиях 1.1, 1.2 и 1.3 соответственно.
Вариант | 1.1 | 1.2 | 1.3 |
3a, 3f | 5b, 6c | 8a, 13d | |
3b, 3e | 5c, 6b | 8b, 13c | |
3c, 3d | 5d, 6a | 8d, 13a |
Страницы учебника: 5-7.
К примеру, рассмотрим номер 88. В троичной системе он выглядит как 10021. Последние три цифры: 021. Значит, придется делать задания 3a, 3f, 5d, 6a, 8b, 13c.
Лабораторная работа 2
Тема: массивы.
Данные желательно генерировать с помощью случайных чисел.
Вариант получается по формуле v = n % 12 + 1, где n – номер в списке.
v -й вариант делает задания 2. v, 5. v, 6. v и 7. v. Cтраницы учебника: 137-140.
Лабораторная работа 3
Тема: структуры, файлы.
Данные желательно брать из текстового файла.
Вариант получается по формуле v = n % 6 + 1, где n – номер в списке.
В программе обязательно должна быть объявлена структура (struct), соответствующая одному студенту. Работать с файлом рекомендуется с помощью класса StreamReader.
Вариант | |
13a | |
13b | |
13c | |
13d | |
13e | |
13f |
Страницы учебника: 20-21.
Лабораторная работа 4
Тема: функции (методы).
Размеры структур можно вводить с клавиатуры, а содержимое генерировать случайно. В функцию Main следует поместить код, тестирующий реализованные методы.
Вариант получается по формуле v = n % 4 + 1, где n – номер в списке.
Необходимо реализовать методы в зависимости от варианта. Все методы должны возвращать непустой результат в случае удачного завершения и null в противном случае. Методы должны лишь производить математические вычисления и не делать ничего более (например, им не следует работать с консолью).
class Program
{
// пример функции:
// является ли матрица квадратной
static bool IsSquare(double[,] m)
{
// m.GetLength(0) - число строк (длина по первому измерению)
// m.GetLength(1) - число столбцов (длина по второму измерению)
return m.GetLength(0) == m.GetLength(1);
}
// еще один пример функции:
// нормализация вектора (его длина должна стать единичной)
static double[] Normalize(double[] v)
{
double s = 0; // в этой переменной будет храниться длина вектора
foreach (double e in v)
s += e * e;
if (s == 0) // нулевой вектор мы нормализовать не можем
return null;
s = Math.Sqrt(s); // теперь в s длина, а до этого был квадрат длины
double[] r = new double[v.Length];
for (int i = 0; i < r.Length; i++)
r[i] = v[i] / s;
return r;
}
// вариант 1 – сложение и вычитание матриц, умножение матриц на число
static double[,] Add(double[,] ma, double[,] mb);
static double[,] Sub(double[,] ma, double[,] mb);
static double[,] Mult(double[,] ma, double nb);
// вариант 2 - умножение двух матриц
static double[,] Mult(double[,] ma, double[,] mb);
// вариант 3 - умножение матрицы на вектор и вектора на матрицу
static double[] Mult(double[,] ma, double[] vb);
static double[] Mult(double[] va, double[,] mb);
// вариант 4 - скалярное и векторное произведения векторов
static double? Dot(double[] va, double[] vb);
static double[] Cross(double[] va, double[] vb);
static void Main(string[] args)
{
//...
}
}
Лабораторная работа 5
Тема: классы.
Данные можно вводить с клавиатуры. В функцию Main следует поместить код, тестирующий реализованные методы.
Вариант получается по формуле v = n % 7 + 1, где n – номер в списке.
Необходимо реализовать методы класса в зависимости от варианта. Все методы должны возвращать true в случае удачного завершения и false в противном случае. Методы должны лишь производить изменения внутреннего состояния объекта и не делать ничего более (например, им не следует работать с консолью).
// "MyClass" - это просто название для примера
// тут указано то общее, что есть во всех вариантах
class MyClass
{
// количество элементов
private int n;
// массив, в котором хранятся элементы
private int[] ar;
// конструктор класса
// maxcount - максимально возможное число элементов
public MyClass(int maxcount)
{
n = 0;
ar = new int[maxcount];
}
// свойство, позволяющее получить количество элементов
public int Count
{
get { return n; }
}
// далее некоторые методы в зависимости от варианта
//...
}
// вариант 1 - стэк
class Stack
{
//...
// положить элемент в стэк
public bool Push(int v);
// достать элемент из стэка
public bool Pop(ref int v);
// проверить, а не пуст ли стэк
public bool IsEmpty();
}
// вариант 2 - простой динамический массивчик
class DynArray
{
//...
// добавить элемент в конец массива
public bool PushBack(int v);
// взять элемент по индексу
public bool GetAt(int i, ref int v);
// установить значение по индексу
public bool SetAt(int i, int v);
}
// вариант 3 - динамический массив с минимумом и максимумом
class MinMaxArray
{
//...
// добавить элемент в конец массива
public bool PushBack(int v);
// найти минимум в массиве
public bool GetMin(ref int m);
// найти максимум в массиве
public bool GetMax(ref int m);
}
// вариант 4 - множество
class Set
{
//...
// добавить элемент во множество, если такого в нем не было
public bool Insert(int v);
// поискать элемент во множестве
public bool Find(int v);
// проверить, а не пусто ли множество
public bool IsEmpty();
}
// вариант 5 - массив-сумматор
class SumArray
{
//...
// добавить элемент в конец массива
public bool PushBack(int v);
// найти сумму элементов с индексами из промежутка [a, b]
public bool LocalSum(int a, int b, ref int r);
// найти сумму всех элементов
public bool GlobalSum(ref int r);
}
// вариант 6 - массив-сортировщик
class SortArray
{
//...
// добавить элемент в конец массива
public bool PushBack(int v);
// отсортировать массив (rev=false - по возрастанию, rev=true - по убыванию)
public bool Sort(bool rev);
// вывести на экран
public bool Output();
}
// вариант 7 - массив-заменятор-и-посчитатор
class ChangeArray
{
//...
// добавить элемент в конец массива
public bool PushBack(int v);
// заменить все элементы со значением v на u для индексов из промежутка [a, b]
public bool Change(int a, int b, int v, int u);
// посчитать количество вхождений элемента v
public bool CountOf(int v, ref int c);
}
Дата добавления: 2015-10-31; просмотров: 46 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Приложение. Методы ненасильственных действий | | | ВВОД-вывод ЗНАЧЕНИЙ в файл |