Machineboy空

C++ 문법 기초다지기 예제 모음5 - 반복 본문

Computer/Coding Test

C++ 문법 기초다지기 예제 모음5 - 반복

안녕도라 2024. 10. 24. 23:39

 

어떻게 하면 컴퓨터로 하여금 동일한 일을 반복하도록 할 수 있을까?

 

구조화된 프로그램 이론에 따르면 컴퓨터 프로그램으로 문제를 해결하기 위해 세 가지 기본 제어구조를 사용할 수 있다고 하는데,

이 세 가지 제어구조는 순서(sequencing), 선택(selection), 반복(repetition)이다.

 

순서는 알맞은 순서로 한 단계에서 다음 단계로 처리하는 것을 유식하게 표현한 것이다.

선택은 조건에 따라 의사 결정하는 것을 뜻한다.

반복은 조건이 참인 동안 별도로 지정한 명령 세트를 반복시키는 것을 의미한다.


예제 28. 숫자 추가

다섯 개의 숫자를 입력 받은 다음 입력 받은 수의 합을 계산하는 프로그램을 작성하라.
#include <iostream>
#include <string>

using namespace std;
int a, sum;
int main() {
    for(int i = 0; i < 5; i++){
        cout << "Enter a number: ";
        cin >> a;
        sum += a;
    }

    cout << "The total is " + to_string(sum);
}


예제 29. 잘못된 입력 처리

복리이자를 퍼센트 단위로 받은 다음, 원리금이 총 2배가 되는데까지 걸리는 기간을 계산하는 프로그램을 작성하라.

공식
years = 72/r
r: 연이율
#include <iostream>
#include <string>

using namespace std;
int a, sum;
int main() {
    for(int i = 0; i < 5; i++){
        cout << "Enter a number: ";
        cin >> a;
        sum += a;
    }

    cout << "The total is " + to_string(sum);
}


예제 30. 곱셈표

0부터 12까지 곱셈표를 만드는 프로그램을 작성하라.
#include <iostream>
#include <string>
using namespace std;

int main() {
    for(int i = 0; i < 13; i++){
        for(int j = 0; j <13; j++){
            cout << to_string(i) + "*" + to_string(j) + "=" + to_string(i*j) + "\n";
        }
    }
}


예제 31. 카르보넨 심박수

나이와 평상시의 심박수를 입력 받은 다음 카르보넨 공식을 사용하여 최대 심박수의 55%에서 95%에 해당하는 심박수를 구하는 프로그램을 작성하라.
이때, 출력예와 같이 표 형태로 출력해야 한다.

TargetHeartRate = (((220-age)-restingHR)X intensity) + restingHR
#include <iostream>
#include <string>
using namespace std;

int age, heartrate;
int main() {
    cout << "Age: ";
    cin >> age;
    cout << "Heartrate: ";
    cin >> heartrate;

    cout << "Resting Pulse: " + to_string(heartrate) + " Age: " + to_string(age) + "\n";
    cout << "Intensity    | Rate    \n";
    cout << "-------------|---------\n";
    
    for(int i = 55; i <= 95; i+=5){
        cout << to_string(i) + "%          | " + to_string(((220-age)-heartrate)*i+heartrate) + "bpm\n" ;
    }


}


예제 32. 숫자 맞추기 게임

세 단계의 난이도로 구성된 숫자 맞추기 게임을 만들어 보자. 
첫 번째 단계에서는 1부터 10까지의 숫자를, 두 번째 단계에서는 1부터 100까지의 숫자를, 세 번째 단계에서는 1부터 1000까지의 숫자를 맞추어야 한다.

먼저 난이도를 입력 받은 후 게임을 시작한다. 컴퓨터는 범위 내에서 무작위로 숫자를 하나 선택한 후 숫자를 맞추라고 한다.
플레이어가 숫자를 입력할 때마다 컴퓨터는 맞추어야 하는 숫자와 비교하여 입력한 숫자가 더 큰지 작은지를 알려준다. 또한 컴퓨터는 맞추는 횟수를 기록하여 플레이어가 숫자를 맞추었을 때 그동안 추리한 횟수를 알려준다. 그리고는 게임을 다시 할 것인지를 묻는다.
#include <iostream>
#include <cstdlib> // rand(), srand()
#include <ctime>   // time()

using namespace std;

int stage, randomNum, tryCnt = 0, guessNum = 0;

int main() {
    // 시드 초기화
    srand(static_cast<unsigned int>(time(0)));

    cout << "원하는 단계를 입력하시오.(1~3): ";
    cin >> stage;

    switch(stage) {
        case 1:
            randomNum = rand() % 10 + 1; // 1~10
            break;

        case 2: 
            randomNum = rand() % 100 + 1; // 1~100
            break;

        case 3: 
            randomNum = rand() % 1000 + 1; // 1~1000
            break;

        default:
            cout << "비빔" << endl;
            return 1; 
    }

    while(guessNum != randomNum) {
        cout << "Guess! " << tryCnt + 1<< "번째 시도입니다." << endl;
        cin >> guessNum;
        tryCnt++;
    }

    cout << "정답입니다! " << tryCnt + 1<< "번 만에 맞혔습니다." << endl;

    return 0;
}

https://modoocode.com/304

 

씹어먹는 C++ - <17 - 3. 난수 생성(<random>)과 시간 관련 라이브러리(<chrono>) 소개>

난수를 생성하기 위해서 C 의 srand 와 rand 를 사용하지 말자. 대부분의 상황에서는 std::mt19937 로 충분히 양질의 난수를 뽑아낼 수 있다. 특히 라이브러리를 사용할 경우 원하는 확률 분포에서 샘플

modoocode.com