求助!我们的作业,谁能帮小弟继续编写下去
要求编写一个带括号,有计算顺序的计算器,我编写了一部分,还差3个函数,谁能帮我继续编写下去呢?suuji()编写0-9数字
jousuu()编写数字加小数点 例如:3.5
inshi()编写带有括号或正负号的 jousuu()
kou()编写inshi()的乘除
shiki()编写kou()的加减
个位大哥帮小弟编写一下 最后3个函数,具体内容在下面函数体内具体给出了。
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 255
char moji;
int count;
char line[MAXLEN+1];
double shiki(void),kou(void),insi(void),jousuu(void);
int suuji(void);
void nextchar(void),error(char *);
int main(void)
{
double ans;
count = 0;
printf("数式 = ");
nextchar();
ans = shiki();
if(moji == '\n'){
printf("答案 = %lf",ans);
exit(0);
}
error("错误");
}
void nextchar(void)
{
int c;
if((c = getchar())==EOF)
error("错误");
if(count >= MAXLEN)
error("错误");
line[count++] = moji = c;
if(c == ' ')
error("错误");
}
void error(char *s)
{
printf("第%d文字有误:%s\n",count,s);
line[count] = '\0';
printf("%s\n",line);
exit(1);
}
int suuji(void)
{
int atai;
if((moji >= '0')&&(moji <= '9')){
atai = moji - '0';
nextchar();
return atai;
}
error("非数字");
}
double jousuu(void)
{
double atai;
double omomi;
atai = suuji();
while((moji >= '0') && (moji <= '9'))
atai = atai*10.0 + suuji();
if(moji == '.'){
omomi = 0.1;
nextchar();
atai += suuji()*omomi;
while((moji >='0') && (moji <='9')){
omomi *=0.1;
atai += suuji()*omomi;
}
}
return atai;
}
double insi(void)
{
1,如果moji是 + 或 -, 记录这个值,在读取下一个值
2,如果moji不是( ,求jousuu()的值,如果moji是(,进行下列处理
a,读取下一个值
b,求shiki()的值
c,如果moji不是),显示错误
d,读取下一个值
3,返回结果
}
double kou(void)
{
同shiki函数基本一致
}
double shiki(void)
{
1,函数kou()的值带入atai中
2,如果moji是+-,执行循环操作
a,记录moji的值
b,读取下一个文字
c,求下一项,atai加或减
3,返回atai值
}
[ 本帖最后由 suweikey 于 2010-6-29 09:22 编辑 ]