⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch15.h

📁 将C语言的常用程序集移植到VC开发环境的源代码
💻 H
字号:
/************************************************
 Expect bugs!
 Please use and enjoy, and let me know of any bugs/mods/improvements 
 that you have found/implemented and I will fix/incorporate them into 
 this file. Thank Mr. Xushiliang once again.

					hujinshan@2002.11.3
				Airforce Engineering University
************************************************/

/*****  #include "CH15.h"  复数运算*****/
#ifndef CH15_H_
#define CH15_H_

#include "stdlib.h"
#include "math.h"
#include "stdio.h"
//*******************************************************************

void ocmul(double a,double b,double c,double d,double* e,double* f);//复数乘法
void ocdiv(double a,double b,double c,double d,double* e,double* f);//复数除法
void opowr(double x,double y,int n,double* u,double* v);//复数乘幂
void ontrt(double x,double y,int n,double u[],double v[]);//复数的N次方根
void ocexp(double x,double y,double* u,double* v);//复数指数
void oclog(double x,double y,double* u,double* v);//复数对数
void ocsin(double x,double y,double* u,double* v);//复数正弦
void occos(double x,double y,double* u,double* v);//复数余弦
void oplot(int n,double x[],double y[],char xc,char yc,
		   char c,double* xd,double* yd,char str[])//复数作图--不需要

//*******************************************************************
void ocmul(double a,double b,double c,double d,double* e,double* f)
{ 
	double p,q,s;
    p=a*c; q=b*d; s=(a+b)*(c+d);
    *e=p-q; *f=s-p-q;
    return;
}
/////////////////////////////////////////////////////////////
void ocdiv(double a,double b,double c,double d,double* e,double* f)
{ 
	double p,q,s,w;
    p=a*c; q=-b*d; s=(a+b)*(c-d);
    w=c*c+d*d;
    if (w+1.0==1.0) 
      { *e=1.0e+35*a/fabs(a);
        *f=1.0e+35*b/fabs(b);
      }
    else
      { *e=(p-q)/w; *f=(s-p-q)/w; }
    return;
}
/////////////////////////////////////////////////////////////
void opowr(double x,double y,int n,double* u,double* v)
{ 
	double r,q;
    q=atan2(y,x);
    r=sqrt(x*x+y*y);
    if (r+1.0!=1.0)
      { r=n*log(r); r=exp(r);}
    *u=r*cos(n*q); *v=r*sin(n*q);
    return;
}
/////////////////////////////////////////////////////////////
void ontrt(double x,double y,int n,double u[],double v[])
{ 
	int k;
    double r,q,t;
    if (n<1) return;
    q=atan2(y,x);
    r=sqrt(x*x+y*y);
    if (r+1.0!=1.0)
      { r=(1.0/n)*log(r); r=exp(r);}
    for (k=0; k<=n-1; k++)
      { t=(2.0*k*3.1415926+q)/n;
        u[k]=r*cos(t); v[k]=r*sin(t);
      }
    return;
}
/////////////////////////////////////////////////////////////
void ocexp(double x,double y,double* u,double* v)
{
	double p;
    p=exp(x);
    *u=p*cos(y); *v=p*sin(y);
    return;
}
/////////////////////////////////////////////////////////////
void oclog(double x,double y,double* u,double* v)
{ 
	double p;
    p=log(sqrt(x*x+y*y));
    *u=p; *v=atan2(y,x);
    return;
}
/////////////////////////////////////////////////////////////
void ocsin(double x,double y,double* u,double* v)
{ 
	double p,q;
    p=exp(y); q=exp(-y);
    *u=sin(x)*(p+q)/2.0; *v=cos(x)*(p-q)/2.0;
    return;
}
/////////////////////////////////////////////////////////////
void occos(double x,double y,double* u,double* v)
{ 
	double p,q;
    p=exp(y); q=exp(-y);
    *u=cos(x)*(p+q)/2.0; *v=-sin(x)*(p-q)/2.0;
    return;
}
/////////////////////////////////////////////////////////////
void oplot(int n,double x[],double y[],char xc,char yc,char c,double* xd,double* yd,char str[])
{ 
	char buffer[50];
	int i,j,k;
    double xx,yy;
    char xy[72][72];
    for (i=0; i<=71; i++)
    for (j=0; j<=71; j++) xy[i][j]=' ';
    xy[0][35]='Y';
    for (i=1; i<=71; i++) xy[i][36]=yc;
    xy[36][71]='X';
    for (j=0; j<=70; j++) xy[36][j]=xc;
    xx=0.0; yy=0.0;
    for (k=0; k<=n-1; k++)
      { if (fabs(x[k])>xx) xx=fabs(x[k]);
        if (fabs(y[k])>yy) yy=fabs(y[k]);
      }
    xx=35.0/xx; yy=35.0/yy;
    for (k=0; k<=n-1; k++)
      { i=37.0-yy*y[k]-0.5;
        j=xx*x[k]+36.0-0.5;
        xy[i][j]=c;
      }
    strcat( str, "\r\n" );
    for (i=0; i<=71; i++)
      { for (j=0; j<=71; j++)
         sprintf( buffer,"%c",xy[i][j]),strcat( str, buffer );
         strcat( str, "\r\n" ); 
      }
    strcat( str, "\r\n" );
    sprintf( buffer,"X-scale is:%13.7e\r\n",xx);strcat( str, buffer );
    sprintf( buffer,"Y-scale is:%13.7e\r\n",yy);strcat( str, buffer );
    strcat( str, "\r\n" );
    *xd=xx; *yd=yy;
    return;
}
/////////////////////////////////////////////////////////////
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -