演習4-4 K&R プログラミング言語C

4.3 の電卓プログラムを修正する。演習4-4

演算結果の一時メモリ機能

main 関数に以下のケースを追加する。

        /* 省略 */
        case 'm': /* ポップすることなくスタックの一番上の要素を印字して複製する。メモリー機能 */
            push(print());
            break;
        /* 省略 */

スタックの一番上の値をポップせずに印字する関数を追加する。

/* print: スタックから一番上の値をポップすることなく印字する */
double print(void)
{
    if (sp > 0) {
        return val[sp - 1];
    } else {
        printf("error: stack empty\n");
        return 0.0;
    }
}

スタックの上2つの要素の交換機能

main 関数に以下のケースを追加する。

    /* 省略 */
    double op1, op2;
    /* 省略 */
        case 'x': /* スタックの上の要素2つを交換する。 */
            op1 = pop();
            op2 = pop();
            push(op1);
            push(op2);
            break;
    /* 省略 */

実行結果

$ ./calc
2 3 * m
        6
3 +
        9
2 3 -
        -1
2 3 x -
        1
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»