C언어

본문 바로가기
사이트 내 전체검색


C언어
C언어

5. 계산기 수정하기 2

페이지 정보

작성자 관리자 댓글 0건 조회 291회 작성일 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;


}




댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.