🥞 BE
home

2. 조건문

Date
2022/04/05
Category
Programming Language
Tag
C++
Detail
조건이 참이라면 어떤 문장을 실행하고, 거짓이라면 다른 문장을 실행(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++
복사