조건이 참이라면 어떤 문장을 실행하고, 거짓이라면 다른 문장을 실행(or 아무것도 안함)하는 동작을 조건 분기라고 함.
조건 분기는 참, 거짓 값을 도출하는 표현식을 사용함.
•
관계 표현식과 일치 표현식
관계 표현식 : <, >, <=, >=
일치 표현식 : ==, !=
관계 표현식이 일치 표현식 보다 우선순위 높음
•
절대값 구하기
#include <iostream>
using namespace std;
int main() {
// 선언
int number;
// 입력
cout << "Enter an integer:";
cin >> number;
// 절대값 조건
if (number < 0) {
number = -number;
}
// 절대값 출력
cout << "Absolute value of the number you entered is:" << number;
return 0;
}
C++
복사
• 초과 근무 시간이 있는 급여 계산
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
// 선언
double hours;
double rate;
double regularPay;
double overPay;
double totalPay;
// 입력
cout << "Enter hours worked:";
cin >> hours;
cout << "Enter the pay rate:";
cin >> rate;
// 계산
regularPay = hours * rate;
overPay = 0.0;
// 40시간 이상 초과근무 조건
if (hours > 40.0) {
overPay = (hours - 40.0) * rate * 0.30;
}
totalPay = regularPay + overPay;
// 출력
cout << fixed << showpoint;
cout << "Regular pay = " << setprecision (2) << regularPay << endl;
cout << "Over time pay = " << setprecision (2) << overPay << endl;
cout << "Total pay = " << setprecision (2) << totalPay << endl;
return 0;
}
C++
복사
•
양방향 조건 분기
if-else
성적을 기반으로 합불 확인하는 프로그램.
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int score;
// 입력
cout << "0~100사이 점수: ";
cin >> score;
// 조건문
if (score >= 70) {
cout << "합격점" << endl;
}
else {
cout << "불합격" << endl;
}
return 0;
}
C++
복사
•
윤년 확인하기
not 표현식 활용
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int year;
bool divBy400, divBy4, divBy100;
bool leapYear;
// 입력
cout << "년도 입력: ";
cin >> year;
// 변수값 지정
divBy400 = ((year % 400) == 0);
divBy4 = ((year % 4) == 0);
divBy100 = ((year % 100) == 0);
leapYear = (divBy400) || (divBy4 && !(divBy100));
// 조건문
if (leapYear) {
cout << year << " 년은 윤년입니다." << endl;
}
else {
cout << year << " 년은 윤년이 아닙니다." << endl;
}
return 0;
}
C++
복사
•
주어진 날짜의 요일 출력
switch 구문
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int day;
// 입력
cout << "0~6사이 숫자 입력: ";
cin >> day;
// switch 조건문
switch (day) {
case 0: cout << "Sunday" << endl;
cout << "First day of the week " << endl;
break;
case 1: cout << "Monday" << endl;
break;
case 2: cout << "Tuesday" << endl;
break;
case 3: cout << "Wednesday" << endl;
break;
case 4: cout << "Thursday" << endl;
break;
case 5: cout << "Friday" << endl;
break;
case 6: cout << "Saturday" << endl;
cout << "Last day of the week" << endl;
break;
}
return 0;
}
C++
복사
•
점수 기반 학점 출력
case를 지정하지 않으면 default 값이 출력됨.
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int score;
char grade;
// 입력
cout << "Enter a score between 0 and 100: ";
cin >> score;
// switch 조건문
switch (score / 10) {
case 10: grade = 'A';
break;
case 9: grade = 'A';
break;
case 8: grade = 'B';
break;
case 7: grade = 'C';
break;
case 6: grade = 'D';
break;
default: grade = 'F';
}
// 출력
cout << "Score: " << score << endl;
cout << "Grade: " << grade << endl;
return 0;
}
C++
복사
•
학점 기반 pass/fail 출력
case 분기에서 실행해야 하는 작업이 같다면 분기를 결합해서 활용 가능.
#include<iostream>
using namespace std;
int main() {
// 변수 선언
char grade;
// 입력
cout << "(A, B, C, D, F)중 성적 입력: ";
cin >> grade;
// switch 조건문
switch (grade) {
case 'A':
case 'B':
case 'C': cout << "합격";
break;
case 'D':
case 'F': cout << "불합격";
break;
default: cout << "error";
}
return 0;
}
C++
복사
•
조건부 표현식
조건 ? 표현식1 : 표현식2
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int num1, num2;
int larger;
// 입력
cout << "첫 번째 숫자 입력: ";
cin >> num1;
cout << "두 번째 숫자 입력: ";
cin >> num2;
// 조건부 표현식
larger = num1 >= num2 ? num1 : num2;
//출력
cout << larger << "이(가) 더 큽니다.";
return 0;
}
C++
복사
•
점수 입력을 기반으로 학생의 성적 찾기
3개의 점수를 입력받고 이 중 최대, 최소 점수를 찾음.
이 둘의 평균을 구한 뒤 이를 학생의 점수로 설정.
#include<iostream>
using namespace std;
int main() {
// 선언
int score1, score2, score3, maxscore, minscore, score;
// 입력
cout << "점수 입력 (1): ";
cin >> score1;
cout << "점수 입력 (2): ";
cin >> score2;
cout << "점수 입력 (3): ";
cin >> score3;
// 처리
// maxscore
if (score1 > score2 && score1 > score3) {
maxscore = score1;
}
else if (score2 > score1 && score2 > score3) {
maxscore = score2;
}
else {
maxscore = score3;
}
// minscore
if (score1 < score2 && score1 < score3) {
minscore = score1;
}
else if (score2 < score1 && score2 < score3) {
minscore = score2;
}
else {
minscore = score3;
}
// 학생 찾기
int temp = maxscore + minscore;
if (temp % 2 == 1) { // 평균이 정수로 나오게
temp += 1;
}
score = temp / 2;
// 출력
cout << "모든 점수: " << score1 << " " << score2 << " " << score3 << endl;
cout << "최대값은 " << maxscore << endl;
cout << "최소값은 " << minscore << endl;
cout << "학생의 점수는 " << score;
return 0;
}
C++
복사
•
소득 범위에 따른 세금 구하기
수입의 범위에 따라 다른 세율의 소득세가 적용됨. 이를 활용한 코드.
#include<iostream>
using namespace std;
int main() {
// 선언
double income, tax;
bool bracket1, bracket2, bracket3, bracket4;
double limit1 = 1000.00, limit2 = 50000.00, limit3 = 100000.00;
double rate1 = 0.05, rate2 = 0.10, rate3 = 0.15, rate4 = 0.20;
// 입력
cout << "수입 작성: ";
cin >> income;
// 과세등급 정의
bracket1 = (income >= 0) && (income <= limit1);
bracket2 = (income > limit1) && (income <= limit2);
bracket3 = (income > limit2) && (income <= limit3);
bracket4 = (income > limit3);
// 처리
if (bracket1) {
tax = income * rate1;
}
else if (bracket2) {
tax = limit1 * rate1 + (income - limit1) * rate2;
}
else if (bracket3) {
tax = limit1 * rate1 + (limit2 - limit1) * rate2 + (income - limit2) * rate3;
}
else if (bracket4) {
tax = limit1 * rate1 + (limit2 - limit1) * rate2 + (limit3 - limit2) * rate3 + (income - limit3) * rate4;
}
else {
cout << "에러! 다시 입력하세요.";
return 0; // 출력시 tax 메모리 초기화 오류 예방
}
// 출력
cout << "수입: " << income << endl;
cout << "소득세: " << tax;
return 0;
}
C++
복사
•
날 수 구하기
1월 1일 기준으로 그 해의 해당 월까지 남은 날 수를 구하는 프로그램.
#include<iostream>
using namespace std;
int main() {
// 선언
int month, day;
int totaldays = 0;
// 입력
cout << "월 입력: ";
cin >> month;
cout << "일 입력: ";
cin >> day;
// 월별 일수 지정
int m01 = 31;
int m02 = 28;
int m03 = 31;
int m04 = 30;
int m05 = 31;
int m06 = 30;
int m07 = 31;
int m08 = 31;
int m09 = 30;
int m10 = 31;
int m11 = 30;
// 해당 월까지의 날짜수 구하는 분기문
switch (month) {
case 12: totaldays += m11;
case 11: totaldays += m10;
case 10: totaldays += m09;
case 9: totaldays += m08;
case 8: totaldays += m07;
case 7: totaldays += m06;
case 6: totaldays += m05;
case 5: totaldays += m04;
case 4: totaldays += m03;
case 3: totaldays += m02;
case 2: totaldays += m01;
case 1: totaldays += 0;
}
totaldays += day;
// 출력
cout << "일 수: " << totaldays;
return 0;
}
C++
복사
•
숫자 관련 정보 출력
숫자의 개수를 지정 후 입력받은 숫자가 짝수인지 홀수인지 구분.
이후 짝수와 홀수 각각 개수, 합, 평균을 구한 후 전체의 합과 평균까지 구해보는 프로그램.
#include <iostream>
using namespace std;
int main() {
int n, in = 0, sum = 0, even = 0, odd = 0, es = 0, os = 0;
float ea, oa = 0, avg = 0;
int i = 0;
cout << "숫자 개수: ";
cin >> n;
while (i < n) {
cin >> in;
if (in <= 0) {
cout << "다음 숫자 입력: " << endl;
continue;
}
if (in % 2 == 0) {
even += 1;
es += in;
i += 1;
}
else {
odd += 1;
os += in;
i += 1;
}
}
ea = es / even;
oa = os / odd;
sum = es + os;
avg = (ea + oa) / 2;
cout << "짝수의 개수: " << even << endl << "홀수의 개수: " << odd << endl;
cout << "짝수 합: " << es << endl << "홀수 합: " << os << endl;
cout << "짝수 평균:" << ea << endl << "홀수 평균:" << es << endl;
cout << "전체 합:" << sum << endl << "전체 평균:" << avg << endl;
return 0;
}
C++
복사