오늘은 짝수의 합을 풀었다.
#include <iostream>
using namespace std;
int solution(int n)
{
int answer = 0; // 아무 것도 더하지 않은 상태, 합은 0부터 시작
for (int i = 2; i <= n; i += 2)
{
answer += i; // 현재까지 더한 합에 i를 더함
}
return answer;
}
int main()
{
int n;
cout << "정수를 입력하세요: ";
cin >> n;
int result = solution(n);
cout << n << " 이하의 짝수 합: " << result << endl;
return 0;
}
2, 4, 6, ... n
2부터 시작해서 입력한 정수 n까지 2씩 증가하고 더하기
강의는 어제까지 재밌었다가 오늘 어려워졌다...
조건문이 true이면 코드 실행
if (조건식)
{
code;
}
if 가 참이 아니면 else 의 코드 실행
→ else 에는 조건문 필요 없음
Yes or No
if (조건)
{
// 조건이 참일 때 실행할 코드
}
else
{
// 조건이 거짓일 때 실행할 코드
}
조건이 여러 개일 때, 순서대로 검사해서 맞는 조건에 해당하는 코드만 실행
else if 여러 개 가능
else 는 필수 ❌
if (조건1)
{
// 조건1이 참일 때 실행
}
else if (조건2)
{
// 조건1은 거짓이고 조건2가 참일 때 실행
}
lse if (조건3)
{
// 조건1, 조건2 모두 거짓이고 조건3이 참일 때 실행
}
else
{
// 위 조건들 모두 거짓일 때 실행
}
조건1 검사 → 참 → 실행 끝
↓
거짓
↓
조건2 검사 → 참 → 실행 끝
↓
거짓
↓
조건3 검사 → 참 → 실행 끝
↓
거짓
↓
else 실행
각 조건들은 서로 겹치지 않고 분리됨
상위 조건이 하위 조건에 포함되지 않음 (비포함성)
if (score >= 90)
{
// 90 이상
}
else if (score >= 80)
{
// 80 이상 90 미만 (겹치지 않음)
}
else if (score >= 70)
{
// 70 이상 80 미만 (겹치지 않음)
}
else
{
// 나머지
}
에러 → 예외 처리
else if 의 if 문에 " Division by zero is not allowed."else Invalid operator.#include <iostream>
using namespace std;
int main()
{
char op;
double num1, num2;
cout << "Enter first number: ";
cin >> num1;
cout << "Enter an operator (+, -, *, /): ";
cin >> op;
cout << "Enter second number: ";
cin >> num2;
if (op == '+')
{
cout << "Result: " << num1 + num2 << endl;
}
else if (op == '-')
{
cout << "Result: " << num1 - num2 << endl;
}
else if (op == '*')
{
cout << "Result: " << num1 * num2 << endl;
}
else if (op == '/')
{
if (num2 == 0)
{ // 나누기 0
cout << "Division by zero is not allowed." << endl;
}
else
{
cout << "Result: " << num1 / num2 << endl;
}
}
else
{
cout << "Invalid operator." << endl; // 연산자 입력 오류
}
return 0;
}
A&&B → A와 B 모두 true
A || B → A와 B 둘 중 하나라도 참이면 참
if (x > 0 && y > 0)
{
// x와 y가 모두 양수일 때 실행
}
if (x == 0 || y == 0)
{
// x 또는 y 중 하나라도 0이면 실행
}
// 조건: 맑은 날씨(sunny)이고 온도가 20도 이상일 때 외출
if (weather == "sunny" && temperature >= 20)
{
cout << "It's a nice day to go out!\n";
}
// 조건: 비가 오거나 너무 추운 날씨
else if (weather == "rainy" || temperature < 10)
{
cout << "Better stay indoors.\n";
}
// 나머지 경우
else
{
cout << "You can go out, but dress appropriately.\n";
}
동일한 작업을 효율적으로 처리 가능
반복의 범위가 명확하게 주어지는 상황
초기값부터 시작해서 조건 확인하고 반복이 끝날 때마다 증감 처리
for( 초기화; 종료조건; 사후동작 )
{
반복할 코드
}
for(int i = 0; i < 5; i++)
{
sum += i;
}
📌 초기화, 종료조건, 사후동작 안 채워도 ; ; 두 개는 꼭 있어야 한다
for (;;)
{
// 무한 반복 (초기화, 종료조건, 사후동작 모두 생략)
}
| 부분 | 의미 | 비워두면? |
|---|---|---|
| 초기화 | 반복 시작 전 실행 | 생략 가능 (이미 변수 선언됨) |
| 종료조건 | 반복 계속할지 조건 검사 | 생략 시 무한 반복 |
| 사후동작 | 반복 후 실행 (증가 등) | 생략 시 반복 중 변경 직접 수행 |
*로 직각삼각형 만들기
이해가 안돼서 그리면서 풀었다..
#include <iostream>
using namespace std;
int main() // 함수 시작
{
int n = 5; // n = 줄 번호
for (int i = 1; i <= n; i++) // n 사용 위해 i
{
for (int j = 1; j <= n - i; j++) // 공백 출력
{
cout << " ";
}
for (int j = 1; j <= i; j++) // * 출력
{
cout << "*";
}
cout << endl; // 개행
}
return 0; //함수 종료
}
/*
*
**
***
****
*****
*/
안에 있는 for문들은 각각 독립적이므로 j 똑같이 써도 됨
반복 횟수가 불확실하거나 조건이 참일 때까지 계속 반복
조건을 먼저 검사하고 참이면 반복
while (반복할 조건)
{
// 반복할 코드
}
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(0)); // 랜덤 시드 초기화
int secretNumber = rand() % 100 + 1; // 1부터 100 사이의 랜덤 숫자
int guess;
cout << "Guess the number (1 to 100): ";
cin >> guess; // 초기 동작: 첫 번째 추측 입력 받기
while (guess != secretNumber)
{ // 종료 조건: 추측이 정답과 다를 경우 반복
if (guess < secretNumber)
{
cout << "Too low! Try again: ";
}
else
{ // 그 외: guess > secretNumber
cout << "Too high! Try again: ";
}
cin >> guess; // 사후 동작: 새로운 추측 입력 받기
}
cout << "Congratulations! You guessed the number!" << endl; // while문 조건이 false -> guess == secreatNumber
return 0;
}
srand()
랜덤 숫자 생성할 때 시작점(seed)를 설정하는 함수
시드를 설정하지 않으면 rand()가 항상 같은 숫자들은 반복해서 만듦
srand(time(0)) 현재 시간을 시드로 넣어서 매번 다른 숫자가 나오도록 함
rand()
설정된 시드를 기반으로 랜덤 숫자를 만듦
호출될 때마다 다음 랜덤 숫자를 리턴함
% 100
100으로 나누면 결과는 0 ~ 99
int secretNumber = rand() % 100 + 1;
+1 해서 secreatNumber 범위를 1 ~ 100으로 정함
정답이 아닐 때 (guess != secretNumber) → while문 계속 반복
정답일 때 (guess == secretNumber) → while문 조건 거짓, 반복 종료 → 축하 메시지 출력