본 프로그램은 GUI 기반으로 실행되는 자바 스택 계산기이며, 아래의 조건을 만족하고 있습니다.---------------------------------------------------------------------------------------------개발하는 계산기 프로그램은 다음과 같은 기능들을 제공할 수 있어야 한다.- 사칙연산, 나머지연산, 비트 연산(AND,OR,NOT,XOR)- 다수의 연산자와 피연산자로 구성된 계산식을 처리할 수 있엉 하며, 해당 계산식을처리할 때 연산자 우선순위에 따라 계산을 수행해야 한다.(괄호포함)-계산기의 외형은 JAVA의스윙이나 AWT를 이용하여 구현하여야 하며 계산식은 키보드로부터 입력받을 수 있어야 한다.-계산기프로그램에서 입력된 계산식의 연산시 Stack을 사용해야 한다.-계산기 프로그램의 부동 소수점 연산은 JAVA에서 제공하는 배정밀도에 따른다.------------------------------------------------------------------------------------------------정확하게 위에 쓰여진 조건들만 만족하며, 개발기간이 짧아 계산 과정에서 미처 예외처리가 안된 부분이 있을 수 있습니다.솔루션을 요청하신 분께서 제시한 조건(추가옵션)은 상당히 많고 복잡하여 개발기간이 상당히 요구되므로 부득이하게 기본기능만 만족시키도록 작성하였습니다.이클립스 프로젝트를 통째로 압축하였으며, 이클립스에서 불러오시려면, 압축을 풀어서 나오는 폴더명을 포함한 경로를 workspace의 경로로 지정해주시면 손쉽게 프로젝트를 확인/빌드하실수 있습니다.(File > Switch Workspace 사용)Calc/src -> 소스파일 2개가 위치함. 직접 프로젝트를 만들고 추가하여 빌드하여도 무방.Calc/bin-> 컴파일된 바이너리 파일이 위치. 명령창에서 직접 실행해볼 수도 있음.기본적으로 UI버튼이 제공되며, 입력창에 직접 키보드를 통한 입력도 가능합니다.덧셈뺄셈 및 곱셉 나눗셈, 나머지셈 과 비트연산(AND,OR,NOT,XOR)과 괄호 연산 모두를 지원합니다.비트 연산과 나머지 연산의 경우, 정수 연산만 지원합니다.정수 범위는 50자가 아닌, 자바 컴파일러가 기본적으로 지원하는 int형의 기본범위까지만 지원됩니다.(구현시간 부족)이 계산기의 핵심 원리는 자료구조 중 스택을 사용하는 것입니다.시간이 넉넉히 있었다면 다 구현해보고 싶은 생각이 있는데 다소 아쉽네요. 자바 공부하시는 분들은 도움 되시기 바랍니다.
#include #include #define N 8 // 노드의 수#define M 9999 // 무한대(MAXIMUM)의 의미int matrix[N][N] = { // 입력 데이터{ 0, 2,-1,-1,-1, 3,-1,-1},{ 2, 0, 1, 4,-1,-1,-1,-1},{-1, 1, 0,-1, 3,-1,-1,-1},{-1, 4,-1, 0, 3,-1, 2,-1},{-1,-1, 3, 3, 0,-1,-1, 4},{ 3,-1,-1,-1,-1, 0, 6,-1},{-1,-1,-1, 2,-1, 6, 0, 4},{-1,-1,-1,-1, 4,-1, 4, 0}};int main(){char temp[16]; // 그냥 시작 노드를 입력받기 위한 키보드 입력용 버퍼int start, cur; // 각각 시작 노드 번호, 현재 처리중인 노드 번호를 저장할 변수int i,j; // 반복문(for)을 돌리기 위한 변수int min; // 현재 처리중인 최소값을 저장하기 위한 변수int cost[N]; // (시작점에서) 각 노드로의 비용을 저장하기 위한 배열변수int solution[N]; // 확정이 된 (계산이 끝난) 노드인지 표시하는 기능// 우선 입력된 데이터중 -1을 처리하기 편하도록 충분히 큰 정수로 변환한다.for(i=0 ; i