ти модуль, для обчислення значень функцій:
f1 (x) f2 (x) f3 (x)
Опції визначені на відрізку [- 3.9; 3.9] з кроком xh=0.15
Результат обчислення функції Y (x) вивести у вигляді таблиці як на консоль, так і в текстовий файл під ім'ям «Tablica.txt».
Побудувати графіки кожної з функцій на заданому відрізку.
в режимі діалогу пропонує вибрати спосіб побудови графіка
- для функції Y;
- для окремо обраної функції;
2. Проектування розв'язуваної задачі
Завдання реалізована у вигляді двох виконуваних файлів:
1. Програмний модуль (modul.cpp) - призначений для обчислення функцій і побудови графіків.
2. Головна програма (zadacha.cpp) - введення вихідних даних і виклик функцій у відповідь на запити користувачів.
Поділ програми функційні об'єкти дозволяє уникнути надмірності коду (багаторазового повторення одного і того ж коду), оскільки функцію записують один раз, а викликати її на виконання можна багаторазово з різних точок програми.
Спрощується процес налагодження, тому кожну функцію можна налагодити окремо.
Подальшим кроком у підвищенні рівня абстракції є об'єднання функцій і пов'язаних з ними даних в окремі файли - вихідні модулі, компільовані роздільно.
Отримані в процесі компіляції об'єктні модулі об'єднуються в виконувану програму за допомогою компоновщика.
3. Опис структури розв'язуваної задачі та її модулів
Програмний модуль реалізований у відповідність зі схемою:
Головна програма реалізована за схемою:
4. Опис алгоритмів реалізації модулів
. Код програмного модуля (modul.cpp)
//Підключення стандартних бібліотек і опис констант
# include lt; math.h gt;
# include lt; conio.h gt;
# include lt; stdio.h gt;
# include lt; stdlib.h gt;
# include lt; math.h gt;
# include lt; iostream.h gt;
# define SCREENW 80
# define SCREENH 25
//Обчислення функції f1 (x)
float f1 (float x)
{exp ((1/5) * log (x * x + x + 1));
}
// Обчислення функції f2 (x)
float f2 (float x)
{pow (log (fabs (sqrt (x + 5))), 2);
}
//Обчислення функції f3 (x)
float f3 (float x)
{sin (x * x) + exp (0.25 * log (x));
}
//Обчислення функції Y (x)
float y (float x)
{Y; (x lt;=0) Y=f1 (x); if (x gt; 0 amp; amp; x lt; 1.7) Y=f2 (x); if (x gt;=1.7 ) Y=f3 (x); Y;
}
//Виведення таблиці значень функції Y (x) на консоль і в файл
int vivod (float x, float xn, float h)
{Y; * out; ((out=fopen ( tablica.txt raquo ;, w + )) == NULL)
{(stderr, Can not open output file. n ); 1;
}
(out, laquo;n____________________________________raquo;);(laquo;n|____________________________________|raquo;);(out,laquo;n|txt|tY(x)t|raquo;);(laquo;n|txt|tY(x)t|raquo;);(out, laquo;n|____________________________________|raquo;);(laquo;n|____________________________________|raquo;);(xlt;xn)
{ Y=y(x);(out,laquo;n|t%4.1ft|t%ft|raquo;,x,Y);(laquo;n|t%4.1ft|t%ft|raquo;,x,Y);+=h;
} (out, laquo;n|____________________________________|raquo;);(laquo;n|____________________________________|raquo;);(out);0;
}
//Функція побудови графікаplot (FILE * fout, float a, float b, float h, float (* f) (float))
{char screen [SCREENW] [SCREENH]; x, y [SCREENW]; ymin=0, ymax=0; hx=h, hy; i, j; xz, yz; * out; ((out=fopen ( grafil.txt raquo ;, w + )) == NULL)
{(stderr, Can not open output file. n );
}=(b - a)/(SCREENW - 1); (i=0, x=a; i lt; SCREENW; ++ i, x +=hx)
{y [i]=f (x); (y [i] lt; ymin) ymin=y [i]; (y [i] gt; ymax) ymax=y [i] ;
}=(ymax - ymin)/(SCREENH - 1);=(int) floor (ymax/hy + 0.5);=(int) floor (-a/hx + 0.5); ( j=0; j lt; SCREENH; ++ j)