[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 01/02 08:46 / Filesize : 251 KB / Number-of Response : 871
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

計算アルゴリズム【U】



35 名前:28 mailto:sage [2005/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;
}






[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<251KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef