void display_data () - функція, що виводить на екран масиви часу, вхідної та вихідної напруги у вигляді таблиці.
Модуль calc.cpp
У цьому модулі містяться всі функції обчислень.
void form_time () - функція, що формує масив часу
void form_Uvx () - функція, що формує масив вхідних даних
void form_Uvix () - функція, що формує масив вихідних даних
void getfront (double arr [N], frontside side) - розраховує і виводить на екран тип і тривалість зазначеного у змінній side фронту, де side - enumeration, що приймає значення LEFT і RIGHT
Модуль file_io.cpp
void read_data () - читає набір даних з файлу data.txt
void write_data () - записує у файл data.txt робочі дані і масиви часу, вхідної та вихідної напруги у вигляді таблиці.
void output_arrays () - виводить масиви часу, вхідної та вихідної напруги у вигляді табліци.в файли array_time.txt, array_Uvx.txt і array_Uvix.txt у форматі, зручному для читання в програмі Maxima.
4 . Тестування програми
Тести, що підтверджують правильність роботи програми. Розрахунки зроблені в wxMaxima. Великий сигнал (а=50)
timeUvxUvx MaximaUvixUvix Maxima00.0000000.000000238.8434938.843100.00000100447.5106547.511100.00000100649.4445549.445100.00000100849.8760649.876100.000001001049.9723549.972100.00000100120.002270.002270.011350.0113140.000001.03055*10^- 70.000005.15274 * 10 ^ - 7160.000004.67878 * 10 ^ - 120.000002.33939 * 10 ^ - 11180.000002.12417 * 10 ^ - 160.000001.06209 * 10 ^ - 15200.000009.64375 * 10 ^ - 210.000004.82187 * 10 ^ -20 Малий сигнал (а=0.75)
TimeUvxUvxMaximaUvixUvixMaxima0000020.58265240.5832.91326192.913340.71265970.7133.56329853.563360.74166830.7423.70834133.708380.74814090.7483.74070473.7407100.74958520.753.74792593.7479120.00003403.40457*10^- 50.00017021.70229 * 10 ^ - 4140.00000001.54582 * 10 ^ - 90.00000007.72911 * 10 ^ - 9160.00000007.01817 * 10 ^ - 140.00000003.50909 * 10 ^ - 13180.00000003.18626 * 10 ^ - 180.00000001.59313 * 10 ^ -17200.00000001.44656 * 10 ^ - 220.00000007.23281 * 10 ^ - 22
Висновок
Поставлена ??задача успішно проаналізована і вирішена, отримані навички розробки програмного забезпечення на мові C, а також навички налагодження і тестування програми. Так як програма має модульну структуру, легко здійснити її можливе розширення. Наприклад, можливо додати графічний інтерфейс переписавши меню, але не зачіпаючи решти коду; також програма може бути адаптована під вирішення більш складної задачі шляхом розширення відповідних функцій обчислень.
програма сигнал передавальний ланцюг
Використана література:
1. Б. Керниган, Д. Рітчі - «Мова програмування С» 2011
2. Герберт Шилдт - «Повний довідник по С» 2009
Додаток
Вихідний код
mainheader.h
# pragma once
# include lt; stdio.h gt;
# include lt; math.h gt;
# include lt; stdlib.h gt;
# define N 11front
{= 0,=1,
}; frontside
{= 0,//передній фронт//задній
}; double time [N]; double Uvx [N]; double Uvix [N]; double t_begin, t_end, t_1; double a, b, c; double U1, U2; double timedelta; read_data (); write_data (); output_arrays (); form_time (); form_Uvx (); form_Uvix (); getfront (double arr [N], frontside side);
main.cpp
# include mainheader.h time [N]; Uvx [N]; Uvix [N]; t_begin=0, t_end=20, t_1=10; a=50, b=0.75 , c=5; U1=20, U2=100; timedelta=0; display_data ()
{(% 25s% 20s% 20s n n raquo ;, time raquo ;, Uvx raquo ;, Uvix ); (int i=0; i lt; N ; i ++)
{(% 5d% 20.3lf% 20.7lf% 20.7lf n raquo ;, i + 1, time [i], Uvx [i], Uvix [i]);
}
} input_data ()
{( 1) T_begin:% 10.3lf n raquo ;, t_begin); ( 2) T_end:% 10.3lf n raquo ;, t_end); ( 3) T_1: % 10.3lf n raquo ;, t_1); ( 4) a:% 10.3lf n raquo ;, a); ( 5) b:% 10.3lf n raquo ;, b); ( 6) c :% 10.3lf n raquo ;, c); ( 7) U1:% 10.3lf n raquo ;, U1); ( 8) U2:% 10.3lf n raquo ;, U2); ( nEnter...