c++ 배열에 관하여

정제철·2023년 3월 30일
0

[포스코x코딩온]

목록 보기
8/16
post-thumbnail

c++ 배열에 관하여

배열이 중요한 점은 쓰일 곳이 정말 많기 때문에 궁금하기도 했고, 무엇보다 배우고 싶었다.
짜여진 틀이 아닌 항상 내가 만든 프로그램을 소비자나 이용자가 쓸 때를 생각해야한다.
프로그램이란 내가 만들어서 보여주는 단방향 커뮤니케이션이 아닌 이용자나 소비자가 선택했을 때 그에 맞춰 피드백해야하는 쌍방향 커뮤니케이션이라고 생각하기 때문이다.
그래서 더더욱 배열이라는 것이 중요하다고 생각했다.

왜냐하면 이용자가 입력을 줄 때 "예", "아니오" 가 아닌 다양하고 특별한 요구를 하고 표현 하기 때문이다. 그러므로 용기안에 다양한 정보와 요구를 받아서 담아야하고 그걸 활용하여 사용해야한다. 이 정보하나하나가 나에겐 가치있는 정보들이기 때문이다.

내가 정리 했을 때 배열이란 1차원과 2차원으로 나뉜다.
그리고 주어진 정보들로 배열하는 것과 입력값이 있는 정보들로 배열하는 것으로 또나뉜다.

  1. 1차원 배열
    -주어진 정보를 배열하는 것.
    -주어진 입력값으로 배열하는 것.
  2. 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가지가 된다.

동적 배열도 공부하고 정리하여 포스트해보고 싶다.

profile
성공의 반대는 실패가 아닌 도전하지 않는 것이다.

0개의 댓글