📄 data.c
字号:
index = inline[col];
if (((index > '0') && (index <= '9')) ||
((index == '0') && (decpt == 1)) ||
(index == '.')) { /* floating number */
newval = 0.0;
while ((index >= '0') && (index <= '9')) {
newval = 10.0*newval + (index - '0');
col++;
index = inline[col];
}
if (index == '.') {
double constant = 0.1;
col++;
index = inline[col];
while ((index >= '0') && (index <= '9')) {
newval = newval + (index - '0') * constant;
constant *= 0.1;
col++;
index = inline[col];
}
}
return(newval);
} /* end of floating point number */
if (index == '0') { /* octal or hexadecimal */
col++;
index = inline[col];
if ((index == 'x') || (index == 'X')){ /* hexadecimal */
col++;
index = inline[col];
newval = 0.0;
while (((index >= '0') && (index <= '9')) ||
((index >= 'A') && (index <= 'F')) ||
((index >= 'a') && (index <= 'f'))) {
switch (index) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':i = index - '0';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':i = index - 'A' + 10;
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':i = index - 'a' + 10;
break;
default :break;
}
newval = 16.0*newval + i;
col++;
index = inline[col];
}
return(newval);
} /* end of hexadecimal 'if' */
else { /* octal */
newval = 0.0;
while ((index >= '0') && (index <= '7')) {
newval = 8.0*newval + (index - '0');
col++;
index = inline[col];
}
return(newval);
} /* end of octal 'else' */
} /* end of octal or hexadecimal numbers */
/* find variable or function name */
if ((inline[col] >= 'A') && (inline[col] <= 'Z')) {
name[0] = inline[col++];
i = 1;
while ((((inline[col] >= 'A') && (inline[col] <= 'Z')) ||
((inline[col] >= '0') && (inline[col] <= '9'))) &&
(i <= 5)) { /* continue var or function name */
name[i++] = inline[col++];
}
name[i] = 0; /* name found */
if (inline[col] == '('){ /* function call */
col++;
if (strcmp(name,"ABS") == 0) {
calcdata(&newval);
if (newval < 0.0) newval = -newval;
}
else if (strcmp(name,"SQRT") == 0) {
calcdata(&newval);
if (newval < 0.0) {
errchk(5); /* Neg value for SQRT */
newval = 0.0;
}
else newval = sqrt(newval);
}
else if (strcmp(name,"FACT") == 0) {
calcdata(&newval);
if (newval < 0.0) {
errchk(16); /* Neg value for FACT */
newval = 0.0;
}
else {
double count;
int howmany;
count = newval;
newval = 1.0;
for (howmany = count;howmany > 1;howmany--) {
count = howmany;
newval = newval * count;
}
}
}
else if (strcmp(name,"EXP") == 0) {
calcdata(&newval);
newval = exp(newval);
}
else if (strcmp(name,"LOG") == 0) {
calcdata(&newval);
if (newval < 0.0) {
errchk(7); /* Neg value for LOG */
newval = 0.0;
}
else newval = log(newval);
}
else if (strcmp(name,"SIN") == 0){
calcdata(&newval);
newval = sin(newval);
}
else if (strcmp(name,"COS") == 0){
calcdata(&newval);
newval = cos(newval);
}
else if (strcmp(name,"ATAN") == 0){
calcdata(&newval);
newval = atan(newval);
}
else {
errchk(6); /* function not found */
newval = 0.0;
}
col--;
return(newval);
} /* end of function call */
else { /* variable name */
for (i = 0;i < 12;i++) {
if ((strcmp(name,allvars[i].varname)) == 0) {
newval = allvars[i].value;
return(newval);
}
}
errchk(3); /* variable not found */
newval = 0.0;
return(newval);
} /* end of variable call */
} /* end of variable or function call */
errchk(9);
return(0.0); /* invalid data found */
}
/* ********************************************************** getop */
/* A call to this function expects to find an operator, end of line */
/* or a close parenthesis. */
char getop(void)
{
while (inline[col] == ' ') col++; /* ignore blanks */
switch (inline[col]){
case '$':
case ')':
case 0 :
case '+':
case '-':
case '*':
case '/': break;
default : errchk(4); /* invalid operator */
}
return(inline[col]);
}
/* ********************************************************* errchk */
/* The error code is stored by this function and the cursor column */
/* is adjusted in an attempt to put the cursor near the error that */
/* caused the problem. */
void errchk(int err)
{
if(errcode) return; /* error already found */
else { /* only the first error is stored */
errcode = err; /* store the error number */
switch (err){
case 2 :
case 4 :
case 8 :
case 9 :
case 10 :
case 11 :
case 12 : colerr = col;
break;
case 1 :
case 3 : colerr = col - 1;
break;
case 6 : colerr = col - 2;
break;
case 5 :
case 7 : colerr = col - 3;
break;
default : colerr = col;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -