計算アルゴリズム【Ⅱ】at TECH
計算アルゴリズム【Ⅱ】 - 暇つぶし2ch35:28
05/10/16 09:58:58
>>34
それを言われると痛い…….でも中置では全ての式の生成がちょっとややこしくならない?
後置だと↓な感じで再帰回して済むんだけど.
#include <stdio.h>
#include <limits.h>
#include <math.h>
#include <string.h>
#define calc(stack, top, op) \
  if (top < 2) return INT_MIN; \
  if (#op[0] == '/' && stack[top-1] == stack[top-2]) return INT_MIN; \
  stack[top-2] = stack[top-2] op stack[top-1]; --top;
double eval(char* p) {
  double stack[100], d;
  int top;
  for (top = 0; *p != '\0'; ++p) 
    switch (*p) {
      case '+': calc(stack, top, +); break;
      case '-': calc(stack, top, -); break;
      case '*': calc(stack, top, *); break;
      case '/': calc(stack, top, /); break;
      default: stack[top++] = *p - '0';
    }
  return top == 1 ? stack[0] : INT_MIN;
}


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch