- 사용자로부터 5개의 숫자를 입력 받아 배열에 저장하고 이들의 합계와 평균을 계산해서 출력.
- 5개의 숫자를 입력 받는 공간은 배열을 활용.
- 합과 평균을 구하는 동작은 main함수에 한번에 작성하지 말고 각각 함수를 구현.
이걸 만들기 위해 일단 사고로 흐름을 만들어보려고 한다.
- 숫자를 받아서 저장하는 함수 A
- double변수로 cin을 받아서 배열로 저장하기
- 숫자의 합계 계산 함수 B
- 저장한 수의 배열을 이용해 다 더해주기
- 숫자의 평균 계산 함수 C
- 숫자의 합계를 배열 원소 개수로 나누기
메인
{
- 숫자 5개 입력해주세요 출력
- A함수 활성화
- B함수 활성화
- C함수 활성화
- 합계 계산 출력
- 평균 계산 출력
}
이렇게 만들면 될거같다.
그럼 한번 만들어보도록 하자
1. 숫자를 받아서 저장하는 함수
일단 함수로 void(반환x) 하는 inputnum이라는 변수를 만들었고, double arr(arr은 포인터같은애로 어디서 쓰던 그 배열 형태로 변해주는 유연함을 가진 친구다.)[]이라는는 숫자를 저장할 배열(나중에 나누기를 할 때 int로 만들면 나머지가 버려지게 되기 때문에 처음부터 double로 만들었다.), int size는 배열의 크기다.
여기서 사용된 for문은 특정 조건에 만족하면 계속 반복하는 반복문이다.
이전 언리얼에서 배웠던 while loop와 정말 흡사하다 노드를 이용해 표현하느냐, 프로그래밍 언어로 표현하냐의 차이다.
for ( 반복에 사용할 변수설정; 조건 설정;매 루프마다의 증감)
{반복할 때 마다 할 일}
↓ ↓ ↓ ↓ ↓
for (int x = 0; x < size; x++)
{cin >> arr[x]}
해석을 하자면
x의 초기값은 0으로, x가 size보다 작으면 유저가 입력한 수를 arr[x]배열에 저장하고 x변수에 +1을 더해라.
라는 뜻이라고 보시면 되겠네요
놀랍게도 한번에 성공을 했다!(사실 함수만 만든거라 여기서 막혔으면 절망했을지도.....)
그 다음에
size는 우리가 숫자를 5개 받을거니까 5로, 받은 숫자는 double형식으로 받을거니 double(배열의 타입) numbers(배열의 이름)[size](배열의 크기)로 하면 number이라는 이름의 size와 같은 크기의 double형태들이 모인 배열이 생성된다.
밑에 inputnum(numbers, size); 는 inputnum(numbers[0], 5)인데 inputnum는 함수,numbers[x]는 arr[x]와 같고. 뒤에 붙는 숫자는 총 몇개인지 범위를 정하기 때문에 완전히 풀어서 해석하자면 inputnum이라는 함수를 이용해서 numbers라는 double타입의 배열에 내가 지정한 size(5) 만큼의 숫자를 입력 받을거다! 라는 뜻입니다.
그리고 실행해보면! 안됩니다....
이런 버그가 뜨는데 코드를 눌러보면 관련된 오류들이 나옵니다. 찾아보니 메모리값을 지정해주거나 동적 메모리 할당을 해줘야되는데,size const 라는걸 앞에 붙여주면 불변의 값이 돼서 안정적인 프로그램을 사용할 수 있게된다.
이렇게 바꾸고 실행을 해주면 잘 적용이 된다!
내가 입력한 숫자들이 잘 입력됐는지 확인해보기 위해 아까 썻던 for문을 이용해서 간단하게 확인을 위한 함수를 만들어주겠다.
이렇게 밑에 적어주고 컴파일 후 실행해주면
아주 잘 나온다.(초보자라 단어 하나하나가 무슨역할을 하는지 내가 원하는 역할을 해줄수있는게 뭐가있는지를 찾아보면서 하다보니 시간이 진짜 오래걸린다...)
2 숫자 합계 계산 함수
숫자들을 다 더하는 함수를 만들었다.
다른부분은 위에랑 다 같지만 한가지 헤멧던 부분은 sum + arr[x]로 첨에 했다가 자꾸 숫자가 0이나와서 헤멧지만 생각해보니 sum이라는 숫자에 arr[x]값을 저장을 안해줬기 때문에 처음에 설정한 0이나왔던거였다 sum += arr[x]로 적어주도록 하자.
3. 숫자 평균 계산 함수
평균값 구하는건 쉬웠다. 일단 가져올 값은 배열이 아니고 구해논 sum 이라는 숫자기 때문에 double 타입의 sum, 그리고 사이즈를 들고 온 다음,
그냥 sum을 size로 나눠주면 된다.
사실 처음만들때 모든걸 5로 했다가 이 글을 적으면서 다시 둘러보니 5가 많아서 size라는 친구 하나로 묶어 정렬했다
ㅎㅎ;;
메인은 아까 썼던대로
사이즈 정하기(메모리 고정)
double타입의 numbers라는 배열 만들기[크기는 size숫자]
숫자 입력함수(numbers배열에서, size범위만큼 받기)
double타입의 sum이라는 변수 = 숫자 합계 계산 함수( numbers라는 배열에서, size만큼의 범위 합치기)
double 타입의 average라는 변수 = 숫자 평균 계산 함수(sum이라는 변수를, size만큼 나누기)
[숫자들의 총 합 : (sum변수)]라고 출력
[숫자들의 평균 : (average변수)]라고 출력
이렇게 하면 끝!!
전부 다 정리해서 보면 이렇다.
실행!!!
아주 잘된다. 너무 기쁘다
이거 3줄 띄우는데 7시간걸린건 비밀.... ㅋㅋㅋ 아무튼 이겼다!
'C++' 카테고리의 다른 글
C++[아이템을 다른 헤더파일에서 가져와서 사용하기] (0) | 2025.01.14 |
---|---|
C++[텍스트 RPG에서 상점 만들기(2. 구매, 판매)] (0) | 2025.01.13 |
C++ [텍스트 RPG에서 상점 만들기(1. 플로우차트, 상점 입장)] (0) | 2025.01.10 |
C++[클래스를 이용해 동물소리 출력] (0) | 2024.12.26 |
C++ [오름차순과 내림차순 정렬] (1) | 2024.12.24 |