5. Додаток

Лістинг програмного модуля

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <dos.h>

#include <graphics.h>

#include <string.h>

#define Size 1600

#define Meanings 500

#define KO4

#defineKMO7

#defineKSO7

#define INTR 8 /* The clock tick interrupt */

#ifdef __cplusplus

#define __CPPARGS ...

#else

#define __CPPARGS

#endif

static int kf;

int stop=1;

FILE *outst;

/*--------------- входные данные (4 канала) ------------------*/

int

azp[4][Meanings],

out[4][Meanings];

int

outmed[28]={ 0,0,0,0,0,0,0,

0,0,0,0,0,0,0,

0,0,0,0,0,0,0,

0,0,0,0,0,0,0

},

outsr[28]={ 0,0,0,0,0,0,0,

0,0,0,0,0,0,0,

0,0,0,0,0,0,0,

0,0,0,0,0,0,0

},

mean[4]={0,0,0,0},

kpmo[4]={0,0,0,0},

krs[4]={0,0,0,0},

amvoi[4]={0,0,0,0},

ofsmed[4]={0,0,0,0},

sum[4]={0,0,0,0},

tmpmed[7]={0,0,0,0,0,0,0},

flags[4]={0,0,0,0},

flags1[4]={0,0,0,0},

fla[4]={0,0,0,0},

iper[4]={0,0,0,0},

iex[4]={0,0,0,0},

io[4]={0,0,0,0},

fex[4]={0,0,0,0},

imean[4]={-1,-1,-1,-1},

st[4]={2,2,2,2},

ipd[4]={0,0,0,0},

ips[4]={0,0,0,0},

per[4][10],

percnt[4]={-1,-1,-1,-1};

/*переменные программы*/

int

t,f1=0,flag,iex1=0,j,kk=0,

ps=0,z,pd=1,

dko=0,

k=1,i,m,fl=1,

dx=3,dx1=-4;

char str[5];

/*выходные данные*/

static int me[4][Meanings],/*экстремумы*/

mp[4][Meanings],/*перегибы*/

mo[4][Meanings],/*особые точки*/

mr[4][Meanings],/*первые разности*/

ms[4][Meanings],/*секунды*/

md[4][Meanings];/*дискретные отсчеты*/

/* Переменные для процедуры обработки */

int ot1,ot2,ot3,ot4,ot5,ot6;

int tf,tf1,ne,vk,

int masp[4][11];

int kaz;

long sq,s;

void init_azp(int[][Meanings],char[] );

void interrupt ( *oldhandler)(__CPPARGS);

void interrupt handler(__CPPARGS)

{

if(--kf<0)

{

oldhandler();

kf=5;

}

else

outportb(0x20,0x20);

if(mean[dko]<Meanings-1)

{

amvoi[dko]=azp[dko][mean[dko]];

putpixel(dx,(dko*100+350)-amvoi[dko]/2,12);

putpixel(dx,dko*100+75,10);

mean[dko]++;

outmed[dko*7+ofsmed[dko]]=amvoi[dko];

if(mean[dko]>KMO-1)

{

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

tmpmed[i]=outmed[dko*7+i];

k=1;

while(k==1)

{

k=0;

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

if(tmpmed[i]<tmpmed[i+1])

{

m=tmpmed[i];

tmpmed[i]=tmpmed[i+1];

tmpmed[i+1]=m;

k=1;

}

}

outsr[dko*7+krs[dko]]=outmed[dko*7+3];

for(i=dko*7;i<dko*7+6;i++)

outmed[i]=outmed[i+1];

if(krs[dko]>=KSO-1)

{ // сглаживание

sum[dko]=0;

for(i=dko*7;i<dko*7+7;i++)

sum[dko]+=outsr[i];

for(i=dko*7;i<dko*7+6;i++)

outsr[i]=outsr[i+1];

++imean[dko];

out[dko][imean[dko]]=sum[dko]/7;

putpixel(dx1,(dko*100+350)-out[dko][imean[dko]]/2,14);

if(imean[dko]>=1)

{ // вычисление 1-ой разности

mr[dko][imean[dko]-1]=out[dko][imean[dko]] out[dko][imean[dko]-1];

if (imean[dko]>=3)

{ // вычисление второй разности

if(mr[dko][imean[dko]-2]<mr[dko][imean[dko]-3])

{

if(flags[dko]==1)

{

mp[dko][iper[dko]]=imean[dko]-2;

mo[dko][io[dko]++]=out[dko][imean[dko]-2];

md[dko][ipd[dko]++]=pd;

ms[dko][ips[dko]++]=ps;

iper[dko]++;

}

flags[dko]=-1;

}

else

if(mr[dko][imean[dko]-2]>mr[dko][imean[dko]-3])

{

if (flags[dko]==-1)

{

mp[dko][iper[dko]]=imean[dko]-2;

mo[dko][io[dko]++]=out[dko][imean[dko]-2];

md[dko][ipd[dko]++]=pd;

ms[dko][ips[dko]++]=ps;

iper[dko]++;

}

flags[dko]=1;

}

}

if((out[dko][1]-out[dko][0])>0)

flags1[dko]=1;

else

flags1[dko]=-1;

if((imean[dko]>14)&&(imean[dko]%6==0))

{

for(i=st[dko];i<imean[dko];i++)

{

if((out[dko][i]>out[dko][i-1])&&(flags1[dko]==-1))

{

st[dko]=i;

for(j=i+1,t=0;(t<13)&&(j<imean[dko]);t++,j++)

if(out[dko][j]<out[dko][i-1])

{fla[dko]=0;break;}

else fla[dko]=1;

if( (fla[dko]==1))

{

if(me[dko][iex[dko]-1]!=i-1 ){

me[dko][iex[dko]++]=i-1;

mo[dko][io[dko]++]=out[dko][me[dko][iex[dko]-1]];

fex[dko]=0;

md[dko][ipd[dko]++]=pd;

ms[dko][ips[dko]++]=ps;

circle(me[dko][iex[dko]-1]+10,(dko*100+350)-out[dko][ me[dko][iex[dko]-1]]/2,2);

floodfill(me[dko][iex[dko]-1]+10,(dko*100+350)-out[dko][ me[dko][iex[dko]-1]]/2,15);

}

flags1[dko]=1;

}

else

i=j;

}

else

if((out[dko][i]<out[dko][i-1])&&(flags1[dko]==1))

{

st[dko]=i;

for(j=i+1,t=0;(t<13)&&(j<imean[dko]);t++,j++)

if(out[dko][j]>out[dko][i-1])

{fla[dko]=0;break; }

else fla[dko]=1;

if((fla[dko]==1))

{

if(me[dko][iex[dko]-1]!=i-1 ){

me[dko][iex[dko]++]=i-1;

md[dko][ipd[dko]++]=pd;

ms[dko][ips[dko]++]=ps;

mo[dko][io[dko]++]=out[dko][me[dko][iex[dko]-1]];

fex[dko]=1;

circle(me[dko][iex[dko]-1]+10,(dko*100+350)-out[dko][ me[dko][iex[dko]-1]]/2,2);

floodfill(me[dko][iex[dko]-1]+10,(dko*100+350)-out[dko][ me[dko][iex[dko]-1]]/2,15);

}

flags1[dko]=-1;

}

else

i=j;

}

}

}

if((iex[dko]>1)&&(fex[dko]))

{

tf=me[0][1]-me[0][0]+1;

tf1=mo[0][14]-mo[0][12];

if(percnt[dko]==0)

line(me[dko][0]+10,dko*100+70,me[dko][0]+10,dko*100+80);

if(out[dko] [ me[dko] [iex[dko]-2]]<out[dko][ me[dko] [iex[dko]-iex[dko]]]+20)

{

fex[dko]=0;

++percnt[dko];

per[dko][percnt[dko]]=me[dko][iex[dko]-2];

if(percnt[dko]>0)

{

ne=iex[dko]-1+percnt[dko]-1;

if(ne%5)

goto End;

masp[dko][1] = dko + 1;

ot1=me[dko][(percnt[dko]-1)*4+0];

ot2=me[dko][(percnt[dko]-1)*4+1];

masp[dko][2]=out[dko][ot2];

ot3=me[dko][(percnt[dko]-1)*4+3];

masp[dko][5]=out[dko][ot3];

ot4=me[dko][(percnt[dko]-1)*4+2];

masp[dko][4]=out[dko][ot4];

masp[dko][3]=out[dko][ot4-4];

masp[dko][7]=per[dko][percnt[dko]]-per[dko][percnt[dko]-1];

if(!((masp[dko][7]>98)&&(masp[dko][7]<104) ))

goto End;

masp[dko][6]=me[dko][iex[dko]-1]-me[dko][iex[dko]-2]+1;

if(!( (masp[dko][6]>tf-3)&&(masp[dko][6]<tf+3)))

goto End;

for(int w =0;out[dko][ot2]!=mo[dko][w];w++);

if(! ( mo[dko][w]-mo[dko][w-2]+2) )

goto End;

line(me[dko][iex[dko]-2]+10,dko*100+70,me[dko][iex[dko]-2]+10,dko*100+80);

sprintf(str,"%d",masp[dko][7]);

setcolor(11);

outtextxy(me[dko][iex[dko]-2]-50,dko*100+85,str);

setcolor(15);

ot6=me[dko][(percnt[dko]-1)*4+4];

masp[dko][9]=me[dko][(percnt[dko]-1)*4+4]/100;

masp[dko][10]=me[dko][(percnt[dko]-1)*4+4]%100;

kaz=(out[dko][ot1]+out[dko][ot6])/2;

for(vk=2;vk<6;vk++)

masp[dko][vk]=masp[dko][vk]-kaz;

s=0;

for(vk=0;vk<ot4-1;vk++)

s=s+(out[dko][vk]+out[dko][vk+1])/2;

sq=(s/ot4-kaz)*masp[dko][7];

masp[dko][8]=sq;

fprintf(outst,"t%d",percnt[dko]);

fprintf(outst,"t");

for(z=1;z<11;z++)

fprintf(outst,"%5d ",masp[dko][z]);

fprintf(outst,"n");

}

}

}

}

}

else

++krs[dko];

}

else

++ofsmed[dko];

End:if(dko==3)

{

++pd;

if(pd==100)

{

++ps;

pd=0;

}

dko=0;

++dx;

++dx1;

}

else

++dko;

}

else

stop=-1;

}

void main(void)

{

int gdriver = DETECT, gmode, errorcode;

unsigned int newtic=10947,oldtic=65535L;// new tic for 100,1 in second

init_azp(azp,"kanal1.dat");

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %sn", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

outst=fopen("masp.res","w");

if(outst==NULL){

puts("Anable open filen");

exit(1);

}

fprintf(outst,"ttttРезультаты обработки n");

fprintf(outst,"n");

fprintf(outst," ПериодttttПараметры сигнала n");

setbkcolor(0);

setcolor(1);

cleardevice();

line(1,100,640,100);

line(1,200,640,200);

line(1,300,640,300);

line(1,400,640,400);

line(1,1,1,400);

setcolor(15);

outportb(0x43,0x36);

outportb(0x40,newtic&0x00ff);

outportb(0x40,newtic>>8);

oldhandler = getvect(INTR);

setvect(INTR, handler);

while (stop==1)

{

}

setvect(INTR, oldhandler);

outportb(0x43,0x36);

outportb(0x40,oldtic&0x00ff);

outportb(0x40,oldtic>>8);

fclose(outst);

getch();

closegraph();

}

void init_azp(int mas[][Meanings],char filename[])

{

int i=0,j;

unsigned int *tmp;

FILE *f;

char mode[]="rt";

f=fopen(filename,mode);

if(f==NULL){

puts("Anable open filen");

exit(1);

}

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

{

for(j=0;j<500;j++)

{

fscanf(f,"%d",tmp);

mas[i][j]=*tmp;

}

rewind(f);

}

fclose(f);

}

Результати роботи програми


Информация о работе «Модуль "rg.exe" /Укр./»
Раздел: Иностранный язык
Количество знаков с пробелами: 12756
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
367716
10
48

... В АБС АКБ «ПРОМІНВЕСТБАНК» ТА ОЦІНКА РІВНЯ ВРАЗЛИВОСТІ БАНКІВСЬКОЇ ІНФОРМАЦІЇ 3.1 Постановка алгоритму задачі формування та опис елементів матриці контролю комплексної системи захисту інформації (КСЗІ) інформаційних об’єктів комерційного банку В дипломному дослідженні матриця контролю стану побудови та експлуатації комплексної системи захисту інформації в комерційному банку представлена у вигляді ...

Скачать
242448
6
24

... ів і зборів. Розділ 3. Напрямки підвищення рівня організаційної та правової регламентації діяльності Київської обласної митниці 3.1 Напрями вдосконалення організаційної та правової регламентації діяльності Київської обласної митниці Основні напрями розвитку Державної митної служби України координу-ються «Концепцією створення багатофункціональної комплексної системи "Електронна митниця" в ...

Скачать
15254
0
15

... ї технічної кваліфікації.   1. Коротка характеристика об'єкта автоматизації і технологічного процесу, що протікає в ньому Розглянемо схему автоматизації регулювання адсорберів з нерухомим шаром адсорбента.   Адсорбція - це хімічний процес поглинання компонента газу пари або розчину твердим пористим поглиначем , тобто процес розділення який характеризується із газової або рідкої фази. Рі ...

Скачать
165075
21
13

... достаточно нажать кнопку <Выход>. При входе в пункт меню «Просмотр» / «Основные фонды» на экране появляется реестр основных средств, выводится наиболее полный перечень полей базы данных OSl.dbf. Причем данные предоставлены только для просмотра. Для модификации данных служит пункт меню «Коррекция» / «Основные фонды». Чтобы отредактировать запись курсор подводят к нужной строке списка и ...

0 комментариев


Наверх