#include <stdio.h>

#define SIZE 5
int stack[SIZE];
int sp;

void push(int value);
int pop(void);

int main(void)
{
    int resp, data;
    int i;

    sp = 0;

    while(1){
        printf("1: push 2:pop 0:end : ");
        
        /* 【修正】数字が正しく入力されなかったらループを抜ける安全装置 */
        if (scanf("%d", &resp) != 1) {
            printf("\n不正な入力、または入力が終了しました。\n");
            break;
        }

        if(!resp) break;

        switch(resp){
            case 1: 
                printf("push : "); 
                if (scanf("%d", &data) != 1) break;
                push( data );
                break;
            case 2: 
                pop();
                break;
        }
        printf("sp=%d\n", sp);
    }
    printf("\n");
    
    for(i=0; i<sp; i++){
        printf("stack[%d]=%d\n", i, stack[i]);
    }

    return 0;
}

void push(int value)
{
    if(sp >= SIZE){
        printf("スタックが満杯で入りませんでした\n");
    }else{
        stack[sp++] = value;
    }
}

int pop(void)
{
    if(sp <= 0){
        printf("スタックが空で取り出せませんでした\n");
        return 0;
    }else{
        return stack[--sp];
    }
}
