C++

C++ 튜토리얼

Vetenir 2024. 12. 23. 22:15

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)를 지원하지 않아서 동적 메모리 할당으로 배열의 크기를 변경시킬 수 있습니다.

 

하지만 가변 길이 배열을 인터넷에서 찾아보다 저렇게 배열의 길이를 임의로 정하고

배열의 인덱스보다 많은 숫자를 넣어도 문제없이 작동이 되는 것을 알 수 있었습니다.

 

 

실행

배열의 크기보다 크지만 결과가 잘 출력되는 것을 알 수 있습니다.