[ create a new paste ] login | about

Link: http://codepad.org/Mb4okOyv    [ raw code | fork ]

C, pasted on Jan 13:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 関数宣言 */
void tsume(int i, int cnt, int *suuji, int *enzan);

/* main関数 */
int main(int cnt, char *indata[]) {
	int i, j=0, k;
	int kotae;
	int suuji[100]={0};
	int enzan[100]={0};
	
	/* 数字と演算子を別々にスタック */
	suuji[0]=atoi(*(indata+1));
	for(i=2;i<cnt;i+=2) {
		if(strchr(*(indata+i),'x')!=0) enzan[j]=4;
		if(strchr(*(indata+i),'/')!=0) enzan[j]=3;
		if(strchr(*(indata+i),'+')!=0) enzan[j]=2;
		if(strchr(*(indata+i),'-')!=0) enzan[j]=1;
		j++;
		suuji[j]=atoi(*(indata+i+1));
	}
	
	cnt = (cnt-1)/2;
	
	/* 掛け算 */
	k=1;
	while(k!=0){
		k=0;
		for(i=0;i<cnt;i++) {
			if(enzan[i]==4) {
				suuji[i] *= suuji[i+1];
				tsume(i, cnt, suuji, enzan);
				cnt--;
				k++;
			}
		}
	}
	
	/* 割り算 */
	k=1;
	while(k!=0){
		k=0;
		for(i=0;i<cnt;i++) {
			if(enzan[i]==3) {
				suuji[i] /= suuji[i+1];
				tsume(i, cnt, suuji, enzan);
				cnt--;
				k++;
			}
		}
	}

	/* 足し算引き算を順番に */
	for(i=0;i<cnt;i++) {
		if(enzan[i]==1) suuji[0]-=suuji[i+1];
		if(enzan[i]==2) suuji[0]+=suuji[i+1];
	}
	printf("答え:%d\n",suuji[0]);
	return 0;
}

/* 掛け算と割り算してスタックを詰める */
void tsume(int i, int cnt, int *suuji, int *enzan) {
	int j;
	for(j=i+1;j<cnt;j++) {
		*(suuji+j)= *(suuji+j+1);
		*(enzan+j-1)= *(enzan+j);
	}
}


Create a new paste based on this one


Comments: