C++ 튜토리얼
C언어 공부는 해봤지만 C++은 처음이라
차이점을 알아보는 것에 중점을 두고 공부해봤습니다.
목표
1. 5개의 숫자를 입력 받아 배열에 저장하고 합과 평균을 계산해서 출력.
2. 위의 코드를 수정해서 배열의 크기도 지정할 수 있게 수정.
3. 합과 평균을 구하는 기능은 각각의 함수로 구현.
위의 목표를 하나씩 달성해보겠습니다.
1. 5개의 숫자를 입력 받아 배열에 저장하고 합과 평균을 계산해서 출력.
#include <iostream>
using namespace std;
int main()
{
int arr[5];
int sum = 0;
int avg = 0;
cout << "숫자 5개를 입력하시오." << endl;
for (int i = 0; i < 5; i++)
{
cin >> arr[i];
sum = sum + arr[i];
}
avg = sum / 5;
cout << "합 : " << sum << endl;
cout << "평균 : " << avg << endl;
return 0;
}
알게 된 것
int sum, avg = 0;
처음에는 이렇게 초기화를 하려고 했으나
사진처럼 초기화가 안되어서 각각 초기화를 해줬습니다.
C언어에서는 되었던 것 같은데 올바른 방법은 아니었던 것 같습니다.
입력에는 스페이스바로 숫자를 구분하는 것과 엔터로 구분하는 것이 같습니다.
그리고 확실히 C언어의 printf("");보다는 C++의 cout << ""이 편한 것 같습니다.
2. 위의 코드를 수정해서 배열의 크기도 지정할 수 있게 수정.
3. 합과 평균을 구하는 기능은 각각의 함수로 구현.
#include <iostream>
using namespace std;
int sumsum(int arr[], int size)
{
int sum = 0;
for (int i = 0; i < size; i++)
{
sum = sum + arr[i];
}
return sum;
}
int avgavg(int sum, int size)
{
int avg = 0;
avg = sum / size;
return avg;
}
int main()
{
int arr[5];
int size, sum, avg = 0;
cout << "입력을 원하는 숫자의 개수 : ";
cin >> size;
cout << "숫자" << size <<"개를 입력하시오." << endl;
for (int i = 0; i < size; i++)
{
cin >> arr[i];
}
sum = sumsum(arr, size);
avg = avgavg(sum, size);
cout << "합 : " << sum << endl;
cout << "평균 : " << avg << endl;
return 0;
}
2번과 3번 목표는 같이 달성해보았습니다.
int size, sum, avg = 0;
그런데 이번에 이렇게 초기화 했을 때는 오류없이 잘 되어서
정확한 이유를 알게되면 블로그에 글을 올리겠습니다.
코드 리뷰
합과 평균이 함수로 잘 나뉘어졌지만 한 가지 걸리는 것이 있다면
int arr[5];
C언어는 배열의 크기를 따로 변경할 수 있는 가변 길이 배열(VLA)이 있는데 ex) int arr[size];
C++는 가변 길이 배열(VLA)를 지원하지 않아서 동적 메모리 할당으로 배열의 크기를 변경시킬 수 있습니다.
하지만 가변 길이 배열을 인터넷에서 찾아보다 저렇게 배열의 길이를 임의로 정하고
배열의 인덱스보다 많은 숫자를 넣어도 문제없이 작동이 되는 것을 알 수 있었습니다.
실행