头文件
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define MAX_SIZE 256
enum BOOL{FALSE,TRUE};
typedef struct tagOPERATE{
double Operand;
char Operator;
}OPERATE,*LPOPERATE;
void PostSrc(char *src,LPOPERATE lpOperator);
int IsDigit(char);
int isp(char ch);
int icp(char ch);
int Locate(char ch);
int getOperand(char *s,int *len,double *oprd);
double Calculate(LPOPERATE lpOperator,double x);
void SrcFunProc(char *src);
void _Proc(char*src);
以下是源文件的内容
#include"sin.h"
static char Operator[]="#(+-*/^";
static int InPriority[]={0,1,3,3,5,5,7};
static int OutPriority[]={0,10,2,2,4,4,6};
int Locate(char ch)
{
int i=0;
for(i=0;Operator[i]!='/0';i++)
if(Operator[i]==ch)
return i;
return -1;
}
int isp(char ch)
{
if('A'<=ch&&'Z'>=ch)
return 9;
else
return InPriority[Locate(ch)];
}
int icp(char ch)
{
if('A'<=ch&&'Z'>=ch)
return 8;
else
return OutPriority[Locate(ch)];
}
void _Proc(char*src)
{
char Buffer[MAX_SIZE];
char*p=src,*q=Buffer;
*q++=*p++;
while('/0'!=*p)
{
if('-'==*p&&'('==*(p-1))
{
*q++='0';
*q++='-';
p++;
}
else
*q++=*p++;
}
*q='/0'; <
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define MAX_SIZE 256
enum BOOL{FALSE,TRUE};
typedef struct tagOPERATE{
double Operand;
char Operator;
}OPERATE,*LPOPERATE;
void PostSrc(char *src,LPOPERATE lpOperator);
int IsDigit(char);
int isp(char ch);
int icp(char ch);
int Locate(char ch);
int getOperand(char *s,int *len,double *oprd);
double Calculate(LPOPERATE lpOperator,double x);
void SrcFunProc(char *src);
void _Proc(char*src);
以下是源文件的内容
#include"sin.h"
static char Operator[]="#(+-*/^";
static int InPriority[]={0,1,3,3,5,5,7};
static int OutPriority[]={0,10,2,2,4,4,6};
int Locate(char ch)
{
int i=0;
for(i=0;Operator[i]!='/0';i++)
if(Operator[i]==ch)
return i;
return -1;
}
int isp(char ch)
{
if('A'<=ch&&'Z'>=ch)
return 9;
else
return InPriority[Locate(ch)];
}
int icp(char ch)
{
if('A'<=ch&&'Z'>=ch)
return 8;
else
return OutPriority[Locate(ch)];
}
void _Proc(char*src)
{
char Buffer[MAX_SIZE];
char*p=src,*q=Buffer;
*q++=*p++;
while('/0'!=*p)
{
if('-'==*p&&'('==*(p-1))
{
*q++='0';
*q++='-';
p++;
}
else
*q++=*p++;
}
*q='/0'; <