1. 비교연산자
C++에서 비교연산은 식이 참이면 1, 거짓이면 0을 반환한다
cout << (1 > 2) << endl;
cout << (1 < 2) << endl;
0
1
C++에서 0이 아닌 값은 true이고, 0은 false로 정의한다
if (15) {
cout << "A" << endl;
}
if (0) {
cout << "B" << endl;
}
A
2. 연습문제
두 정수 a, b를 입력받아 다음 조건들이 참이면 1을 거짓이면 0을 출력하는 프로그램을 작성하시오
- a가 b보다 같거나 큰가?
- a가 b보다 큰가?
- b가 a보다 같거나 큰가?
- b가 a보다 큰가?
- a와 b가 같은가?
- a와 b가 다른가?
조건식의 결과가 참이면 1, 거짓이면 0을 반환하므로, 조건식을 cout하면 된다
#include <iostream>
using namespace std;
int main() {
int a,b;
cin >> a >> b;
cout << (a >= b) << endl;
cout << (a > b) << endl;
cout << (b >= a) << endl;
cout << (b > a) << endl;
cout << (a == b) << endl;
cout << (a != b) << endl;
return 0;
}
3. and연산
C++에서 2개 이상의 조건을 동시에 만족하는지를 알고싶다면, && 기호를 사용한다.
파이썬이나 and가 먹히지 다른 언어는 &&로 써줘야함
다음은 조건1과 조건2가 모두 참이면 코드 1을 실행하는 수도 코드
if (조건1 && 조건2) {
코드1
}
당연하지만 조건 수는 2개 이상도 가능하다
다음은 조건1,2,3이 모두 참일때 코드1을 실행
if (조건1 && 조건2 && 조건3) {
코드1
}
a를 2로 나눈 나머지가 0이고, a가 10보다 크다면 special을 아니라면 normal을 출력
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
if (a % 2 == 0 && a > 10) {
cout << "special";
}
else {
cout << "normal";
}
return 0;
}
10
special
a가 2이상 10이하인지 판단하는 조건은 어떻게 작성할 수 있을까?
&&를 이용해서, "a가 2이상" && "a가 10이하"로 써줘야한다.
a가 2이상이고 10이하이다로 쓰는 것은 파이썬만 가능
c++도 17부터는 지원하는듯? 실제로 2 <= a <= 10으로 써도 에러는 안난다..
하지만 권장하지는 않는
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0893r0.html
Chaining Comparisons
The idea of chaining comparisons was first put forth in P0515R0, in section 3.3, reproduced here in its entirety. C++17 has added fold expressions, which are very useful. However, as Voutilainen and others have reported, fold expressions do not currently w
www.open-std.org
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
if (2 <= a && a <= 10) { // 2<=a<=10은 불가능
cout << "in range";
}
else {
cout << "out of range";
}
return 0;
}
4. 연습문제
3개의 정수를 입력받아 조건연산자를 이용하여 입력받은 수 중 최솟값을 출력하는 프로그램을 작성해주세요.
a가 b보다 작거나 같고, a가 c보다 작거나 같으면 a가 최솟값
아니라면, b가 a보다 작거나 같고, b가 c보다 작거나 같으면 b가 최솟값
그것도 아니라면 c가 최솟값
#include <iostream>
using namespace std;
int main() {
int a,b,c;
cin >> a >> b >> c;
if (a <= b && a <= c) {
cout << a;
} else if ( b <= a && b <= c) {
cout << b;
} else {
cout << c;
}
return 0;
}
5. or 연산
C++에서 2개 이상의 조건들 중 하나라도 만족하는지 검사하기 위해 || 기호를 사용하여 or연산을 수행한다
역시 파이썬이나 or이 가능하지, 다른 언어는 || 을 써야한다
다음은 조건1이 참이거나, 조건2가 참이면 코드 1을 수행하는 수도 코드
if ( 조건1 || 조건2 ) {
코드1
}
당연하지만, 3개 이상의 조건에서도 ||을 써서 표현가능
if ( 조건1 || 조건2 || 조건3 ) {
코드1
}
a가 10보다 작거나, 20보다 큰 수인지를 판단하는 프로그램
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
if ( a < 10 || a > 20){
cout << "yes";
} else {
cout << "no";
}
return 0;
}
6. 연습문제
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
7. 풀이
제시된 조건에 따라 프로그래밍하면 되는 문제..
위에서 배운 조건문 비교연산 총 동원
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
if (a == b && b == c) {
cout << 10000 + (1000 * a);
}
else if ((a == b && b != c) || (a == c && a != b)) {
cout << 1000 + (100 * a);
}
else if (b == c && a != b) {
cout << 1000 + (100 * b);
}
else {
if (a > b && a > c) {
cout << 100*a;
}
else if (b > a && b > c) {
cout << 100 * b;
}
else {
cout << 100 * c;
}
}
return 0;
}
'알고리즘 > C++ 기초' 카테고리의 다른 글
C++ 알고리즘 기초14 -조건문 심화- (0) | 2023.05.21 |
---|---|
C++ 알고리즘 기초13 -반복문 기초1(for, while)- (0) | 2023.05.20 |
C++ 알고리즘 기초11 -조건문 배우기2(삼항연산, if-else if-else) (0) | 2023.05.16 |
C++ 알고리즘 기초10 -조건문 배우기1(if, else)- (0) | 2023.05.15 |
C++ 알고리즘 기초9 -사칙연산 배우기- (0) | 2023.05.14 |