C++ 알고리즘 기초9 -사칙연산 배우기-

1. 사칙연산

 

C++에서 사용되는 사칙연산 덧셈, 뺄셈, 곱셈, 나눗셈은 각각 +,-,*,/으로 구할 수 있다.

 

#include <iostream>
using namespace std;

int main() {
    
    int a = 9, b = 4;

    cout << "덧셈 : "<< a + b << endl;

    cout << "뺄셈 : " << a - b << endl;

    cout << "곱셈 : " << a * b << endl;

    cout << "나눗셈 : " << a/b;
    
    return 0;
}
덧셈 : 13
뺄셈 : 5
곱셈 : 36
나눗셈 : 2

 

나눗셈 연산의 경우 몫과 나머지가 중요한데, 몫은 / 으로 구하고 나머지는 % 로 구한다.

 

나눗셈 연산은 자바랑 동일하다고 보면 된다.

 

a / b로 연산을 진행할때, 나누어 떨어지지 않는다면 위와 같이 9를 4로 나눈 정수인 몫 2가 나온다.

 

만약 실수로 정확히 나눗셈 결과를 얻고 싶다면 정수 a나 b중 하나를 (double)로 타입 변환을 해줘야한다.

 

#include <iostream>
using namespace std;

int main() {
    
    int a = 9, b = 4;

    cout << "나눗셈 : " << (double)a/b << endl;

    cout << "몫 : " << a/b << endl;

    cout << "나머지 : " << a%b;

    return 0;
}

나눗셈 : 2.25
몫 : 2
나머지 : 1

 

2. 실수형과 정수형 연산

 

사칙연산 계산시에 type이 더 큰 범위를 따라가게 된다.

 

1과 3.5의 합은.. 4.5가 나온다는 소리

 

#include <iostream>
using namespace std;

int main() {
    
    int a = 1;

    double b = 3.5;

    cout << a+b;

    return 0;
}
4.5

 

나눗셈 연산도 마찬가지로, 둘중 하나가 실수이면 / 연산 결과는 몫이 아니라 나눗셈 결과가 나온다

 

#include <iostream>
using namespace std;

int main() {
    
    double a = 10.0;
    int b = 4;

    cout << a/b;

    return 0;
}
2.5

 

C++에서는 4.0이나 5.0을 출력할때 실수지만 4랑 5로 출력하는듯?

 

5.0으로 출력하고 싶다면, cout << fixed; cout.precision(1);을 이

 

#include <iostream>
using namespace std;

int main() {

	double a = 3 / 3;
	int b = 4;
	cout << a + b;

    cout << endl;

    cout << fixed;
    cout.precision(1);
    cout << a+b;

	return 0;

}
5
5.0

 

3. 단축연산자

 

다른 언어와 마찬가지로 단축연산자 제공함

 

a = a + 5;는 a+=5;

 

a = a - 5;는 a-= 5;

 

a = a * 5; 는 a*= 5;

 

a = a % 5; 는 a %= 5;

 

a = a / 5; 는 a/=5;

 

직사각형의 가로와 세로의 길이를 정수형 값으로 입력받은 후 가로의 길이는 8 증가시키고 세로의 길이는 3배하여 저장한 후 가로의 길이, 세로의 길이, 넓이를 차례로 출력하는 프로그램을 작성해주세요.

 

#include <iostream>
using namespace std;

int main() {

    int a,b;

    cin >> a >> b;

    a += 8;
    b *= 3;

    cout << a << endl << b << endl << a*b;
    
    return 0;
}

 

4. 우선순위

 

당연히 사칙연산에 우선순위가 존재하기 때문에, 괄호를 적절히 사용해서 의도하는 결과가 나오도록 해야함

 

#include <iostream>
using namespace std;

int main() {
    
    int a = 9, b = 4;

    cout << (double)((a+b)/2) << endl;
    cout << (double)(a+b/2);

    return 0;
}
6
11

 

세 개의 정수를 입력받아서 합계와 평균을 출력하는 프로그램을 작성해주세요.

(단, 평균은 소수 이하를 버립니다.)

 

#include <iostream>
using namespace std;

int main() {
    
    int a,b,c;

    cin >> a >> b >> c;

    cout << a+b+c << endl << (a+b+c)/3;

    return 0;
}
10 20 7
37
12

 

5. 연습문제

 

1008번: A/B (acmicpc.net)

 

1008번: A/B

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

6. 풀이

 

기본적으로 C++이 실수를 소수점 6째자리까지만 출력하는데..

 

실제 정답과 출력의 오차가 $10^{-9}$ 이하가 되어야 정답이라고 나와있어서

 

소수점 9째자리 이상을 출력해줘야한다.

 

그래야 실제 정답과 출력 차이가 $10^{-9}$이하가 될 수 있기 때문에

 

파이썬과는 다른 맛이네;; 이런 생각 안해봤는데

 

#include <iostream>
using namespace std;

int main() {

	int a, b;

	cin >> a >> b;

	cout << fixed;
	cout.precision(9);

	cout << (double)a / b;
	return 0;

}

 

파이썬과는 다른 맛이네;;

TAGS.

Comments