일반적인 수식을 계산하기 위해서는
프로그래밍으로 계산하기 편한 방식으로 수식을 변경해야합니다.
아래 작성하신 코드는 그냥 단순한 단일 계산만 가능하구요
이런 구조로는 복잡한 수식을 계산하는 코딩을 할 수 없습니다.
계산기를 만들기 위해서는 infix, prefix, postfix 에 대한 선행 학습이 필요합니다.
제가 인터넷 검색으로 그냥 대충 찾은 싸이트 공유합니다.
해당 키워드로 검색하여 공부를 좀 해야 계산기 다운 계산기를 만드실 수 있습니다.
참조 : http://blog.naver.com/ryutuna?Redirect=Log&logNo=100122313091
서덕만 님이 쓰신 글 :
: 안녕하세요 질문 있어서 글 올립니다
:
: 이제 막 Visual C++을 이용해서 프로그램을 좀 만들어보려고 하는 사람인데요
:
: 계산기를 만들고 있는데 아래와 같은 소스를 만들었습니다.
:
: 똑같은 코드가 자꾸 반복 되는데 For문을 이용해서 이걸 반복 할 수 있나요?
:
: 아래 보시면 연산자 기호를 입력을 받는데 소스를 한번만 써도 반복해서 입력 받을 수 있는 방법이 있을까요?
:
: 조언 좀 부탁 드리겠습니다.
:
:
: #include "stdafx.h"
:
:
: int main(int)
:
: {
:
: float a[100] = {0};
: char b, c, d, e, f, g;
:
: printf("수식을 입력하세요 : ");
: scanf("%f%c%f", &a[0], &b, &a[1]);
:
: switch ( b )
: {
: case '+':
: a[2] = a[0] + a[1];
: break;
: case '-':
: a[2] = a[0] - a[1];
: break;
: case '*':
: a[2] = a[0] * a[1];
: break;
: case '/':
: a[2] = a[0] / a[1];
: break;
: }
:
: scanf("%c", &c);
:
: switch ( c )
: {
: case '=':
: printf("%f", a[2]);
: case '+':
: scanf("%f", &a[3]);
: a[4] = a[2] + a[3];
: break;
: case '-':
: scanf("%f", &a[3]);
: a[4] = a[2] - a[3];
: break;
: case '*':
: scanf("%f", &a[3]);
: a[4] = a[2] * a[3];
: break;
: case '/':
: scanf("%f", &a[3]);
: a[4] = a[2] / a[3];
: break;
: }
:
: scanf("%c", &d);
:
: switch ( d )
: {
: case '=':
: printf("%f", a[4]);
: case '+':
: scanf("%f", &a[5]);
: a[6] = a[4] + a[5];
: break;
: case '-':
: scanf("%f", &a[5]);
: a[6] = a[4] - a[5];
: break;
: case '*':
: scanf("%f", &a[5]);
: a[6] = a[4] * a[5];
: break;
: case '/':
: scanf("%f", &a[5]);
: a[6] = a[4] / a[5];
: break;
: }
:
: scanf("%c", &e);
:
: switch ( e )
: {
: case '=':
: printf("%f", a[6]);
: case '+':
: scanf("%f", &a[7]);
: a[8] = a[6] + a[7];
: break;
: case '-':
: scanf("%f", &a[7]);
: a[8] = a[6] - a[7];
: break;
: case '*':
: scanf("%f", &a[7]);
: a[8] = a[6] * a[7];
: break;
: case '/':
: scanf("%f", &a[7]);
: a[8] = a[6] / a[7];
: break;
: }
:
: scanf("%c", &f);
:
: switch ( f )
: {
: case '=':
: printf("%f", a[8]);
: case '+':
: scanf("%f", &a[9]);
: a[10] = a[8] + a[9];
: break;
: case '-':
: scanf("%f", &a[9]);
: a[10] = a[8] - a[9];
: break;
: case '*':
: scanf("%f", &a[9]);
: a[10] = a[8] * a[9];
: break;
: case '/':
: scanf("%f", &a[9]);
: a[10] = a[8] / a[9];
: break;
: }
:
: scanf("%c", &g);
:
: switch ( g )
: {
: case '=':
: printf("%f", a[10]);
: return 0;
: case '+':
: scanf("%f", &a[11]);
: a[12] = a[10] + a[11];
: break;
: case '-':
: scanf("%f", &a[11]);
: a[12] = a[10] - a[11];
: break;
: case '*':
: scanf("%f", &a[11]);
: a[12] = a[10] * a[11];
: break;
: case '/':
: scanf("%f", &a[11]);
: a[12] = a[10] / a[11];
: break;
: }
:
: printf("%f\n", a[12]);
:
: return 0;
:
: }
|