
- •Оглавление
- •1. Введение
- •Постановка задачи
- •2.1 Условия
- •2.2 Анализ графиков
- •3. Разработка алгоритма на языке Си
- •3.1 Проектирование
- •Реализация программы
- •3.3.1 Main.C
- •3.3.2 Library.C
- •Void times(float*, parametrs);
- •Void uins(float*, float*, parametrs);
- •Void uouts(float*, float*, parametrs);
- •Int save_full_file(char*, float*, float*, float*, parametrs);
- •Int save_maxima_file(char*, char*, char*, float*, float*, float*, parametrs);
- •Void load_file(char*, parametrs*);
- •3.3.3 Таблица констант
- •3.3.4 Таблица идентификаторов
- •4.1 Тест 1
- •5. Заключение
- •7. Приложение
- •7.11 Main.C
- •7.12 Library.C
- •7.13 Include.H
5. Заключение
На данный момент написанная программа способна:
Рассчитывать входной и выходной сигналы
Находить длительность заднего фронта выходного сигнала
Выбирать варианты считывания рабочего набора
Записывать результаты в текстовый файл
7. Приложение
7.1 Код С
7.11 Main.C
#include "include.h"
int main(void) {
char c;
float acc; // точность, используется в пункте 4
parametrs p; // содержит текущий рабочий набор (параметры цепи)
float af_time[MAXSIZE], af_uin[MAXSIZE], af_uout[MAXSIZE];
printf("COURSE WORK. VARIANT 31\n\n");
while ((c = menu()) != EXIT_CODE) {
switch(c) {
case 1: { // рабочий набор по умолчанию
p.n = 11;
p.tn = -10.0;
p.tk = 8.0;
p.t1 = -8.0;
p.t2 = 6.0;
p.ui1 = -1.0;
p.ui2 = 3.0;
p.uimax = 30.0;
p.uimin = 0.0;
p.uomax = 30.0;
p.uomin = -10.0;
printf("______________________________________\n");
printf("Control calculation in %d points\n", p.n);
create(af_time, af_uin, af_uout, p);
display(af_time, af_uin, af_uout, p);
break;
} //case 1
case 2: { // чтение входных параметров из файла
//char filename[30];
//printf("filename: ");
//gets(filename);
//load_file(filename, &p);
load_file(F_INPUT, &p);
printf("___________________________________________________\n");
printf("Control calculation in %d points\n", p.n);
create(af_time, af_uin, af_uout, p);
display(af_time, af_uin, af_uout, p);
break;
} //case 2
case 3: { //ввод параметров с клавиатуры
printf("n = "); scanf("%d", &p.n);
printf("tn = "); scanf("%f", &p.tn);
printf("tk = "); scanf("%f", &p.tk);
printf("t1 = "); scanf("%f", &p.t1);
printf("t2 = "); scanf("%f", &p.t2);
printf("ui1 = "); scanf("%f", &p.ui1);
printf("ui2 = "); scanf("%f", &p.ui2);
printf("uimax = "); scanf("%f", &p.uimax);
printf("uimin = "); scanf("%f", &p.uimin);
printf("uomax = "); scanf("%f", &p.uomax);
printf("uomin = "); scanf("%f", &p.uomin);
printf("___________________________________________________\n");
printf("Control calculation in %d points\n", p.n);
create(af_time, af_uin, af_uout, p);
display(af_time, af_uin, af_uout, p);
break;
} //case 3
case 4: { // вывод на экран длительности заднего фронта выходного сигнала
printf("___________________________________________________\n");
//acc = 0.12;
printf("Input accuraty = "); scanf("%f", &acc);
printf("Control calculation with accuraty = %-10.5f\n", acc);
printf("back front Uout = %f\n", front(acc, p));
printf("___________________________________________________\n");
break;
} //case 4
case 5: { //сохранение результатов в файл
printf("___________________________________________________\n");
create(af_time, af_uin, af_uout, p);
if (save_full_file(F_O_FULL, af_time, af_uin, af_uout, p)) printf("Full file saved!\n");
printf("___________________________________________________\n");
break;
} //case 5
case 6: { //формирование файлов для wxMaxima
printf("___________________________________________________\n");
create(af_time, af_uin, af_uout, p);
if (save_maxima_file(F_O_MAXIMA_TIME, F_O_MAXIMA_UI, F_O_MAXIMA_UO, af_time, af_uin, af_uout, p)) printf("Maxima files saved!!\n");
printf("___________________________________________________\n");
break;
} //case 6
case 7: {
info();
break;
} //case 7
default: {
printf("___________________________________________________\n");
printf("ERROR: out of range\n");
printf("___________________________________________________\n");
break;
} //default
} //switch
} //while
printf("GOOD BYE!\n");
return 0;
} //main()