-
21장. 실력 다지기 연습문제 03 ) 문제 5 [문자열로 입력된 연산문의 분석]IT/솔루션) 난 정말C... 없다구요 2019. 4. 17. 20:19
<2016. 9. 26. 21:00>
21장. 실력 다지기 연습문제 03 ) 문제 5 [문자열로 입력된 연산문의 분석]
/* 프로그램 사용자로부터 다음과 같은 형식의 수식을 문자열의 형태로 입력 받는다. 23+25 105-25 120*4 365/15 그리고 나서 읽어들인 문자열을 분석하여 두 개의 피연산자와 하나의 연산자 정보를 추출하여 연산을 진행하고, 연산의 결과를 출력해야 한다. 단 문제의 수준을 조금 낮추기 위해서 다음과 같은 제한사항을 두겠다. - 다음의 형태로 문자열을 읽어들일 수 있도록 수식에는 공백을 삽입하면 안 된다. scanf("%s", buf); - 연산의 종류는 사칙연산으로 제한을 한다. - 정수형 연산을 진행한다. 따라서 피연산자는 반드시 젖ㅇ수이여야 한다. - 두 개의 피연산자와 하나의 연산자로만 문장을 구성해야 한다. - 피연산자는 반드시 양의 정수이여야 한다. 수준이 좀 높은 편이다. */ #include<stdio.h> #include<stdlib.h> #pragma warning(disable : 4996) int main(void) { char buf[10]; int len = 0; int i, j; int ten = 1; int back = 0; int up = 0; int differ = '1' - 1; char what; printf("수식 입력 : "); scanf("%s", buf); while (buf[len] != '\0') len++; for (i = 0; i < len; i++) { if (buf[i]<'0' || buf[i]>'9') { for (j = i - 1; j >= 0; j--) { up = up + ((buf[j]-differ) * ten); ten *= 10; } what = buf[i] -differ; break; } } ten = 1; for (j = len-1; j > i; j--) { back = back + ((buf[j] - differ)*ten); ten *= 10; } switch (buf[i]) { case '+': printf("%d%c%d=%d\n", up, '+', back, up + back); break; case '-': printf("%d%c%d=%d\n", up, '-', back, up - back); break; case '*': printf("%d%c%d=%d\n", up, '*', back, up * back); break; case '/': printf("%d%c%d=%d\n", up, '/', back, up / back); break; } system("pause"); return 0; }
'IT > 솔루션) 난 정말C... 없다구요' 카테고리의 다른 글
22장. 포인터의 개념적인 이해) 문제 22-1 [배열이 정말 나란히 메모리 공간에 할당되는 자료인가] (0) 2019.04.17 21장. 실력 다지기 연습문제 03 ) 문제 6 [주민등록번호의 유효성 판단] (0) 2019.04.17 21장. 실력 다지기 연습문제 03 ) 문제 4 [회문 판단] (0) 2019.04.17 21장. 실력 다지기 연습문제 03 ) 문제 3 [문자열의 복사] (0) 2019.04.17 21장. 실력 다지기 연습문제 03 ) 문제 2 [2차원 배열에 저장된 값의 평균] (0) 2019.04.17