728x90
#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<windows.h> #include<ctype.h> char stack[28],input=0,giho; bool higo; int enser,i,num[10],n=0,d,ch=0; void frame() { system("cls"); int n=0; printf("┌───────────────┐\n│ "); for(n=0;n<28;n++) { printf("%c",stack[n]); } printf("│\n├───────────────┤\n"); printf("│ [+][-][×][÷] [C] │\n"); printf("└───────────────┘\n"); } void enswer() { input++; itoa(enser,&stack[input],10); } void chogi() { for(d=0;d<28;d++) { input =0; stack[d] = 0; num[n]=0; } enser=0; } void gaesan() { switch(giho) { case '+': enser = num[n-1]+num[n]; break; case '-': enser = num[n-1]-num[n]; break; case '*': enser = num[n-1]*num[n]; break; case '/': enser = num[n-1]/num[n]; break; } num[n]=enser; } void main() { while(1) { if(input>28) { input--; continue; } else{ frame(); if(ch==1) { ch=0; chogi(); } switch(stack[input] = getch()) { case '1': num[n]=num[n]*10+1; input++; break; case '2': num[n]=num[n]*10+2; input++; break; case '3': num[n]=num[n]*10+3; input++; break; case '4': num[n]=num[n]*10+4; input++; break; case '5': num[n]=num[n]*10+5; input++; break; case '6': num[n]=num[n]*10+6; input++; break; case '7': num[n]=num[n]*10+7; input++; break; case '8': num[n]=num[n]*10+8; input++; break; case '9': num[n]=num[n]*10+9; input++; break; case 8: stack[input]=0; input--; stack[input]=0; break; case '+':case '-':case '*':case '/': if(higo==true) { gaesan(); higo = false; } else { higo = true; } giho = stack[input]; n++; input++; break; case '=': gaesan(); higo = false; ch=1; enswer(); break; case 13:case 'c':case 'C': chogi(); default: break; } } } }
배열이 작아
3개 이상의 기호를 쓰면 쓰레기값이 나옵니다.
'it > programming' 카테고리의 다른 글
[ C++ ] 1에서 20까지 홀수의 합 (0) | 2012.05.28 |
---|---|
stdlib.h 헤더파일 (0) | 2012.05.09 |
C++ 아스키코드를 문자로 변환( 파일입출력 ) (0) | 2012.04.25 |