Курсач

Тема в разделе "Общие вопросы по С и С++", создана пользователем DaaGER, 3 июн 2007.

  1. DaaGER

    DaaGER Гость

    Репутация:
    0
    У меня всё время вылетает ошибка:

    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;
    }
     
  2. Pasha

    Pasha Гость

    Репутация:
    0
    Это под броланд C++ 3.1? Зайди Options | Linker | Libraries, включи там Graphics library.
     
  3. DaaGER

    DaaGER Гость

    Репутация:
    0
    У меня нет борланда! Я же писал "Пишу в Dec-C++".
     
  4. Pasha

    Pasha Гость

    Репутация:
    0
    Пиши на чем хочешь, но DETECT есть только в старых версиях Boland C++.
     
  5. DaaGER

    DaaGER Гость

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

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

    Pasha Гость

    Репутация:
    0
Загрузка...
Похожие Темы - Курсач
  1. Fatality93
    Ответов:
    0
    Просмотров:
    1.832
  2. Musah
    Ответов:
    0
    Просмотров:
    1.028

Поделиться этой страницей