배열이 중요한 점은 쓰일 곳이 정말 많기 때문에 궁금하기도 했고, 무엇보다 배우고 싶었다.
짜여진 틀이 아닌 항상 내가 만든 프로그램을 소비자나 이용자가 쓸 때를 생각해야한다.
프로그램이란 내가 만들어서 보여주는 단방향 커뮤니케이션이 아닌 이용자나 소비자가 선택했을 때 그에 맞춰 피드백해야하는 쌍방향 커뮤니케이션이라고 생각하기 때문이다.
그래서 더더욱 배열이라는 것이 중요하다고 생각했다.
왜냐하면 이용자가 입력을 줄 때 "예", "아니오" 가 아닌 다양하고 특별한 요구를 하고 표현 하기 때문이다. 그러므로 용기안에 다양한 정보와 요구를 받아서 담아야하고 그걸 활용하여 사용해야한다. 이 정보하나하나가 나에겐 가치있는 정보들이기 때문이다.
내가 정리 했을 때 배열이란 1차원과 2차원으로 나뉜다.
그리고 주어진 정보들로 배열하는 것과 입력값이 있는 정보들로 배열하는 것으로 또나뉜다.
- 1차원 배열
-주어진 정보를 배열하는 것.
-주어진 입력값으로 배열하는 것.- 2차원배열
-주어진 정보를 배열하는 것.
-주어진 입력값으로 배열하는 것.
이렇게 정리할수 있다.
그렇다면 1. 1차원 배열에서 주어진 정보로 배열하는 예를 들어보자.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string city[] = {"korea", "japan", "CH", "UK"};
//주어진 배열값
for(auto &k : city)
{
cout << k<<" ";
}
//for - each문을 통해 출력해보자
}
다음과 같이 1차원으로 배열된다.
다음으로 1차원 배열에 주어진 입력값을 출력할 경우이다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string fruit[3];
for (int i = 0; i < sizeof(fruit) / sizeof(fruit[0]); i++)
{
cin >> fruit[i];
}
for (auto& j : fruit)
{
cout<< j << " ";
}
}
배열의 입력 크기를 3으로 지정하였기에 4개를 입력받았지만 3개만 출력되는 모습이다.
다음으로 2차원 배열로 가보자
2차원 배열도 주어진 정보로 나열하여 출력하는 것이 있다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string num[2][4] = { {"a","b","c","d"},{"e","f", "g","h"} };
for (auto& arr : num)
{
for (auto& a : arr)
{
cout << a << " ";
}
cout << endl;
}
}
다음과 같이 3행 4열의 모양으로 배열을 해주었다.
마지막으로 조금은 어려웠던 입력값이 들어간 2차원 배열이었다.
나열하는 정보를 두가지로 나누어 각각 담는 형식이었고, 성적 산출 프로그램에서 유용하게 쓰일것 같았다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int score[2][3]; // ex)2명의 국영수 성적을 입력하시오.
int i, j;
for (i = 0; i < sizeof(score) / sizeof(score[i]); i++)
{
for (j = 0; j < sizeof(score) / sizeof(score[j]); j++)
{
cin >> score[i][j];
}
}
for (i = 0; i < sizeof(score) / sizeof(score[i]); i++)
{
for (j = 0; j < sizeof(score) / sizeof(score[j]); j++)
{
cout << score[i][j] << " ";
}
cout << score[i][j] << " ";
cout << endl;
}
}
각각의 입력값을 받은 2차원 배열도 이렇게 된다.
만약 국어 수학 점수를 각각 입력한다면 2차원 배열 행마다 점수가 들어가는 엑셀형식이 만들어지고 이를 이용하여 총점, 평균, 석차구하기 등 활용방안은 무궁무진해진다.
이를 exe파일로 만들 경우 성적산출에 있어 효율 높은 프로세스를 생성할 수 있을 것 같다.
프로그래밍의 매력이고 흥미를 느끼는 지점이 바로 이 부분인 것 같다.
더 나아가 동적배열에도 똑같이 1,2 차원의 개념이 있는데
이 또한 주어진 값들을 1차원으로 배열하여 출력하는 것, 입력받아진 값들을 배열하여 저장하고 출력하는 것, 2차원으로도 똑같이 2가지가 된다.
동적 배열도 공부하고 정리하여 포스트해보고 싶다.