5. 계산기 수정하기 2
페이지 정보
작성자 관리자 댓글 0건 조회 1,137회 작성일 22-11-07 20:43본문
5. 계산기 수정하기 2
1. 분석
계산기 프로그램을 반복적으로 실행하면서 보완해야할 점을 생각해보자.
- 반복문을 활용하여 수식에 exit를 입력할 때까지 반복하게 수정한다.
strcmp()함수를 활용하여 문자열을 비교할 수 있다.
- 나머지연산자(%), 지수연산자(^)를 추가한다.
- 연산자와 숫자만 입력하도록 한다.
알파벳이나, 한글을 입력하면 다음 문자로 넘어간다.
- 연산자와 숫자2를 입력하지 않으면 다시입력하도록 한다.
2. 소스코딩
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char exp[100];
int i, num1, num2, tmp=0, j=0;
char op1[100], op2[100], opcode;
int result;
while(1) {
printf("수식? ");
scanf("%s",exp);
if(!strcmp(exp, "exit")) {
break;
}
tmp=0, j=0;
for(i=0; i<100; i++){
if(exp[i]=='\0' || exp[i]=='=') break;
else if(exp[i] == '+' || exp[i] == '-' || exp[i] == '*' || exp[i] == '/' ){
opcode = exp[i];
tmp ++;
op1[j] = '\0';
j=0;
}else{
if(tmp == 0){
op1[j] = exp[i];
}else{
op2[j] = exp[i];
}
j++;
}
}
op2[j] = '\0';
num1 = atoi(op1);
num2 = atoi(op2);
if(opcode == '+'){
result = num1 + num2;
} else if(opcode == '-'){
result = num1 - num2;
} else if(opcode == '*'){
result = num1 * num2;
} else if(opcode == '/'){
result = num1 / num2;
}
printf("%d %c %d = %d \n\n", num1,opcode, num2, result);
}
return 0;
}
3. 실행하기
수정한 계산기를 반복적으로 실행하면서 문제점을 찾아보자.
4. 과제
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char exp[100];
int i, num1, num2, tmp=0, j=0;
char op1[100], op2[100], opcode;
int result;
while(1) {
printf("수식? ");
scanf("%s",exp);
if(!strcmp(exp, "exit")) {
break;
}
tmp=0, j=0;
opcode = ' ';
for(i=0; i<100; i++){
if(exp[i]=='\0' || exp[i]=='=') break;
else if(exp[i] == '+' || exp[i] == '-' || exp[i] == '*' || exp[i] == '/' ){
opcode = exp[i];
tmp ++;
op1[j] = '\0';
j=0;
}else if(exp[i] == '1' || exp[i] == '2' ) {
if(tmp == 0){
op1[j] = exp[i];
}else{
op2[j] = exp[i];
}
j++;
}
}
op2[j] = '\0';
// 연산자 없을 때
if(opcode == ' ') continue;
num1 = atoi(op1);
num2 = atoi(op2);
if(opcode == '+'){
result = num1 + num2;
printf("%d %c %d = %d \n\n", num1,opcode, num2, result);
} else if(opcode == '-'){
result = num1 - num2;
printf("%d %c %d = %d \n\n", num1,opcode, num2, result);
} else if(opcode == '*'){
result = num1 * num2;
printf("%d %c %d = %d \n\n", num1,opcode, num2, result);
} else if(opcode == '/'){
result = num1 / num2;
printf("%d %c %d = %d \n\n", num1,opcode, num2, result);
} else {
printf("연산자 오류");
}
}
return 0;
}
댓글목록
등록된 댓글이 없습니다.