• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

Курсач

  • Автор темы DaaGER
  • Дата начала
D

DaaGER

#1
У меня всё время вылетает ошибка:

int gd = DETECT, gm;

DETECT' undeclared (first use this function)

Пишу в Dec-C++

ПОМОГИТЕ!!!

Вот код:

Код:
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>

#define N 11
#define tk 60
#define t1 30
#define tn 15
#define a 50
#define b 0.07
#define c 0.2
#define U1 5
#define U2 50
#define U3 50
#define U4 60
#define Nmax 300
using namespace std;



void inputt(float*,int);
void inputUvx(float*,float*,int);
void inputUvix(float*,float*,int);
void output(int,float*,float*,float*);
float tabl(void);
float find_dlitelnost(float*,float*,float*,int);
void pogreshnost(float *,float *);
int menu();
void graf(float*,float*, int);
void SaveFile(float *, char*, int);
int main();

//ââîä ìàññèâà âðåìåíè

void inputt(float *pmast,int n)
{

float dt;
dt=fabs(tk-tn)/(N-1);
int i;
for(i=0;i<N;i++)
{ 
*(pmast+i)=tn+i*dt;
}
return;
}




//ââîä ìàññèâà âõîäíîãî íàïðÿæåíèÿ

void inputUvx(float *pmast,float *pmasUvx,int n)
{
int i;
for(i=0;i<N;i++)
{
if (*(pmast+i)<t1) *(pmasUvx+i)=a*(1-exp(-b*(*(pmast+i)-tn)));
else if(*(pmast+i)>=t1) *(pmasUvx+i)=a*(1-exp(-b*(*(pmast+i)-tn)))*exp(-c*(*(pmast+i)-t1));

}
return;
}




//ââîä ìàññèâà âûõîäíîãî íàïðÿæåíèÿ

void inputUvix(float *pmasUvx,float *pmasUvix, int n)
{

int i;
for(i=0;i<N;i++)
{
if(*(pmasUvx+i)<=0) *(pmasUvix+i)=0;
else if(*(pmasUvx+i)<U1 && *(pmasUvx+i)<0) *(pmasUvix+i)=(U3/U1)*(*(pmasUvx+i));
else if(*(pmasUvx+i)>=U1) *(pmasUvix+i)=(*(pmasUvx+i))*((U4-U3)/(U2-U1))+U3-U1*((U4-U3)/(U2-U1));

}
return;
}
//ñîõðàíåíèå ìàññèâà â ôàéë


void SaveFile(float *Array, char* fn, int n)
{
FILE *f;

f = fopen(fn,"w+");
if (f==NULL)
{
printf("\n Oshibka zapisi v fail ");
printf(fn);
exit(1);
}

for(int i =0; i<n; i++)
{
fprintf(f,"%f\n",*(Array+i));
}
fclose(f);
return;
}

//ìåíþ âûáîðà 


int menu()
{


for(i=0,i<7,i++){
printf("\n");	 }
printf("\t\t MENU:\n\n");
printf("\t\t\t 1. Tablica\n");
printf("\t\t\t 2. Zapis' v fail\n");
printf("\t\t\t 3. 3ii kod\n");
printf("\t\t\t 4. grafiki\n");
printf("\t\t\t ESC - Vihod\n");

int i= getche();

return i;

}

//âûâîä íà ýêðàí çàãîëîâêà òàáëèöû

float tabl(  )
{
printf("|-------|-----------|-----------|------------|\n");
printf("|  i  |	*t	 |	*Uvx  |  *Uvix	|\n");
printf("|-------|-----------|-----------|------------|\n");
return 0;
}


//âûâîä íà ýêðàí òàáëèöû ìàññèâîâ

void output(int n, float *pmast,float *pmasUvx,float *pmasUvix)
{
int i;
for(i=0;i<N;i++)
{
printf("| %2d  |  %6.3f | %6.3f  |	%6.3f |\n",i,*(pmast+i),*(pmasUvx+i),*(pmasUvix+i));
}
return;
}

//ïîèñê äëèòåëüíîñòè èìïóëüñà
float find_dlitelnost(float*pmast,float *pmasUvx,float*pmasUvix,int n)
{
float Umax=0.0;
int i;
inputt(pmast,n);
inputUvx(pmast,pmasUvx,n);
inputUvix(pmasUvx,pmasUvix,n);
for(i=0;i<N;i++)
{
if(pmasUvix[i]>Umax) Umax=pmasUvix[i];
}
float U01=0.1*Umax;
float U09=0.9*Umax;
float dt=fabs(tk-tn)/(N-1),A1, A2,tf, tf1,tf2;
int k=0;
for(i=0;i<N;i++)
{
A1=*(pmasUvix+i);
A2=*(pmasUvix+i+1);
k++;
if(A2<=U01&&A1<A2) tf1=tn+k*dt;
}
k=0;
for(i=0;i<N;i++)
{
A1=*(pmasUvix+i);
A2=*(pmasUvix+i+1);
k++;
if(A2<=U09&&A2>A1) tf2=tn+k*dt;
}
tf=fabs(tf2-tf1);
return(tf2-tf1);

}





// ðàñ÷åò ïîãðåøíîñòè è âûâîä íà ýêðàí

void pogreshnost(float *pmast,float *pmasUvix)
{
int n=4,k=0;
float tf,E = 0.11;
int Im=20;
float V=100,W,P=0;
for(int i=0;i<Im; i++)
{
W=n*tf;
P=fabs(W-V);
if(P>E)
{

k=k+1;
n=n*2;
V=W;
}
else if(P==0)
{

k=k+1;
n=n*2;
V=W;
}
else break;
}
if(P==0)
{
printf("\n\n\n\nDlitelnost' impulsa vihodnogo signala: %f\n",W);
printf("\tTochnost': E = 0.11\n");
printf("\tDannaya tochnost' NE dostygnuta pri n=%d. \n\tKolichestvo udvoenii k=%d\n",n,k);
}
else {
printf("\n\n\n\nDlitelnost' impulsa vihodnogo signala: %f\n",W);
printf("\tTochnost': E = 0.11\n");
printf("\tDannaya tochnost' dostygnuta pri n=%d. \n\tKolichestvo udvoenii k=%d\n",n,k);
printf("\tPogreshnost' %f\t",P);
}
getch();
return;
}


// ãðàôèê
void graphic(float *pt,float *pU,int n)
{	
int Xmax =640 , Ymax = 450, Indx=60,Ind=40;
int gd = DETECT, gm;
initgraph(&gd,&gm,"");
float z,e;
int Umin=100,masht,Zn=Ymax,Zm=Ymax,dy,Umax=-10000;

//ïîèñê ìèíèìàëüíîãî è ìàêñèìàëüíîãî çíà÷åíèÿ
for(int i=0;i<n;i++)
{
for(int k=-1000;k<1000;k++)
if (*(pU+i)>=k&&*(pU+i)<(k+1)&&k>=Umax) Umax=k;
else if(*(pU+i)>=k&&*(pU+i)<(k+1)&&k<=Umin) Umin=k;
} 
//îïðåäåëåíèå òî÷íîñòè ãðàôèêà
if (Umax<=4&&Umin>=-10) {e=0.1;z=10;}
else if (Umax<=80&&Umax>40&&Umin>=-10){ e=0.2; z=5;}
else if (Umin>-40){e=0.25; z=4;}
else if (Umin<=-40){e=1; z=1;}
for(int i=0;i<1000;i++)
if ((Ymax-Ind)>=z*(Umax+fabs(Umin))*i&&(Ymax-Ind)<z*(Umax+fabs(Umin))*(i+1)) masht=i;	//ìàñøòàá ïî îñè Ó
// îòðåçêè ïî âðåìåíè
int shtx;
for(int k=0;k<1000;k++)
if (k*n<=Xmax-Indx&&(k+1)*n>Xmax-Indx) shtx=k;


for(int i=0;i<=2;i++){
//çàëèâêà áåëûì öâåòîì
for (int k=1;k<=Ymax-Ind;k++)
{
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
setcolor(WHITE);
line(Indx,Ind+k,Xmax,Ind+k );
}

//ïîñòðîåíèå ñåòêè
setlinestyle(SOLID_LINE,0,NORM_WIDTH);
setcolor(BLUE);

for(int k=-10;k<=40;k++)
if(Zm!=Ymax&&Zm+15*k>Ind&&Zm+15*k<Ymax)
line(Indx,Zm+15*k,Xmax,Zm+15*k);  //ãîðèçîíòàëüíûå

for(int k=1;k<=n;k++)
if(Indx+k*2*shtx<Xmax)
line(Indx+k*2*shtx ,Ind,Indx+k*2*shtx ,Ymax); //âåðòèêàëüíûå



// ïîñòðîåíèå ãðàôèêà

setlinestyle(SOLID_LINE,0,THICK_WIDTH);
setcolor(RED);
moveto(Indx,Ymax);
for (int i=0;i<n;i++)
{ float ugr,igr=pU[i];
int m,j=0;
if (igr<0&&Umin<0){ ugr=igr-Umin; m=1;}
for(int k=0;k<=10000;k++)
{  
j++;
if(ugr>=e*k&&ugr<e*(k+1)&&Umin<0){ j--; break;}
else if(igr>=e*k&&igr<e*(k+1)){ j--; break;}

}

if (igr>=Umax&&Umin>=0) Zm=Ymax-j*masht;
else if (igr<=Umin&&Umin>=0) Zn=Ymax-j*masht;
else if (igr>=Umax&&Umin<0) Zm=Ymax-(j-Umin)*masht;
else if (igr<=Umin&&Umin<0) Zn=Ymax-(j-Umin)*masht;	 
if(Umin<0&&igr<0&&m!=1)
lineto(Indx+i*shtx,Ymax+j*masht+Umin*masht);
if(Umin<0&&igr<0&&m==1){
lineto(Indx+i*shtx,Ymax-j*masht);m=0;}
else if(Umin<0&&igr>=0)
lineto(Indx+i*shtx,Ymax-j*masht+Umin*masht); 
else lineto(Indx+i*shtx,Ymax-j*masht);

}


//ïîñòðîåíèå îñåé
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
setcolor(BLUE);
line(Indx,Ind,Indx,Ymax);
line(Indx,Ymax+2,Xmax,Ymax+2);

for(int k=1;k<=n;k++)
line(Indx+k*2*shtx ,Ymax-1,Indx+k*2*shtx ,Ymax+5);


//ïîäïèñü çíà÷åíèé

setbkcolor(BLACK);
setcolor(WHITE);
double dT,u;
char stu[10];
for ( int k=0;k<10000;k++) 
if(fabs(Zm-Zn)<=(n)*k){ dy=k-1;break;} 
for(int k=-1000;k<1000;k++)			 //ïî îñè  Y
{		if (Umin<0) u=(Ymax+masht*Umin-(Zm+15*k))*e/masht;
else u=(Ymax-(Zm+15*k))*e/masht;
sprintf(stu,"%4.1f",u);
if(Zm+15*k>=Ymax) break;
else if (Zm+15*k>Ind)
{
outtextxy(0,Zm+15*k-10,stu);
setcolor(BLUE);
line(Indx-3,Zm+15*k,Indx+3,Zm+15*k);
setcolor(WHITE);
}
}


dT=fabs(tk-tn)/(n-1);
for(int k=0;k<n;k++)			  // ïî îñè Õ 
{ 
u=pt[0]+2*dT*k;
sprintf(stu,"%4.1f",u);
if (Indx+k*2*shtx-20>=Xmax ) break;
outtextxy(Indx+k*2*shtx-20 ,Ymax+6,stu);
}}

char eu[20];
sprintf(eu,"òî÷íîñòü ãðàôèêà  %.2f",e);
outtextxy(80,8,eu);
getch();
closegraph();

}	 


// îñíîâíîå òåëî ïðîãðàììû

int main()
{


float t[Nmax],Uvx[Nmax],Uvix[Nmax];
float *pmast=&t[0], *pmasUvx =&Uvx[0], *pmasUvix=&Uvix[0];

int n,i=1;

while(i!=0)
{
switch(menu())
{

case '1':
n=N;
inputt(t,N);
inputUvx(t,Uvx,N);
inputUvix(Uvx,Uvix,N);
tabl();
output(N,t,Uvx,Uvix);
getche();
break;

case '2':
inputt(t,N);
inputUvx(t,Uvx,N);
inputUvix(Uvx,Uvix,N);


SaveFile(t,"C:\\KURS\\t.txt",N);
SaveFile(Uvx,"C:\\KURS\\Uvx.txt",N);
SaveFile(Uvix,"C:\\KURS\\Uvix.txt",N);

printf("Zapis' v faili proshla uspeshno! USPEH!\n");
getche();
break;



case '3':
pogreshnost(t,Uvix);
getche();
break;

case '4':
n=N;
inputt(pmast,N);
inputUvx(pmast,Uvx,N);
inputUvix(pmasUvx,pmasUvix,N);
graphic(pmast,pmasUvx,N);
graphic(pmast,pmasUvix,N);
graphic(pmasUvx,pmasUvix,N);

getche();
break;


case '5':
i = 0;
break;	 

}
}


getche();

return 1;
}
 
P

Pasha

#2
Это под броланд C++ 3.1? Зайди Options | Linker | Libraries, включи там Graphics library.
 
D

DaaGER

#3
У меня нет борланда! Я же писал "Пишу в Dec-C++".
 
P

Pasha

#4
Пиши на чем хочешь, но DETECT есть только в старых версиях Boland C++.
 
D

DaaGER

#5
а вообще прога работать то будет?Просто мне очень надо!Если она функционирует,то мне этого вполне хватает,просто препод нас учит коряво,смесь функций из разных компиляторов.

Помогите бедному студенту...