[자료구조]후위식 수식 계산기
- 최초 등록일
- 2006.03.26
- 최종 저작일
- 2006.03
- 9페이지/ 한컴오피스
- 가격 1,000원
소개글
중위식으로 입력한 산술식을 후위식으로 변환하여 계산하는 프로그램
컴파일 실행환경
C++
본문내용
# 알고리즘
1. 중위식을 입력받아서 배열에 넣습니다.
2. 그 배열의 끝까지 루프를 돌면서 (3번~8번)
3. 배열값에 스페이스가 나올때까지를 검색하면서(4번~8번)
4. 각자리수가 따로 저장된 숫자를, 의도하려던 정수꼴로 알맞게 고치고
5. 연산자는 스택에 넣습니다.
6. 이때 스택에 넣는 연산자들은 그 크기를 비교하여 자리지정을 하고
7. 빠져나온 연산자와 newname에 있는 두개의 값들을 가지고 연산을 합니다.
8. 결과값을 출력합니다.
#3 소스 및 주석
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
char name[40]; //처음에 입력받는 식의 배열입니다.
int newname[40]; //숫자를 넣기위한 배열입니다.
char op[40]; //연산자를 넣기위한 배열입니다.
int name_pos=0,newname_pos=0,op_pos=-1; //각각의 위치를 잡기위한 변수와
//그 변수들을 초기화합니다.
char s[6]={`(`,`)`,`*`,`/`,`+`,`-`}; //연산자들의 배열입니다.
sem(char sem_x) //수식 계산을 위한 함수입니다.
if (sem_x==`+`)
{
cout<<"+";
newname[newname_pos-1]+=newname[newname_pos];
newname[newname_pos] = 0;
newname_pos--;
}
else if (sem_x==`-`)
{
cout<<"-";
newname[newname_pos-1]-=newname[newname_pos ];
newname[newname_pos] = 0;
newname_pos--;
}
else if (sem_x==`*`)
{
cout<<"*";
newname[newname_pos-1]*=newname[newname_pos];
newname[newname_pos] = 0;
newname_pos--;
}
else if (sem_x==`/`)
{
cout<<"/";
newname[newname_pos-1]/=newname[newname_pos];
newname[newname_pos] = 0;
newname_pos--;
}
참고 자료
없음