Читайте также:
|
|
(версия 17.02.12)
Задание: создать класс для табулирования функции одной переменной и программу демонстрирующую работу класса.
Требования к классу:
· Класс должен иметь:
- конструктор c параметрами, в который передаются исходные данные для табулирования функции;
- свойства, каждое из которых соответствует параметру исходных данных необходимых для табулирования;
- свойство, возвращающее количество строк в таблице полученных в результате табулирования;
- индексатор, возвращающий строку таблицы в виде структуры в формате: значение X, значение f(X), признак наличия значения (если значение функции существует, то выставляется одни признак, если нет, то другой).
· Класс должен уметь обходить особые точки функции.
· Если пользователь задал неверные исходные данные для табулирования, то класс должен возвращать одну запись в таблице результатов табулирования в виде строки с признаком отсутствия значения.
· При изменении исходных данных автоматически должен выполняться пересчет.
Пример:
Опишем класс для табулирования функции y=Sin(x)/x. В качестве исходных данных для табулирования будут задаваться a – начало диапазона, b – конец диапазона и n – количество точек. Интерфейс класса (свойства и методы, которые доступны пользователям класса) будет выглядеть следующим образом:
class CTabul {
...
//Параметрический конструктор, где AA – начало диапазона, AB – конец диапазона,
//AN – количество точек
public CTabul(double AA, double AB, int AN) {
...
}
//Свойство, соотвествующее началу диапазона
public double A {
get {
...
}
set {
...
}
}
//Свойство, соотвествующее концу диапазона
public double B {
get {
...
}
set {
...
}
}
//Свойство, соотвествующее количеству точек
public int N {
get {
...
}
set {
...
}
}
//Индексатор, возращающий по индексу AIndex строку таблицы в формате сруктуры SPoint
//(описание ниже) по индексу AIndex
public SPoint this[int AIndex] {
get {
...
}
}
В качестве результата, через индексатор, класс возвращает значения структуры типа SPoint, которая выглядит следующим образом:
struct SPoint {
//Значение Х
public double X;
//Значение Y
public double Y;
//Признак существования значения описанный перечислением типа EValueStatus,
//если значение фунции в данной точке существует, то признак принмает значение
//EValueStatus.Exist, если нет, то EValueStatus.NoExist
public EValueStatus Status;
}
Пример использования класса:
static void Main() {
//Создаем объект класса CTabul
CTabul t = new CTabul(1, 2, 10);
//Изменяем исходные данные
t.A = 0;
t.B = 3;
t.N = 50;
//Выводим результат табулирования
for (int i = 0; i < t.N; i++) {
//Читаем строку таблицы с результатом таблуирования
SPoint p = t[i];
//Проверяем признак наличия значения
if (p.Status == EValueStatus.NoExist)
//Если нету, то выводим в столбце значения функции прочерк
Console.WriteLine("{0} {1} ------", i + 1, p.X);
else
//Если есть, то выводим значение
Console.WriteLine("{0} {1} {2}", i + 1, p.X, p.Y);
}
}
Варианты:
Функция: см. Тынкевич М.А. Лабораторный практикум по информатике для студентов экономических специальностей. Часть 1. Алгоритмизация и программирование для ПЭВМ. Кемерово: КузГТУ. - 2001. Варианты заданий к лабораторной работе №1 (стр. 5-6).
Параметры:
Вариант | Параметры |
Начало диапазона, конец диапазона, количество точек. | |
Начало диапазона, конец диапазона, шаг (при выходе последней точки за конец диапазон точка не выводится в таблице). | |
Начало диапазона, конец диапазона, шаг (при выходе последней точки за конец диапазон точка выводится в таблице). | |
Начало диапазона, количество точек, шаг. |
Темы для защиты:
Дата добавления: 2015-10-31; просмотров: 210 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Панель задач. | | | Лекция. Макроэкономикаға кіріспе. |