プログラミングの宿題でわからないので答えを教えてください。

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

プログラミングの宿題でわからないので答えを教えてください。

#1

投稿記事 by td1223 » 6年前

/* cpp2 w07w */
/* rpcalcShow.c*/
/* tiny reverse Polish calculator */
/* two extended commands added. */
/* p: for printing stack top */
/* .: for resetting the calculator*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define STACKSIZE 100
int stack[STACKSIZE];//operand stack
int sp;//stack pointer; next stacking position

/*関数 void readEval(void);*/
/*標準入力から指定の書式の拡張逆ポーランド記法の式を*/
/*読み込んで、その値を計算して表示する。 */
/*拡張逆ポーランド記法とは、通常の逆ポーランド記法の*/
/*式に使用できる演算子に加えて、表示を指示するコマン*/
/*ド pを特殊な演算子として追加している。 */
/*電卓は pに出会うとそれまでの部分的な計算結果を保持*/
/*している stack topの値を表示して popする。 */
/*もう一つの追加コマンドとして、「 .」(ピリオド)が*/
/*ある。電卓はこのコマンドに出会うと、それまでの計算*/
/*をすべて破棄して、calculator(電卓)を初期状態にもど*/
/*す。これは、誤入力をして stackの状態が正常でなくな*/
/*った場合などに利用する。 */
void readEval(void);//逆ポーランド記法の式を1つ読み式に従って演算する。
void push(int num);//stackにデータを積む。stackポインタは1増える。
int pop(void);//stack topの値を関数値とし、stack pointerを1つ下げる。
int isEmpty(void);//stackが空なら 1、さもなくば 0
void add_on_stack(void);
void sub_on_stack(void);
void mul_on_stack(void);
void print_stack_top(void);//stack topを表示; pコマンド
void reset(void);//reset calculator; .コマンド

/****************************************************/
/* Utility functions for maintenance */
void pstack(void);
/****************************************************/
int main(void) {//メイン関数
//initialise stack
reset();//*initialise stack by setting sp=0;
//read and eval expression loop
readEval();
return 0;
}

//関数 void readEval(void);
void readEval(void) {
char tkn[24];//64bit以内の10進整数の文字列が収容可能な桁数

//先行する連続空白類は読み飛ばし、その後最初の空白類
//までの文字列を読み込む; next_token()に相当
while (1) {//repeat for ever; type ctrl-C to quit
//数値はひたすらスタックにプッシュ
//数値以外が来た、つまり演算子が来たら
//演算子の解析と必要なstack上の処理を行う
//次のtokenを読む
}
return;
}
void push(int num) {
/*関数の処理を実装せよ*/
}
int isEmpty(void) {
/*関数の処理を実装せよ*/
}
int pop(void) {
/*関数の処理を実装せよ*/
}
void add_on_stack(void) {
/*関数の処理を実装せよ*/
}
void sub_on_stack(void) {
/*関数の処理を実装せよ*/
}
void mul_on_stack(void) {
/*関数の処理を実装せよ*/
}
void print_stack_top(void) {//stack topを表示してpopする
/*関数の処理を実装せよ*/
return;
}
void reset(void) {
/*関数の処理を実装せよ*/
}
void pstack(void) {//show stack contents for debugging
int i;
printf("stack=[");
for (i=sp-1; i>=0; i--) {
printf("%3d", stack);
if (i != 0) {putchar(',');}
}
printf("]\n");
}

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