| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 541 人关注过本帖
标题:求助!我们的作业,谁能帮小弟继续编写下去
只看楼主 加入收藏
suweikey
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-6-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
求助!我们的作业,谁能帮小弟继续编写下去
要求编写一个带括号,有计算顺序的计算器,我编写了一部分,还差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 编辑 ]
搜索更多相关主题的帖子: 作业 编写 
2010-06-29 09:20
pykuyuan
Rank: 2
等 级:论坛游民
帖 子:46
专家分:34
注 册:2009-6-26
收藏
得分:7 
line[count++] = moji = c,这个谁能帮我解释下。谢谢

逐渐变黑
2010-06-29 16:10
快速回复:求助!我们的作业,谁能帮小弟继续编写下去
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025223 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved