티스토리 뷰
반복문(loop)
: 특정한 부분의 코드가 반복적으로 수행될 수 있도록 하는 구문
(1) while : 조건을 먼저 확인
(2) for : 조건을 먼저 확인
(3) do - while : 조건을 나중에 확인
while
while (루프 반복 조건)
while(1) : break 될 때 까지 무한 반복 된다.
1. while 반복문 : 반복이 몇 번 인지 모를때
while (condition); << 여기서 while 문 종료
{
}
2. 카운트 제어 while 반복문
int main(){
int counter = 0; // 반복문에 진입하기 전에 숫자를 세기 위한 카운트 변수 초기화
while (counter < 10) { // 반복을 몇 번 해야하는지 알고 있을 때
cout << counter + 1
<< " : dlwlrma " << endl;
counter++;
}
}
3. 이벤트 제어 while 반복문 (특정 이벤트가 발생하면 반복문 종료)
- (1) sentinel controlled while (감시값)
#include <iostream>
using namespace std;
int main() {
int n = 0;
int sum = 0;
cout << "정수를 입력하세요 (종료하려면 -1 입력): "; // 먼저 -1 입력받고
cin >> n;
while (n != -1) { // -1이 입력되면 종료한다.
while (n >= 0) // "정수를 입력하세요 (종료하려면 음수 입력)"
sum = sum + n;
cout << "정수를 입력하세요 (종료하려면 -1 입력): ";
cin >> n;
}
cout << "합 = " << sum << endl;
}
- (2) EOF controlled while
#include <iostream>
using namespace std;
int main() {
int n = 0;
int sum = 0;
cout << "첫 번째 정수를 입력하세요 (종료하려면 음수 입력): ";
while (cin >> n) { //cin은 여기서 입력받으니까 다른 곳에는 작성하지 않는다. ^Z입력받으면 종료!
sum = sum + n;
cout << "정수를 입력하세요 (종료하려면 음수 입력): ";
}
cout << "합 = " << sum << endl;
}
- (3) flag controlled while
flag >> 0 : 정상 , 1 : 비정상
#include <iostream>
using namespace std;
int main() {
int num;
bool flag = true; // 초기값은 true로 설정
while (num < 0 && flag) {
cout << "입력하세요: ";
cin >> num;
if (num % 2 == 1) {
flag = false; // false가 되면 while 문을 나간다.
}
}
}
: flag가 true 일 때 (짝수) while문을 계속, false일 때 (홀수)while문 탈출
while (1) : 무한 루프
for문
for ( 초기화 ; 루프 반복 조건 ; 카운터 증가)
for (unsigned int a = 1 ; a <= 10 ; a++){
sum = sum + a;
}
밖에서 a 변수 사용 불가능
조건 표현식이 생략되면 조건이 참인 것으로 간주 = 무한루프
다 사용가능!
for (int i = 0 ; i < 5 ; i++)
int i ;
for (i = 0; i < 5 ; i++)
int i = 0;
for ( ; i <5 ; i++)
int i =0;
for ( ; ; )
if(i == 10){
break;
++i;
}
복리계산식
amount = principal * pow (1.0 + rate, year)
7의 배수 출력하기
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int lower = 1;
int higher = 300;
int divisor = 7;
int col = 1;
for (int i = lower; i < higher; i++) { // 300번 도는 프로그램
if (i % divisor == 0) { //7로 나눈게 0이라면
cout << setw(4) << i; //출력한다.
col++; // 칸수 변수인 col이라는 애를 1개씩 증가시킨다.
if (col > 10) { // col이 10개가 넘는다면
cout << endl; // 줄바꿈!한후 다시 1로 초기화 한다.
col = 1;
}
}
}
}
이중 for문
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int num1;
int num2;
cout << "행의 수를 입력하세요: ";
cin >> num1;
cout << "열의 수를 입력하세요: ";
cin >> num2;
for (int i = 1; i <= num1; i++) {
for (int j = i; j <= (i + num2 - 1); j++) {
cout << j << " ";
}
cout << endl;
}
}
do - while
본문을 일단 실행하고 조건을 확인
조건과 관계없이 반복문의 본문이 적어도 한 번은 실행된다.
마지막에 반드시 세미콜론이 있어야한다.
예제 1) 월, 일을 입력해서 달력만들기
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int startday, daysinmonth, col = 1;
do {
cout << "한 달의 날짜 수를 입력하세요(28, 29, 30, 31): ";
cin >> daysinmonth;
} while (daysinmonth < 28 || daysinmonth > 31); // 28에서 31의 수만 입력받기
do {
cout << "첫 날의 요일을 입력하세요(0~6): ";
cin >> startday;
} while (startday < 0 || startday > 6); // 0에서 6의 수만 입력받기
cout << endl;
cout << "Sun Mon Tue Wed Thr Fri Sat" << endl;
cout << "--- --- --- --- --- --- ---" << endl;
for (int space = 0; space < startday; space++) {
// 첫 날 까지 공백으로 처리하기
//공백을 col이라고 하는데 공백하나당 col++
cout << " ";
col++;
}
for (int day = 1; day <= daysinmonth; day++) {
cout << setw(3) << day << " ";
col++;
// 총 날짜 까지 공백3칸을 두고 공백하나당 col++
if (col > 7) {
cout << endl;
col = 1;
//줄바꿈
}
}
}
예제2) 가장 왼쪽의 숫자 출력 (몇자리든 상관없이)
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int num;
short left;
cout << "음수가 아닌 정수를 입력하세요: ";
cin >> num;
do {
left = num % 10;
num = num / 10;
} while (num > 0);
cout << "가장 왼쪽의 숫자 = " << left << endl;;
}
조건문(선택구조)
if
: 조건이 참이라면 어떤 문장을 실행하고, 거짓이라면 다른문장을 실행
흔한오류
1) 할당연산자 사용
x = 0 (절대 안됨)
x == 0 (이거닷)
2) {}생략 // 한 줄만 가능
3) 불필요한 세미콜론
(2) if- else
(3) Nested if
삼항연산자
(조건, 표현식1, 표현식2)
const int larger = ( num1 >= num2 ? num1 : num2)
switch
: 정수형으로 표현이 가능한 특정 값을 기반으로 조건 분기
switch (표현식 : 정수로 평가될 수 있는) {
case 1:
case 2:
case 3:
case 4:
default:
}
위에서부터 비교하는거 아님. 바로 찾아간다.
break가 없으면 끝까지 실행된다.
break가 있으면 딱 그것만 실행
default는 else와 같은 기능
break, continue
showpoint : 끝에 0 표시
'학교복습용 > 객체1' 카테고리의 다른 글
| (4) 클래스 ( CLASS ) (0) | 2023.01.04 |
|---|---|
| (3) 함수(function) (0) | 2022.12.29 |
| 참고블로그 (0) | 2022.12.23 |
| 예제에서 배울 점 (0) | 2022.12.21 |
| (1) 입출력연산자 (0) | 2022.12.21 |
