C언어 수식 계산기 - ceon-eo susig gyesangi

C언어를 공부하다 보면 제어문(반복문, 조건문)에서 상단한 연습이 필요한 부분이 많습니다. for문이나 if문의 경우는 워낙 다른 언어에서도의 사용빈도가 높아 익숙하지만 switch case문의 경우 C언어 이외에서는 사용빈도가 낮아 쉽게 까먹곤합니다.

 '깔끔하지 않은 코드는 의미가 없다'라는 말이 있듯이 조건문을 switch case문을 이용하여 더욱 깔끔하게 코딩할 수 있다면 당연히 switch case문을 사용하는 것이 맞다고 생각합니다. 그렇기 때문에 switch case문 또한 확실히 익혀 두는 것이 좋습니다.

 오늘은 switch case문의 기본예제인 사칙연산 계산기 만들기를 소개하려고 합니다.

C언어 수식 계산기 - ceon-eo susig gyesangi

[코드]

#include
 
int main( void ){
	int num1 = 0;
	int num2 = 0;
	int value = 0;
	char a = 0;
 
	printf( "수식을 입력하시오 : " );
	scanf( "%d %c %d", &num1, &a, &num2 );
 
	switch(a){  //char a의 값에 따라서 case를 설정
	case '+': //char a의 값이 +일경우 +연산을 한다.
		value = num1 + num2;
		printf( "%d %c %d = %d", num1, a, num2, value );
		break;
	case '-': //char a의 값이 -일경우 -연산을 한다.
		value = num1 - num2;
		printf( "%d %c %d = %d", num1, a, num2, value );
		break;
	case '*':  //char a의 값이 *일경우 *연산을 한다.
		value = num1 * num2;
		printf( "%d %c %d = %d", num1, a, num2, value );
		break;
	case '/':  //char a의 값이 /일경우 /연산을 한다.
		printf( "%d/%d = %lf", num1, num2, (double)num1/num2 );
		break;
	default:
		printf( "계산할 수 없음" );
		break;
	}
 
	return 0;
}

[결과]

C언어 수식 계산기 - ceon-eo susig gyesangi

※공감은 블로거에게 큰힘이 됩니다.

반응형

사용 방법 : 50+10+4*5+4/4과 같이 수식을 작성한 후 Enter

공백(space) x

처음에 부호 설정 불가능 ex) -5, -4, -0, +5, +0

0으로 나누는 것도 불가능

최대 길이 : 500


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
	char String[500], String_simbol[500] = "", String_num[500] = "";
	char *Position_Of_simbols[250];
	char *Position_Of_nums[251];

	unsigned flag[250];
	unsigned real_num[250];	
	unsigned cnt = 0, length;

	
	
	scanf("%s", String);
	strcat(String_num, String);
	strcat(String_simbol, String);

	while((cnt == 0) || (Position_Of_simbols[cnt - 1] != NULL)) {
		Position_Of_simbols[cnt] = (cnt == 0) ? strtok(String_simbol, "0123456789") : strtok(NULL, "0123456789");
		if(Position_Of_simbols[cnt] != NULL) {
			if(!strcmp(Position_Of_simbols[cnt], "*"))	flag[cnt] = 11;
			else if(!strcmp(Position_Of_simbols[cnt], "/")) flag[cnt] = 12;
			else if(!strcmp(Position_Of_simbols[cnt], "+")) flag[cnt] = 1;
			else if(!strcmp(Position_Of_simbols[cnt], "-"))flag[cnt] = 2;
		}
		cnt++;
	}

	length = cnt - 1;
	cnt = 0;

	while((cnt == 0) || (Position_Of_nums[cnt - 1] != NULL)) {
		Position_Of_nums[cnt] = (cnt == 0) ? strtok(String_num, "*/+-") : strtok(NULL, "*/+-");
		if(Position_Of_nums[cnt] != NULL) real_num[cnt] = atoi(Position_Of_nums[cnt]);
		cnt++;
	}
	
	
	for(int i = 0; i < length; i++) {
		if(flag[i] == 11) real_num[i] *= real_num[i+1];
		else if(flag[i] == 12)	real_num[i] /= real_num[i+1];
		else continue;

		for(unsigned cnt = i; cnt < length - 1; cnt++) {
			flag[cnt] = flag[cnt + 1];
			real_num[cnt + 1] = real_num[cnt + 2];
		}
		i--;
		length--;
	}
	
	for(int i = 0; i < length; i++) {
		if(flag[i] == 1) real_num[i] += real_num[i+1];
		else if(flag[i] == 2)	real_num[i] -= real_num[i+1];
		else continue;

		for(unsigned cnt = i; cnt < length - 1; cnt++) {
			flag[cnt] = flag[cnt + 1];
			real_num[cnt + 1] = real_num[cnt + 2];
		}
		i--;
		length--;
	}
	printf("계산 결과는 다음과 같습니다. : %d\n\n", real_num[0]);

	return 0;
}

 

반응형

공유하기

게시글 관리

구독하기잡동사니 세상

저작자표시 비영리 동일조건

  • 카카오스토리
  • 트위터
  • 페이스북

'잡담' 카테고리의 다른 글

The solution of Hanoi Tower Program (C langauge)  (0)2019.05.16사칙 연산 계산프로그램 ver 1.2  (0)2019.04.25C언어 가위 바위 보 게임 ver 1.0  (0)2019.04.23PCB도면 제작해드립니다.  (0)2019.03.16JLCPCB PCB 구매  (3)2019.03.12

c언어:산술 계산기

정보 2020. 11. 3. 22:57

728x90

반응형

SMALL

#include<stdio.h>

int main(void)
{
int x, y, result;
char op;

printf("수식을 입력하세요(예: 2+5)\n");
printf(">>");
scanf("%d %c %d", &x, &op, &y);

switch (op)
{
case '+':
result = x + y;
break;
case '-':
result = x - y;
break;
case '*':
result = x * y;
break;
case '/':
result = x / y;
break;
case '%':
result = x % y;
break;
default:
printf("지원되지 않는 연산자 입니다. \n");
}
printf("%d %c %c %d = %d\n", x, op, y, result);

return 0;
}

 

과제로 사용하실 분들 참고해주세요.

수식을 입력하면 계산하는 계산기입니다.(사칙연산)

반응형

LIST

공유하기

게시글 관리

구독하기月다방

저작자표시

'정보' 카테고리의 다른 글

c언어:정수 n을 입력받아 1부터 n까지의 합 구하는 프로그램  (6)2020.11.05c언어:1부터 10까지 숫자들의 제곱과 세제곱을 출력하는 프로그램  (0)2020.11.04c언어: 달력  (4)2020.11.03c언어:팩토리얼 값 구하기  (6)2020.11.02c언어: 구구단 계산기  (4)2020.11.02

Posted by 月食

C언어, 계산기, 비주얼스튜디오, 산술, 산술계산기, 프로그래밍