Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык Си. Лабораторные работы / Программирование. Описание курсовой работы.doc
Скачиваний:
66
Добавлен:
06.07.2020
Размер:
367.62 Кб
Скачать

Второй файл

//funcs.cpp--функции pасчета напpяжений, pасчета хаpактеpистики и отладки

#include <stdio.h>

#include <conio.h>

/*Определение функции расчета массивов значений входного напряжения*/

void design_t_Uinp(int N, float t0, float tN, float tm, float Um, float Uinp[])

{

float t,dt,A,B;

int i;

A = Um / (tm - t0);

B = Um / (tN - tm);

dt = (tN - t0) / N; t = t0;

for (i = 0; i <= N; i++)

{

if (t <= tm)

Uinp[i] = A * (t - t0);

else

Uinp[i] = B * (tN - t);

t += dt;

}

}

//Определение функции расчета массива значений выходного напряжения

void design_Uout(int N, float Uinp1, float Uinp[], float Uout[])

{

int i;

for (i = 0; i <= N; i++)

if (Uinp[i] <= Uinp1)

Uout[i] = 4;

else

Uout[i] = (Uinp[i] - 1) * (Uinp[i] - 1);

}

//Определение функции расчета максимальнго значения выходного сигнала Umax

float design_Umax(int N, float Uout[])

{

int i;

float Umax;

Umax = Uout[0];

for (i = 1; i <= N; i++)

if (Uout[i] > Umax)

Umax = Uout[i];

return Umax;

}

//Опpеделение функции отладочного вывода

void debug_out(int N, char YN, float Umax, float Uinp[], float Uout[])

{

int i;

if (YN == 'y')

{

//Вывод на экран массивов времени, входного и выходного напряжений

printf("\ni Uinp Uout\n");

for (i = 0; i <= N; i++)

printf("%i %.3f %.3f\n", i, Uinp[i], Uout[i]);

//Вывод на экран массивов текущих значений хаpактеpистики и числа отсчетов

printf("Umax=%.3f N=%4i", Umax, N);

getch();

}

}

Третий файл

//outgraph.cpp--Функции вывода графиков на экран

#include <stdlib.h>;

#include <conio.h>

#include <stdio.h>

#include <graphics.h>

#include "def_func.h"

void RunGraphics(float t0, float tN, float tm, float Um, float Uinp1,

float Uinp[], float Uout[])

{

const NG = 500;

MyInitGraph();

design_t_Uinp(NG, t0, tN, tm, Um, Uinp);

MyGraphic(Uinp, NG, Left);

design_Uout(NG, Uinp1, Uinp, Uout);

MyGraphic(Uout, NG, Right);

closegraph();

}

void MyInitGraph()

{

int GraphDriver, GraphMode, ErrorCode;

GraphDriver = DETECT;

initgraph(&GraphDriver, &GraphMode, "d:\\borlandc\\bgi") ;

ErrorCode = graphresult();

if (ErrorCode != grOk)

{

printf(" Ошибка графики :%s", grapherrormsg(ErrorCode));

printf("Выполнение программы прервано");

getch();

exit(1);

}

}

void MyGraphic(float F[], int NumberPoint, ModeType Mode)

{

const H = 30;

int Xmax, Ymax, X1, Y1, X2, Y2, Xn, Yn, Xk, Yk, I;

float Fmax, Fmin, Dx, Dy;

int X, Y;

int Xt, L;

//Определение максимально допустимых значений координат

Xmax = getmaxx();

Ymax = getmaxy();

switch (Mode)

{

case Left:

{

X1 = 0;

X2 = Xmax / 2;

Y1 = 0;

Y2 = Ymax;

break;

}

case Right:

{

X1 = Xmax / 2;

X2 = Xmax;

Y1 = 0;

Y2 = Ymax;

break;}

}

setviewport(X1, Y1, X2, Y2, 1);

clearviewport;

Xn = 0;

Yn = 0;

Xk = Xmax / 2-H;

Yk = Ymax;

//Определение максимальных и минимальных значений

Fmin = F[0];

Fmax = F[0];

for (I = 0; I <= NumberPoint - 1; I++)

{

if(F[I] > Fmax)

Fmax = F[I];

if(F[I] < Fmin)

Fmin = F[I];

}

if (Fmin > 0)

Fmin = 0;

//Расчет приращения выводимой переменной на один пиксел

Dy = (float)(Fmax - Fmin) / (float)(Yk - Yn);

Dx = (float)(NumberPoint - 1) / (float)(Xk - Xn);

setcolor(7);

rectangle(1, 1, Xk, Yk);

setcolor(3);

setlinestyle(SOLID_LINE, 0, 5);

for (I = 0; I < NumberPoint; I++)

{

Y = Yk - ((F[I] - Fmin) / Dy);

X = Xn + I / Dx;

if (I == 0)

moveto(X, Y);

else

lineto(X, Y);

}

//Вывод заголовков графиков

if(Mode == Left)

outtextxy(20, 10, "Входной сигнал");

if(Mode == Right)

outtextxy(20, 10, "Выходной сигнал");

getch();

}

Соседние файлы в папке Язык Си. Лабораторные работы