• 九度oj 题目1103:二次方程计算器


    题目描述:

    设计一个二次方程计算器

    输入:

    每个案例是关于x的一个二次方程表达式,为了简单,每个系数都是整数形式。

    输出:

    每个案例输出两个实数(由小到大输出,中间由空格隔开),保留两位小数;如果无解,则输出“No Solution”。

    样例输入:
    x^2+x=3x+4
    样例输出:
    -1.24 3.24
     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cmath>
     6 #define MAX 102
     7 
     8 char er[MAX];
     9 int main(int argc, char const *argv[])
    10 {
    11     int n, m, k;
    12     //freopen("input.txt","r",stdin);
    13     while(scanf("%s",er) != EOF) {
    14        int a = 0, b = 0, c = 0;
    15        int state = 1;
    16        int i = 0;
    17        int temp = 1;
    18        int fu = 1;
    19        while(i < strlen(er)) {
    20             if(er[i] == 'x' && i+2 < strlen(er)) {
    21                 if(er[i+1] == '^' && er[i+2] == '2') {
    22                     temp = temp * fu;
    23                     a = a + temp;
    24                     i = i + 3;
    25                     temp = state;
    26                 }
    27                 else {
    28                     temp = temp * fu;
    29                     b = b + temp;
    30                     i++;
    31                     temp = state;
    32                 }
    33             }
    34             else if(er[i] == 'x') {
    35                 temp = temp * fu;
    36                 b = b + temp;
    37                 i++;
    38                 temp = state;
    39             }
    40             else if(er[i] == '-') {
    41                 fu = -1;
    42                 i++; 
    43             }
    44             else if(er[i] == '+') {
    45                 fu = 1;
    46                 i++; 
    47             }
    48             else if(er[i] >= '0' && er[i] <= '9') {
    49                 temp = 0;
    50                 while(er[i] >= '0' && er[i] <= '9') {
    51                     temp = temp * 10 + er[i] - '0';
    52                     i++;
    53                 }
    54                 temp = temp * state;
    55                 if((i < strlen(er) && er[i] != 'x') || i == strlen(er)) {
    56                     temp = temp * fu;
    57                     c = c + temp;
    58                     temp = state;
    59                 }
    60             }
    61             else if(er[i] == '=') {
    62                 state = -1;
    63                 temp = state;
    64                 fu = 1;
    65                 i++;
    66             }
    67        }
    68        //printf("%d %d %d
    ",a,b,c);
    69        double at = a, bt = b, ct = c;
    70        double ansa, ansb;
    71        double dt = bt*bt-4*at*ct;
    72        if( dt < 0) {
    73             puts("No Solution");
    74        }
    75        else {
    76             ansa = (-bt - sqrt(dt))/(2*at);
    77             ansb = (-bt + sqrt(dt))/(2*at);
    78             printf("%.2lf %.2lf
    ",ansa, ansb);
    79        }
    80     }
    81     return 0;
    82 }
  • 相关阅读:
    6种负载均衡算法
    Java中volatile关键字
    剑指offer练习
    linux系统查看IP地址,不显示IP地址或者只显示127.0.0.1
    Nginx负载均衡配置
    集群应用Session一致性实现的三种方案
    rabbitMQ学习
    JDK1.8在LINUX下安装步骤
    ecplise部署gradle web项目
    Kubernetes下的应用监控解决方案
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5719854.html
Copyright © 2020-2023  润新知