zoukankan      html  css  js  c++  java
  • 九度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 }
  • 相关阅读:
    [转]Linux FTP服务配置
    [转]手把手教你nginx下如何增加网站
    [转]linux一键安装web环境全攻略
    CentOS命令
    [转]Response对象的属性和方法
    beforeRouteLeave vue监听返回的使用方法
    ue项目浏览器出现卡顿及崩溃的原因查找与解决方案
    vue中,解决chrome下,的warning, Added nonpassive event listener to a scrollblocking ‘mousewheel‘ event 问题
    npm
    Java线程池使用案例
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5719854.html
Copyright © 2011-2022 走看看