Exemple #1
0
int main()
{
    char line[256];

    while(fgets(line, sizeof(line) - 1, stdin)) {
        if(strcmp(line, "exit") == 0) {
            break;
        }

        if(is_valid_expression(line)) {
            print_result(get_expr_value());
        } else {
            printf("Expression error\n");
        }
    }

    return 0;
}
Exemple #2
0
int main(int argc, char *argv[])
{
    char *exp;
    int *result;
    ExpInfo *info;
    FILE *fp;

#ifdef _WIN32
    system("title 离散数学真值表");
#endif

    if (argc == 2)
    {
        fp = fopen(argv[1], "r");

        if (fp == NULL)
        {
            printf("file read error!");
            return 0;
        }

        while (!feof(fp))
        {
            exp = fReadLine(fp);
            printf("%s\n", exp);
            if (!is_valid_expression(exp))
            {
                free(exp);
                continue;
            }
            info = get_info(exp);
            result = print_table(exp, info, FALSE);
            print_result(result, info);
            free(exp);
            free(info);
            free(result);
        }
        fclose(fp);
        return 0;
    }

    while (1)
    {
        cls();
        instruction();
        exp = getstr();

        if (strlen(exp) == 1 && exp[0] == 'q')
        {
            free(exp);
            break;
        }
        if (!is_valid_expression(exp))
        {
            free(exp);
            printf("不合法的表达式!\n");
            pause();
            continue;
        }

        info = get_info(exp);
        /* printf("%s", infix_to_suffix(exp));  */
        result = print_table(exp, info, TRUE);
        print_CNF(result, info);
        print_DNF(result, info);
        free(exp);
        free(info);
        free(result);
        pause();
    }
    return 0;
}