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 |