逆ポーランドについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Q

逆ポーランドについて

#1

投稿記事 by Q » 16年前

今スタックを用いて逆ポーランドを作っています。
しかし、起動はするのですがうまく起動しなく困っています。
C言語初めて2ヶ月です。
よろしくお願いします。
  #include <stdio.h>
  #include <stdlib.h>
  #define MAX 100

    int stack[MAX];
    int n;

   void init(void);
   void push(int);
   int pop(void);

   int main(void)
 {
  char c;
  int x, a, b;
  init();

   while (scanf("%c", &c), c != '\n') {
  
   if (isdigit(c)) {
  x = atoi(&c);
  push(x);
   } else {

    switch (c) {
  case '+' :
  b = pop(); a = pop();
push(a + b);
break;

   case '-' :
 b = pop(); a = pop();
  push(a - b);
 break;

   case '*' :
b = pop(); a = pop();
push(a * b);
break;

   case '/' :
b = pop(); a = pop();
push(a / b);
break;

    case '=' :
printf("%d\n", pop());
return 0;
 case ' ' :
  case '\n' :
  case '\t' :
 break;
  default :
printf("不正な文字!!\n");
exit(1);
}
}
}

  printf("数式が完成していません\n");
  return 1;
  }

  void init(void)
 {
 n = 0;
 }

 void push(int x)
  {
  if (n >= MAX) {
  printf("スタックが満タン\n");
 exit(1);
 }
  stack[n] = x;
   n++;
  }

   int pop(void)
  {
  if (n <= 0) {
    printf("スタックは空\n");
    exit(1);
    }
   n--;
   return stack[n];
   }

non

Re:逆ポーランドについて

#2

投稿記事 by non » 16年前

こんな、デコボコのインデントにしたソースを載せないでください。
読みにくいし、もしかして、全角スペースでインデントしたのでは?
規約にソースの載せ方があるので読んで、貼り直してください。

>起動はするのですがうまく起動しなく困っています。
なにをいいたいのかわかりません。

>x = atoi(&c);
この使い方は恐らく間違ってます。まだ、プログラムはみてませんけど・・・

閉鎖

“C言語何でも質問掲示板” へ戻る