금융 경제 보험 정보
C++ 기초공부 5. Array 배열, 자료구조 본문
이번 글에서는 C++의 또 다른 기본 자료구조 중 하나인 Array에 대해 정리해보려 한다. 항상 그랬던 것 처럼 문법을 정리하기 전에 기본개념부터 먼저 이해를 해보자.
Array는 자료의 구조 형태중 하나이다. 즉 '자료를 어떻게 저장을 해야하는가'에 대한 하나의 방법이라고 생각할 수 있다.
그럼 Array 는 언제 사용해야 할까? 먼저 Array를 사용하지 않는 경우를 보자
#include <iostream>
int main(){
int score1 = 90;
int score2 = 100;
int score3 = 80;
int score4 = 60;
int score5 = 70;
int score6 = 50;
int total = score1 + score2 + score3 + score4 + score5 + score6;
std :: cout << " total: " << total << std::endl;
return 0;
}
6명의 학생의 점수를 기록한 코드가 있다. 그리고 점수의 총합을 보여주는 간단한 프로그램 코드이다. 이렇게 코드를 짜고 실행을 하면 그 결과 값은 아래처럼 잘 나온ㄷ.
학생이 6명일 경우 코드를 이렇게 짜면 된다. 그런데 한 반의 학생이 30명이라면? 그리고 한반이 아니라 한 학교의 학생이 300명이라면? 이런식으로 코드를 짜면 코드가 끝도 없이 길어진다. 이럴 경우 Array라는 자료구조를 활용할 수 있다.
#include <iostream>
int main(){
int ScoreArray[6] ={90, 100, 80, 60, 70, 50};
int total = ScoreArray[0] + ScoreArray[1] + ScoreArray[2] + ScoreArray[3]+ ScoreArray[4] + ScoreArray[5];
std :: cout << " total: " << total << std::endl;
return 0;
}
이렇게 코드를 짜도 똑같은 결과값을 얻을 수 있는 것이다.
여기서 코드를 조금 살펴보면
int ScoreArray[6] ={90, 100, 80, 60, 70, 50};
이 라인이 결국 Array를 이용하는 것인데, int는 정수라는 타입의 변수 타입을 이용한다는 것이다. Array는 정수이 외에도 float 를 이용할 수도 있고 string 을 이용할 수도 있다. 그리고 []는 인덱스를 말한다. 변수의 공간이 몇개를 사용할 것인가에 대한 코드로 [6]은 총 6개의 공간을 사용한다는 것이다 참고로 변수 번호는 0부터 시작하기 때문에 6개의 공간의 변수명(요소명)은 각각 [0], [1], [2], [3], [4], [5] 이다. 그러니 변수를 선언할 때 ScoreArray[6] 는 변수의 공간 개수(요소의 갯수)를 의미하며, [0], [1], [2], [3], [4], [5] 는 각 변수의 공간 이름을 의미한다.
그리고 {90, 100, 80, 60, 70, 50} 는 각 공간에 들어가는 변수의 할당 값, 즉 인수의 값을 의미한다.
그럼 여기서 코드를 조금 더 발전시켜서 교사들 직접 학생들의점수를 입력 하는 형태로 코드를 변경하려면
#include <iostream>
int main(){
int ScoreArray[6];
std::cin >> ScoreArray[0];
std::cin >> ScoreArray[1];
std::cin >> ScoreArray[2];
std::cin >> ScoreArray[3];
std::cin >> ScoreArray[4];
std::cin >> ScoreArray[5];
int total = ScoreArray[0] + ScoreArray[1] + ScoreArray[2] + ScoreArray[3]+ ScoreArray[4] + ScoreArray[5];
std :: cout << " total: " << total << std::endl;
return 0;
}
이렇게 각 배열 요소에 들어갈 인수를 cin을 이용하여 유저(교사)가 직접 입력하도록 할 수 있는 것이다
그런데 여기서도 역시 유저에게 각 요소에 들어갈 인수를 받기 위해 코드를 하나하나 쓰고 있다. 똑같이 학생이 30명, 300명 많아지면 코드가 또 너무 길어진다. 이럴때 For를 사용할 수 있다.
#include <iostream>
int main(){
int ScoreArray[6];
for (int i =0; i<6; ++i){
std::cout <<"enter the score for each student" << i << std::endl;
std::cin >> ScoreArray[i];
}
int total = ScoreArray[0] + ScoreArray[1] + ScoreArray[2] + ScoreArray[3]+ ScoreArray[4] + ScoreArray[5];
std :: cout << " total: " << total << std::endl;
return 0;
}
이렇게 코드를 짤 수 있다 코드를 살펴보면
for (int i =0; i<6; ++i){
for를 통해서 반복문 루프를 실행해준다. 즉 연속되는 회차를 계속 반복해서 진행한다는 것이다. 첫 시작의 i가 0에서 시작하는 이유는 인덱스 요소명이 '0'부터 시작하기 때문이다. 인덱스 요소 0부터 인덱스 5까지 회차를 돌기 때문에 int i =0; i<6; 이렇게 되고, 1씩 더해가기 때문에 ++i) 이렇게 진행된다.
유저에게 각 회차마다 인수를 입력받기 위한 코드로
std::cin >> ScoreArray[i]; 이렇게 사용할 수 있다.
결과 값을 보면
그런데 코들 보면 여전히 total을 구하는 과정은 매번 반복하고 있는 것을 보인다. 그래서 학생이 또 300명이면 Total을 위해 ScoreArray[0] + ScoreArray[1].... + ScoreArray[300] 까지 해줘야 한다... 그럴 수는 없지 않은가. 그래서 토탈 역시 위의 For문의 회차가 도는 것에 넣을 수 있다.
#include <iostream>
int main(){
int ScoreArray[6];
int total =0;
for (int i =0; i<6; ++i){
std::cout <<"enter the score for each student" << i << std::endl;
std::cin >> ScoreArray[i];
total += ScoreArray[i];
}
std :: cout << " total: " << total << std::endl;
return 0;
}
이 코드를 보면 int total =0; 이 라인을 통해서 total 이라는 변수를 선언 해준다. 바로 int 라는 정수 타입이고 토탈이라는 변수명에다가 0이라는 인수를 할당했다. 맨 처음에 0을 할당함으로서 추후에 어떤 인수가 더해지던 정확한 값이 나오는 것이다
그리고 for문 내에서 total += ScoreArray[i]; 를 통해서 ScoreArray[i]; 속의 요소들을 계속 합쳐나가는 것이다. 이후 디버깅을 해보면 코드가 For 문 안에서 계속 6회차 도는 것을 알 수 있다.
** 참고 및 공부했던 유튜브 영상