Esempio n. 1
0
/*
 * 打印真值表
 * bPrint : 是否输出到StdOut
 */
int *print_table(const char *exp, ExpInfo *info, Bool bPrint)
{
    int *result;
    int i, j, cols, rows, tmp, count;
    char *suffix, row[MAX_LETTERS];

    cols = info->cols;
    rows = info->rows;
    result = (int *)calloc(rows , sizeof(int));

    if (bPrint)
    {
        for (i = 0; i < MAX_LETTERS; ++i)
        {
            if (info->elem[i])
            {
                printf("\t%c", i + 'A');
            }
        }
        printf("\t%s\n", exp);
    }

    suffix = infix_to_suffix(exp);

    for (i = 0; i < rows; i++)
    {
        count = 0;
        tmp = i;

        memset(row, 0, sizeof(row));
        /* 通过将十进制转换成二进制来生成每行的序列  */
        do
        {
            row[count++] = tmp % 2;
            tmp /= 2;
        }
        while (tmp != 0);

        strReverse(row, cols);

        result[i] = eval(row, suffix, info);

        if (bPrint)
        {
            for (j = 0; j < cols; j++)
            {
                printf("\t%d", row[j]);
            }
            printf("\t%d\n", result[i]);
        }
    }
    free(suffix);
    return result;
}
Esempio n. 2
0
int main(void)
{
    char exp_infix[MAX_LEN];
    char exp_suffix[MAX_LEN];
    int i = 0;

    printf("Please input a infix expression:\nInfix expression:");
    scanf("%s", exp_infix);

    infix_to_suffix(exp_infix, exp_suffix);
    printf("Suffix expression:");
    while (exp_suffix[i] != '\0')
    {
        printf("%c",exp_suffix[i++]);
    }
    printf("\n");
    printf("%s = %d\n", exp_infix, get_value(exp_suffix));

    return 0;
}
Esempio n. 3
0
int main(int argc, char **argv)
{
	char infix[MAX_BUFF] = { 0 };
	int prefix[MAX_BUFF];	/* storage for infix elements */
	int suffix[MAX_BUFF];	/* suffix representation */

	int infix_cnt, suffix_cnt, result;
	sEleType dat[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

	printf("input a expr to eval:\n");
	scanf("%s", infix);
	printf("infix notation : %s\n", infix);

	infix_cnt = infix_parser(infix, prefix);
	print_expr_result("mid representation is", prefix, infix_cnt);

	suffix_cnt = infix_to_suffix(prefix, infix_cnt, suffix);
	print_expr_result("suffix representation is", suffix, suffix_cnt);

	result = calc_suffix_expr(suffix, suffix_cnt);
	printf("eval %s is %d\n", infix, result);

	return 0;
}