C++/입문편

3강. For 반복문의 기초 설명 및 예시를 살펴보자(2중 For문, 평균, 왜도, 첨도, 구구단)

쉽코딩 2023. 1. 22.

 

 

 

For 반복문

 

 

 

for 반복문의 기초 설명

C++에서 "for" 루프는 지정된 횟수만큼 코드 블록을 반복할 수 있게 해주는 제어 흐름 문입니다. C++에서 "for" 루프의 기본 구문은 다음과 같습니다.

for (initialization; condition; increment/decrement) {
    // code to be executed
}
  • "initialization" 문은 루프 시작 시 한 번만 실행됩니다. 루프에서 사용될 모든 변수를 초기화하는 데 사용됩니다.
  • 루프의 각 반복 전에 "condition" 문이 평가됩니다. 조건이 참이면 루프 내부의 코드가 실행됩니다. 조건이 거짓이면 루프가 종료됩니다.
  • "increment/decrement" 문은 루프가 반복될 때마다 실행됩니다. 초기화 문에서 초기화된 변수를 업데이트하는 데 사용됩니다.

 

for 반복문 활용 예시

0에서 9까지의 숫자를 출력합니다.

for (int i = 0; i < 10; i++) {
    std::cout << i << " ";
}

 

 

0에서 9까지의 짝수를 출력합니다.

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        std::cout << i << " ";
    }
}

 

 

for 반복문을 활용한 짝수 합 구하기

for 루프를 사용하여 짝수의 합을 찾으려면 숫자 범위를 반복하고 각 숫자가 짝수인지 확인할 수 있습니다. 그렇다면 누계에 추가할 수 있습니다. 다음은 1과 10 사이의 짝수의 합을 찾는 예입니다.

#include <iostream>

int main() {
    int sum = 0;
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            sum += i;
        }
    }
    std::cout << "The sum of even numbers between 1 and 10 is: " << sum << std::endl;
    return 0;
}

for 루프는 1에서 10까지의 숫자 범위를 반복하고 각 반복에서 현재 숫자가 짝수인지 확인합니다(왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 반환하는 모듈러스 연산자 % 사용). 짝수이면 합계 변수에 숫자가 추가됩니다. 마지막으로 짝수의 합이 출력됩니다.

예제의 출력은 다음과 같습니다.

The sum of even numbers between 1 and 10 is: 30

 

범위 기반 for 루프도 사용할 수 있으며 더 읽기 쉽고 오류가 적으며, 해당 예시는 아래 코드에서 확인할 수 있습니다.

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int sum = 0;
    for (int n : numbers) {
        if (n % 2 == 0) {
            sum += n;
        }
    }
    std::cout << "The sum of even numbers between 1 and 10 is: " << sum << std::endl;
    return 0;
}

 

for 반복문을 활용한 왜도(skewness), 첨도(Kurtosis) 구하기

왜도(skewness)와 첨도(Kurtosis)는 확률 분포의 모양을 측정한 것입니다. 왜도는 분포의 비대칭성을 측정하고 첨도는 분포의 정점을 측정합니다.

for 루프를 사용하여 왜도 및 첨도를 찾으려면 데이터 집합을 반복하고 평균, 표준 편차 및 왜도 및 첨도 공식에 필요한 항을 계산할 수 있습니다.

다음은 C++에서 for 루프를 사용하여 왜도 및 첨도를 찾는 방법의 예입니다.

#include <iostream>
#include <cmath>

int main() {
    std::vector<double> data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int n = data.size();
    double mean = 0, std_dev = 0, skewness = 0, kurtosis = 0;

    // Find mean
    for (int i = 0; i < n; i++) {
        mean += data[i];
    }
    mean /= n;

    // Find standard deviation
    for (int i = 0; i < n; i++) {
        std_dev += pow(data[i] - mean, 2);
    }
    std_dev = sqrt(std_dev / n);

    // Find skewness
    for (int i = 0; i < n; i++) {
        skewness += pow(data[i] - mean, 3);
    }
    skewness /= (n * pow(std_dev, 3));

    // Find kurtosis
    for (int i = 0; i < n; i++) {
        kurtosis += pow(data[i] - mean, 4);
    }
    kurtosis /= (n * pow(std_dev, 4));
    kurtosis -= 3;

    std::cout << "Skewness: " << skewness << std::endl;
    std::cout << "Kurtosis: " << kurtosis << std::endl;
    return 0;
}

for 루프는 데이터 세트를 반복하고 각 반복에서 수식을 사용하여 평균, 표준 편차, 왜도 및 첨도를 계산합니다.

왜도는 확률 분포의 평균을 중심으로 비대칭성을 측정한 것입니다. 왜도 값은 양수, 0 또는 음수일 수 있으며 각각 분포가 오른쪽으로 치우쳐 있거나 대칭이거나 왼쪽으로 치우쳐 있음을 나타냅니다.

첨도는 정규 분포에 상대적인 확률 분포의 정점 또는 평탄도를 측정한 것입니다. 첨도 값이 높으면 뾰족한 분포를 나타내고 첨도 값이 낮으면 편평한 분포를 나타냅니다.

이러한 수식은 충분히 큰 데이터 세트에 대해서만 유효하며 그렇지 않은 경우 결과가 오해의 소지가 있을 수 있다는 점에 유의해야 합니다.

또한 작업 중인 데이터 세트가 분석하려는 모집단의 대표적인 샘플인지, 결과를 왜곡할 수 있는 이상값이나 극단값이 없는지 확인하는 것도 중요합니다.

 

 

2중 for 반복문 설명(Loop 내의 Loop)

2중 "for" 루프는 C++에서 루프 내의 루프입니다. 여러 목록 또는 배열을 동시에 반복하는 데 사용됩니다. 외부 루프는 첫 번째 목록 또는 배열을 반복하는 데 사용되고 내부 루프는 두 번째 목록 또는 배열을 반복하는 데 사용됩니다. 다음은 두 배열을 반복하는 이중 "for" 루프의 예입니다.

#include <iostream>

int main() {
    int array1[] = {1, 2, 3};
    int array2[] = {4, 5, 6};

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << array1[i] << " " << array2[j] << std::endl;
        }
    }

    return 0;
}

 

외부 루프는 변수 i를 사용하여 array1을 반복하고 내부 루프는 변수 j를 사용하여 array2를 반복합니다. 위의 코드는 다음과 같이 출력됩니다.

1 4
1 5
1 6
2 4
2 5
2 6
3 4
3 5
3 6

이 예제는 두 배열의 모든 요소 조합을 인쇄합니다. 두 집합의 데카르트 곱의 예입니다. 외부 루프는 첫 번째 배열을 반복하고 내부 루프는 두 번째 배열을 반복하며 내부 루프 내부의 코드는 두 배열의 각 조합에 대해 실행됩니다.

 

 

2중 for 반복문을 이용한 평균 구하기

2중 for 루프를 사용하여 숫자 집합의 평균을 찾으려면 외부 루프를 사용하여 숫자 집합을 반복하고 내부 루프를 사용하여 숫자를 더하고 숫자 수를 추적할 수 있습니다.

다음은 배열에 저장된 숫자 집합의 평균을 찾는 예입니다.

#include <iostream>

int main() {
    int numbers[] = {1, 2, 3, 4, 5};
    int sum = 0;
    int count = 0;
    double average;

    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 1; j++) {
            sum += numbers[i];
            count++;
        }
    }

    average = (double)sum / count;
    std::cout << "The average is: " << average << std::endl;

    return 0;
}

외부 루프는 변수 i를 사용하여 숫자 배열을 반복하고 내부 루프는 변수 j를 사용하여 배열의 현재 요소를 한 번 반복합니다. 각 반복에서 현재 요소가 sum 변수에 추가되고 count 변수가 1씩 증가합니다.
루프 실행이 끝나면 합계를 숫자 개수로 나누어 평균을 계산합니다.

 

이 예제의 출력은 다음과 같습니다.

The average is: 3

 

 

2중 for 반복문을 이용한 구구단 만들기

C++에서 2중 for 루프를 사용하여 구구단을 만들 수 있습니다. 외부 루프는 테이블의 행을 반복하는 데 사용할 수 있고 내부 루프는 테이블의 열을 반복하는 데 사용할 수 있습니다. 다음은 2중 for 루프를 사용하여 구구단을 만드는 방법의 예입니다.

#include <iostream>

int main() {
    for (int i = 1; i <= 10; i++) {
        for (int j = 1; j <= 10; j++) {
            std::cout << i * j << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}

외부 루프는 변수 i를 사용하여 1에서 10까지 반복하고 내부 루프는 변수 j를 사용하여 1에서 10까지 반복합니다. 내부 루프가 반복될 때마다 i와 j의 곱이 인쇄됩니다. 외부 루프에서 행을 구분하기 위해 새 줄이 인쇄됩니다.

위 코드의 출력은 다음과 같은 구구단이 됩니다.

1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100

 

중첩된 for 루프를 추가하고 행 및 열 헤더를 인쇄할 수도 있습니다.

#include <iostream>

int main() {
    std::cout<<"   ";
    for(int i=1;i<=10;i++)
        std::cout<<i<<" ";
    std::cout<<std::endl;
    for(int i=1;i<=10;i++){
        std::cout<<i<<" |";
        for(int j=1;j<=10;j++)
            std::cout<<i*j<<" ";
        std::cout<<std::endl;
    }
    return 0;
}

 

출력은 다음과 같습니다.

   1 2 3 4 5 6 7 8 9 10
1 |1 2 3 4 5 6 7 8 9 10
2 |2 4 6 8 10 12 14 16 18 20
3 |3 6 9 12 15 18 21 24 27 30
4 |4 8 12 16 20 24 28 32 36 40
5 |5 10 15 20 25 30 35 40 45 50
6 |6 12 18 24 30 36 42 48 54 60
7 |7 14 21 28 35 42 49 56 63 70
8 |8 16 24 32 40 48 56 64 72 80
9 |9 18 27 36 45 54 63 72 81 90
10|10 20 30 40 50 60 70 80 90 100

이렇게 하면 사용자가 더 쉽게 읽을 수 있습니다.

댓글