zoukankan      html  css  js  c++  java
  • 洛谷 P1022.计算器的改良

    洛谷 P1022.计算器的改良

    题目背景

    NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手ZL先生。

    题目描述

    为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例:

    4+3x=8

    6a−5+1=2−2a

    −5+12y=0

    ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及+、-、=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。

    你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。

    输入格式

    一个一元一次方程。

    输出格式

    解方程的结果(精确至小数点后三位)。

    输入输出样例

    输入样例#1
    6a-5+1=2-2a
    
    输出样例#1
    a=0.750
    

    题目思路

    利用左边为自变量和系数,右边为数字,移项的思想来进行计算。
    注意 y=0 这样的情况发生,判断等式右边为0,则不进行系数相除,
    直接输出结果。

    #include<iostream>
    using namespace std;
    
    int main()
    {
        float x=0,resn=0,resz=0;    //x为临时存放数字,resn等式右边数字,resz等式自变量系数
        int op = 1,l = 1;   //op为操作符号,l判断输入是在等式左边还是右边
        char c,bl;  //bl为输入的自变量
        while(cin >> c)
        {
            if(c>='0'&&c<='9')
            {
                x*=10;
                x+=c-48;
            }
            else if(c=='+'||c=='-')
            {
                if(l)
                {
                    if(x)
                        resn-=op*x;
                }
                else
                {
                    if(x)
                        resn+=op*x;
                }
                if(c=='+')op = 1;
                else op = -1;
                x=0;
            }
            else if(c=='=')
            {
                l = 0;
                if(x)
                    resn-=op*x;
                x=0;
                op=1;
            }
            else
            {
                bl = c;
                if(x==0)x=1;
                if(l)
                    resz+=op*x;
                else
                    resz-=op*x;
                x=0;
            }
        }
        resn+=op*x;
        if(resn)
            resn/=resz;
        printf("%c=%.3f",bl,resn);
        return 0;
    }
    
  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/fsh001/p/12332521.html
Copyright © 2011-2022 走看看