简体   繁体   English

计算器程序问题

[英]Calculator Program Issue

I am trying to work out why this program is not working.我想弄清楚为什么这个程序不起作用。 It is supposed to perform operations like它应该执行类似的操作

5 * 4 = 20 4 + 2 * 8 = 20 6/3 - 2 = 0. 5 * 4 = 20 4 + 2 * 8 = 20 6/3 - 2 = 0。

However, things are not working.然而,事情并没有奏效。

Instructions are:说明是:

Write a C program called calculate that performs simple arithmetic operations.编写一个名为calculate 的C 程序来执行简单的算术运算。 The program takes 3 or 5 arguments from the command line.该程序从命令行获取 3 或 5 个参数。

I am not sure what to do now.我不知道现在该怎么办。

int calc(int x, char op, int y) {
    if (op == '+') {
        return (x+y);
    }
    if (op == '-') {
        return (x-y);
    }
    if (op == 't') {
        return (x*y);
    }
    if (op == '/') {
        return (x/y);
    }
}

int main(int argc, char *argv[]) {
    int a,b,c,result,doOp;
    char op1, op2;

    if (argc == 4 || argc == 6) {
        a = atoi(argv[1]);
        b = atoi(argv[3]);
        op1 = *argv[2];
    } else {
        printf("Wrong number of arguments!");
        return 0;
    }

    if (argc == 6) {
        c = atoi(argv[5]);
        op2 = *argv[4];

        if ((op1 == '+' || op1 == '-') && (op2 == '/' || op2 == 't')) {
            result = calc(a, op1, calc(b, op2, c));
            printf("%d", result);
        }

        if ((op2 == '+' || op2 == '-') && (op1 == '/' || op1 == 't')) {
             result = calc((calc(a, op1, b)), op2, c);
             printf("%d", result);
        } else {
             result = calc((calc(a, op1, b)), op2, c);
             printf("%d", result);
        }
    }

    if (argc == 4) {
        result = calc(a, op1, b);
        printf("%d", result);
    }
    return 0;
}

Here you go Alireza.你去阿里雷萨。 The problems are several, but the main one was the missing "else" in your check to see which calculator sequencing to use.问题有好几个,但主要的问题是检查中缺少“else”以查看要使用的计算器排序。

int calc(int x, char op, int y) {

    if (op == '+') {
        return (x+y);
    }
    if (op == '-') {

        return (x-y);
    }
    if (op == 't') {

        return (x*y);
    }
    if (op == '/') {
        return (x/y);
    }

    printf("Unknown operator!"); // added error check
}

int main(int argc, char *argv[]) {

    int a,b,c,result,doOp;
    char op1, op2;

    if (argc == 4 || argc == 6) {

        a = atoi(argv[1]);
        b = atoi(argv[3]);
        op1 = *argv[2];

    } else {
        printf("Wrong number of arguments!");
        return 0;
    }

    if (argc == 6) {
        c = atoi(argv[5]);
        op2 = *argv[4];

        if ((op1 == '+' || op1 == '-') && (op2 == '/' || op2 == 't')) {

            result = calc(a, op1, calc(b, op2, c));
            printf("%d", result);
        }
        // added else if
        else if ((op2 == '+' || op2 == '-') && (op1 == '/' || op1 == 't')) {

            result = calc((calc(a, op1, b)), op2, c);
            printf("%d", result);
        }
        else {
            result = calc((calc(a, op1, b)), op2, c);
            printf("%d", result);
        }
    }

    if (argc == 4) {

        result = calc(a, op1, b);
        printf("%d", result);
    }

    return 0;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM