Algorithm 版 (精华区)

发信人: ssos (存在与虚无·英雄无敌), 信区: Algorithm
标  题: [合集]帮偶解解这个
发信站: 哈工大紫丁香 (2002年01月24日08:45:21 星期四), 站内信件


────────────────────────────────────────
 rainy (段誉)                         于 2001年11月21日19:50:22 星期三 说道:

初中生竞赛的题目,题目好多,谁帮我做一个?
剩下的我自己做
输入一个一元一次方程,输出它的解
例如输入6a-5+1=2-2a
输出a=0.750
方程不带括号

────────────────────────────────────────
 Lerry (戒网·学习)                   于 2001年11月21日19:56:53 星期三 说道:

这个不带括号还用做吗?

────────────────────────────────────────
 davidchang (被pass了)                于 2001年11月21日20:18:32 星期三 说道:

老大
这个你都不会,俺们怎么会呀
grin

────────────────────────────────────────
 rainy (段誉)                         于 2001年11月21日20:20:03 星期三 说道:

不帮就算啦,取笑什么
只不过题目多一点,偶自己花点时间解呗
有什么了不起的

────────────────────────────────────────
 Lerry (戒网·学习)                   于 2001年11月21日21:15:55 星期三 说道:

哈哈,开玩笑的
要方法还是要源程序?

────────────────────────────────────────
 gosirius (必宿五)                    于 Thu Nov 22 17:25:48 2001) 说道:


void main()
{
    char s[MAX];




────────────────────────────────────────
 gosirius (必宿五)                    于 Thu Nov 22 17:40:44 2001) 说道:


void main()
{
    char s[MAX];
    int a,b;
    scanf("%s",s);
    int n=0;
    int f=1;
    int m=0
    while(s[n]!='\0')
        {
            swich(s[n])
            {
               case '0':
               case '1'
                  .
                  .
                  .
                  m=(m*10+(s[n]-46));
                  break;
               case '+':
                  b=b+f*m;
                  m=0;
                  break;
               case 'a':
                  a=a+f*m
                  m=0;
                  n++
                  break;
               case '=':
                  f=-1;
              }
              n++
          }
      printf("\n%f",-(float)b/(float)a);
}

以上是一个简化版本,系数只能是整数,可能还有很多错误,但大概思路应该能看懂吧?

────────────────────────────────────────
 lizhenguo (夸父·追日)               于 2001年11月22日17:59:10 星期四 说道:

程序不错,但漏了减号和负号两种情况。

────────────────────────────────────────
 gosirius (必宿五)                    于 Thu Nov 22 18:02:34 2001) 说道:



现写的,没太注意,还请各位大虾不要介意。

────────────────────────────────────────
 Lerry (戒网·学习)                   于 2001年11月22日18:42:52 星期四 说道:

haha,受我启发了吧

────────────────────────────────────────
 lizhenguo (夸父·追日)               于 2001年11月23日07:44:01 星期五 说道:

根据gosirius的思路,我写了一个完整程序。在Delphi 5.5上运行通过
program equation;
{$APPTYPE CONSOLE}
uses SysUtils;
var
    s:string;
    num:real;
    flag1,flag2:shortint;//flag1---是否在等号右边标志,flag2---该项是否为负标志
    flag3:boolean;//是否在小数点后面标志
    left,right:real;//left---a的系数
    i:integer;
begin
    flag1:=1;
    flag2:=1;
    flag3:=false;
    num:=0;
    left:=0;
    right:=0;
    readln(s);
    for i:=1 to length(s) do
    begin
        if s[i] in ['0'..'9'] then
        begin
            if flag3 then num:=num+strtoint(s[i])/10
            else num:=num*10+strtoint(s[i]);
        end;
        case s[i] of
           '.':flag3:=true;
            '+':
            begin
                right:=right+num*flag1*flag2;
                num:=0;
                flag2:=1;
                flag3:=false;
            end;
            '-':
            begin
                right:=right+num*flag1*flag2;
                num:=0;
                flag3:=false;
                flag2:=-1;
            end;
            '=':
            begin
                right:=right+num*flag1*flag2;
                flag1:=-1;
                flag2:=1;
                flag3:=false;
                num:=0;
            end;
            'a':
            begin
                if num=0 then left:=left+1
                else left:=left+num*flag1*flag2;
                num:=0;
                flag2:=1;
                flag3:=false;
            end;
        end;
    end;
    right:=right+num*flag1*flag2;
    writeln('The answer is:',-right/left);
    readln;
end.

────────────────────────────────────────
 Lerry (戒网·学习)                   于 2001年11月23日10:22:53 星期五 说道:

警告,不要在算法版发表源程序(这么烂的)

────────────────────────────────────────
 fobcaesar (温泉企鹅)                 于 2001年11月23日10:42:39 星期五 说道:

嘿嘿!
Lerry是不是没有写出来呀?

────────────────────────────────────────
 Lerry (戒网·学习)                   于 2001年11月23日14:15:21 星期五 说道:

你个笨笨,我的程序你不是看过了吗?KICK

────────────────────────────────────────
 fobcaesar (温泉企鹅)                 于 2001年11月23日14:18:20 星期五 说道:

呵呵!我这里也有一个,不过太长了!

────────────────────────────────────────
 Lerry (戒网·学习)                   于 2001年11月23日19:27:43 星期五 说道:

哈哈,我还以为你编程序不罗嗦了呢,这么简短
原来你的程序什么都解决不了
连优先级都没有,没有括号又不表示没有乘除号

────────────────────────────────────────
 lizhenguo (夸父·追日)               于 2001年11月23日20:00:07 星期五 说道:

呵呵,我只是针对他给的数据给出程序。
你把你的程序贴出来让大家欣赏欣赏?

────────────────────────────────────────
 Lerry (戒网·学习)                   于 2001年11月23日20:03:43 星期五 说道:

现在没空,再说我编过了,不想再编做过的程序

────────────────────────────────────────
 lizhenguo (夸父·追日)               于 2001年11月23日20:31:01 星期五 说道:

                ~~~~~~

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.477毫秒