# include & ltstdio.h & gt
# include & ltmath.h & gt
# include & ltctype.h & gt
# include & ltconio.h & gt
/* # 에는 "stack.c" 가 포함되어 있습니다
#include"box.c"*/
# definemaxlen1100/* 스택의 최대 길이 정의 1 */
#define MAXLEN2 100 /* 스택 2 의 최대 길이 정의 */
# 정의 NULL 0
# ok/kloc 정의-0/
# 정의 오류 0 /* 정의 오류 메시지 */
# 정의가 실행 가능하지 않음-1
# 0 오버플로우 정의 -2
# OPTRERROR -3 정의
# 시스템 오류 정의 -4
# 포인터 정의 오류 -5
# NOINPUT -6 정의
Typedef int 상태;
열거 부울 값 {FALSE, TRUE };;
구조 S 1{
Int top
Char element [maxlen1];
} /* 문자 스택 1 을 정의하는 노드 */
Typedefstruct s1* stack1;
구조물 S2{
Int top
이중 요소 [maxlen2];
} /* 스택 2 를 정의하는 노드 */
Typedef 구조 S2 * 스택 2; */
Void main ()
{
Voidsetbkgnd ();
Voidsetsur ();
Voidinit ESPN (charex [maxlen1]);
상태 표현식 (char e[MAXLEN 1], double * p); /* 함수를 평가하고 정확하거나 잘못된 정보를 반환합니다. 맞으면 p 를 사용하여 결과 */
Void printresult(int con, double result);
Char corewin(int lefttopx, int left topy);
Char yorn
이중 결과 /* 계산 결과 */
이중 * RP
Intcount =1; /* 순환체에 들어가는 횟수를 표시합니다 */
Rp =& 결과;
을 (를) 하다
Char espn[MAXLEN 1]={\n, NULL };;
상태 표현식
Yorn = NULL
If(count== 1) /* 처음 */
{
Setbkgnd ();
Setsur (); /* 초기 사진 만들기 */
}
Setbkgnd ();
Count++;+;
Init ESPN (ESPN) :
Gotoxy(3,11);
Expr=EXPRESSION(espn, RP);
Printresult(expr, result);
Yorn=corewin(3,13); /* 창 작업 프롬프트 계속 또는 종료 */
} while (연! = e & amp& amp 존. = e);
}
Void setbkgnd ()
{
Void box 1( int startx, int starty, int width, inthigh); /* 직사각형 와이어프레임 그리기 */
Int j;;
창 (1, 1, 80,25);
Textbackground (파란색);
Textcolor (흰색);
Clr SCR ();
Box 1( 1, 1, 80,24);
Gotoxy(2, 2);
Printf ("이것은 계산을 위한 프로그램입니다. \ n ");
Gotoxy(2, 3);
Printf ("다음 연산자를 사용할 수 있습니다. \ n");
Gotoxy(2, 4);
Printf ("+-*/sin cos tan ln LG arcsin arccos arctan sqrt exp \ n");
Gotoxy( 1, 5);
패치 (198);
For (j =1; J & lt79; J++)
푸치 (205);
패치 (181);
Gotoxy( 1,12);
패치 (195);
For (j =1; J & lt79; J++)
패치 (0xc4);
패치 (180);
Gotoxy( 1,14);
패치 (198);
For (j =1; J & lt79; J++)
푸치 (205);
패치 (181);
Gotoxy (215);
Printf ("%c 디렉토리:", 249);
Gotoxy (316);
Printf("% c 표현식을 올바르게 입력하면 결과에 ",250) 이 추가됩니다.
Gotoxy (317);
Printf ("접미사 기호." " );
Gotoxy (318);
Printf("%cif 잘못 입력하면 오류 메시지가 표시됩니다. "" , 250);
Gotoxy (319);
Printf("% c c c 를 눌러 계속하고 e 를 눌러 종료합니다. , 250);
고톡시 (3,20);
Printf("% c Enter 키를 눌러 선택 사항을 확인합니다. , 250);
Gotoxy (3,21);
Printf("% c Enter 키를 누르기 전에 선택 사항을 변경할 수 있습니다. , 250);
고톡시 (3, 22);
고톡시 (3,23);
}
Voidbox 1 (int startx, int starty, int width, int high)/* 직사각형 와이어프레임 그리기 */
{
Int I;;
Gotoxy(startx, starty);
패치 (0xda); /* 페인팅-| */
For (I = startx+1; 나< 폭; I++)
패치 (0xc4); /* 그림-*/
패치 (0xbf);
For (I = starty+1; 나< 높이; I++)
{
Gotoxy(startx, I); 패치 (0xb3); /* 페인팅 | */
Gotoxy (너비, I); 패치 (0xb3); /* 페인팅 | */
}
Gotoxy(startx, 높음);
패치 (0xc0); /* 페인팅 |-*/
For (I = startx+1; 나< 폭; I++)
패치 (0xc4); /* 그림-*/
패치 (0xd9); /* 페인팅-| */
}
Void setsur ()
{
Void box2(int startx, int starty, int width, int high); /* 이중 직사각형 와이어프레임 그리기 */
창 (2 1, 8,60,16);
Textbackground (밝은 회색);
Clr SCR ();
Textcolor (흰색);
박스 2 (2, 1, 39, 9);
Textcolor (블랙);
Gotoxy (10,3);
Cprintf ("표현식 동작");
Gotoxy (14,4);
Cprintf ("버전1..1");
Gotoxy (13,6);
C printf ("lkp & Zzc id _ 27 ");
Gotoxy (10,7);
C printf ("0003104 _ hit 2002.5");
창 (1, 1, 80,25);
Gotoxy(2, 6);
Getch ();
}
Voidbox 2 (int startx, int starty, int width, int high)/* 이중 직사각형 와이어프레임 그리기 */
{
Int I;;
Gotoxy(startx, starty);
패치 (201); /* 페인팅 |-*/
For (I = startx+1; 나< 폭; I++)
푸치 (205); /* 그림-*/
패치 (187);
For (I = starty+1; 나< 높이; I++)
{
Gotoxy(startx, I); 패치 (186); /* 페인팅 | */
Gotoxy (너비, I); 패치 (186); /* 페인팅 | */
}
Gotoxy(startx, 높음);
푸치 (200); /* 페인팅 | _ */
For (I = startx+1; 나< 폭; I++)
푸치 (205); /* 그림-*/
패치 (188); /* 페인팅 _ | */
}
Void init ESPN (charex [maxlen1])
{
Int I =1;
Textcolor (노란색);
Gotoxy(2, 6);
Cprintf("% c 표현식 입력: ",249); /* 표현식 입력 프롬프트 */
Gotoxy(3, 7);
하다
{
Scanf("%c ",& ampex [I]);
I++;+;
}while(ex[i- 1]! = \ n); /* 문자 배열에 표현식 저장 */
}