여기가 대문이겠지? by EW 




블로그 개설 2년만에 제대로 된 대문으로 만들어봤습니다.

이곳은 주인장이 하루하루 무미건조한 일상에서 조우하는 일들 등을 주절거리는 공간입니다.

가끔식 이해불가능한 말들이 튀어나올 때가 있을지도 모르니 유의하세요.

본 주인장은 가정형을 좋아하므로(뭣), 믿기 힘든 말이 써있으면 그냥 무시하세요


또, 본 주인장은 댓글에는 목말라하나 광고는 싫어합니다. 뭐 이건 하는 사람이 안볼테니 그냥 써봅니다.


그럼, 즐거운 시간 가지시길...


오늘은 오후부터... by 아즈마




다음주에 있을 인문계쪽 캠퍼스 축제때 동아리에서 팔 부침개 미리 만들어 보러

마에바시 갔다가......

저녁때 부터는 금기(今期) 교환 유학생들을 위한 첫 교류 파티!!!


가, 간만에 파티군요...ㅠㅠ


아예 오늘은 그쪽에서 자고 내일 바로 교회 갔다가 돌아갈 듯.


그런데.....


내일 오후까지 쌓일 밸리는 어떻게 해야 하지?!


プログラミング演習2 課題1 問題3 逆ポーランド記法リストで作る by 아즈마

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

int debug=1;

typedef struct list {
int item;
struct list *next;
} list;

list *stk;

int emptystack() { /* スタックが空かどうかの判定 */
if ( stk == NULL ) return 1;
return 0;
}

void initstack() { /* スタックを初期化 */
stk = NULL;
}

void push( int x ) { /* スタックにxを追加 */
list *p = (list *)malloc(sizeof( list)); /* C言語では malloc 領域を確保 */
p->item = x;
p->next = stk;
stk = p;
}

int pop() { /* スタックからデータを取得 */
int x;
list *next;
if(emptystack() ) {
fprintf( stderr, "#### スタックが空になっています\n");
return 0;
}
x = stk->item;
next = stk->next;
free(stk); /* 教科書と違い、実際には malloc した領域を解放 */
stk = next;
return x;
}

int top() { /* スタックからデータを取得 */
return stk->item;
}


void print_list(){
    list *i;
    i=stk;
    printf("リストの中身: ");
    for(i; i!=NULL; i=i->next){
    printf("% d", i->item);
    }
printf("\n");
}

int main(int argc, char *argv[]){
int head, next;
char *input;

if(argc<=1){
    fprintf(stderr, "#### コマンドライン引数で逆ポーランド記法を入力してください\n");
    return 1;
    }

input=argv[1];/* コマンドライン引数 */

for(head=0; head<strlen(input); head=next+1){/* コマンドライン引数の未尾に至るまで */
    next=head;
    while(input[next]!=' '&&input[next]!='\0')next++;/* 空白 or 文字列の未尾を探す */

if(isdigit(input[head])){/* 数字の場合 */
    int num;
    sscanf(&input[head], "%d", &num);/* その数字を切り出して */
    if(debug) printf("<-%d(数値)\n", num);
    push(num);/* スタックに追加 */
}
else{/* 演算子の場合 */
int num1, num2, answer;
switch(input[head]){
case '+':
    if(debug) printf("<-'+'(演算子)\n");
    num1=pop();/* スタックからデータ取得 */
    num2=pop();/* スタックからデータ取得 */
    answer=num2+num1;/* 加算して */
    push(answer);/* スタックに追加 */
    break;
case '-':
    if(debug) printf("<-'-'(演算子)\n");
    num1=pop();
    num2=pop();
    answer=num2-num1;
    push(answer);
    break;
case '*':
    if(debug) printf("<-'*'(演算子)\n");
    num1=pop();
    num2=pop();
    answer=num2*num1;
    push(answer);
    break;
case '/':
    if(debug) printf("<-'/'(演算子)\n");
    num1=pop();
    num2=pop();
    answer=num2/num1;
    push(answer);
    break;
default:
    fprintf(stderr, "#### '%c'は未知の演算子です\n", input[head]);
    }
}
    if(debug) print_list();
}
printf("答え %d\n", top());

return 0;
}

1 2 3 4 5 6 7 8 9 10 다음