답변 주셔서 진심으로 감사드립니다.
아직 초보라 모르는게 많은데 스택에 대해 공부하고, 다시 프로그램을 짜보려고 하고 있습니다.
strcpy(buf , " ");
이 위에 소스에서 " " <-- 사이에 문자를 입력받아서 계산을 하려고 만들어 보았는데
이 사이에 입력을 받기 위해선 어떠한 함수가 필요하나요? 임의적으로 숫자와 연산자를 넣으면 계산이 되는데
입력을 받을려고 하니까 도저히 모르겠습니다.
가르쳐주시면 감사하겠습니다.
송신영 님이 쓰신 글 :
: 일반적인 수식을 계산하기 위해서는
: 프로그래밍으로 계산하기 편한 방식으로 수식을 변경해야합니다.
: 아래 작성하신 코드는 그냥 단순한 단일 계산만 가능하구요
: 이런 구조로는 복잡한 수식을 계산하는 코딩을 할 수 없습니다.
: 계산기를 만들기 위해서는 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;
: :
: : }