◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
# 배열을 인자로 사용하는 함수의 특성에 대해서 알아보자.
1. 배열의 값을 모두 넘기는 것은 불가능하다. -> 값은 하나만 주고받을 수 있다.
2. 때문에 배열을 함수에 넘길때는 값대신에 주소를 넘긴다.
3. 배열은 언제나 배열의 크기와 같이 넘겨야 한다.
4. 문자열은 널문자로 끝을 구분하므로 배열의 크기는 몰라도 상관없다.
1. 배열의 값을 모두 넘기는 것은 불가능하다. -> 값은 하나만 주고받을 수 있다.
2. 때문에 배열을 함수에 넘길때는 값대신에 주소를 넘긴다.
3. 배열은 언제나 배열의 크기와 같이 넘겨야 한다.
4. 문자열은 널문자로 끝을 구분하므로 배열의 크기는 몰라도 상관없다.
// 배열을 인자로 사용하는 함수의 특성에 대해서 설명한다. // 1. 배열의 값을 모두 넘기는 것은 불가능하다. -> 값은 하나만 주고받을 수 있다. // 2. 때문에 배열을 함수에 넘길때는 값대신에 주소를 넘긴다. // 3. 배열은 언제나 배열의 크기와 같이 넘겨야 한다. // 4. 문자열은 널문자로 끝을 구분하므로 배열의 크기는 몰라도 상관없다. #include5. 일반변수는 함수에 값을 넘기므로 함수에서 값을 바꿔도 원본에는 영향을 주지 않는다.#include using namespace std; int Max(int ary[],int counts ) { int max=ary[0]; // *(ary+0) for(int i=1; i < counts; i++) { if(ary[i] > max) max=ary[i]; } return max; } int Min(int ary[],int counts ) { int min=ary[0]; for(int i=1; i < counts; i++) { if(ary[i] < min) min=ary[i]; } return min; } void main() { int randnum[10]; int counts=sizeof(randnum)/sizeof(int); srand((unsigned)time(0)); for(int i=0;i < counts;i++) { randnum[i] = rand() % 100 + 1; cout << randnum[i] << " "; } cout << endl; cout << "최대값 : " << Max(randnum, counts) << endl; cout << "최소값 : " << Min(randnum, counts) << endl; }
6. 배열은 함수에 주소를 넘기므로 함수에서 값을 바꾸면 원본까지 같이 바뀐다.
// 일반변수는 함수에 값을 넘기므로 함수에서 값을 바꿔도 원본에는 영향을 주지 않는다. // 배열은 함수에 주소를 넘기므로 함수에서 값을 바꾸면 원본까지 같이 바뀐다. #include# 연습문제 : 배열을 인자로 받아 스왑하는 함수를 만들어보자.using namespace std; void ChangeValue( int v ); void ChangeArray( int num[], int counts ); void main() { int v = 1; ChangeValue(v); cout << "v의 값은 : " << v << endl; int num[] = {1,2,3,4,5,6,7,8,9}; int counts = sizeof(num)/sizeof(int); ChangeArray(num, counts); for(int i=0; i < counts; i++) { cout << "num[" << i << "] = " << num[i] << endl; } } void ChangeValue( int v ) { v = 101; } void ChangeArray( int num[], int counts ) { for(int i=0; i < counts; i++) { num[i] += 100; } }
#include# 종합 연습문제using namespace std; void ShowArray(int ary[], int counts) { for(int i=0; i < counts; i++) { cout << "Array[" << i << "] = " << ary[i] << endl; } } void ReverseArray( int ary[], int counts ) { int last = counts-1; for(int i=0; i < counts/2; i++) { int temp = ary[i]; ary[i] = ary[last-i]; ary[counts-1-i] = temp; } } void main() { int num[] = {1,2,3,4,5,6,7,8,9}; int counts = sizeof(num)/sizeof(int); ShowArray(num, counts); // 배열을 역순으로 재정렬한다. ReverseArray(num, counts); cout << "------------" << endl; ShowArray(num, counts); } /* >>실행결과 Array[0] = 1 Array[1] = 2 Array[2] = 3 Array[3] = 4 Array[4] = 5 Array[5] = 6 Array[6] = 7 Array[7] = 8 Array[8] = 9 ------------ Array[0] = 9 Array[1] = 8 Array[2] = 7 Array[3] = 6 Array[4] = 5 Array[5] = 4 Array[6] = 3 Array[7] = 2 Array[8] = 1 */
// 1. randnum에 1~100사이의 값을 랜덤하게 입력한 후 10개씩 화면에 출력하시오. // 2. 배열을 입력받아 '최대값', '최소값', '짝수의합', '홀수의합', '총합', '평균'을 구하는 함수들을 만드시오. // 3. randnum배열을 위에서 만든 함수에 대입한 후 그 결과값을 출력하시오. // 4. 배열을 입력받아 소수를 (10개씩) 출력하는 함수를 만들고 randnum배열을 대입하시오. #include#include using namespace std; int Max(int ary[],int counts ) { int max = ary[0]; for(int i=1;i < counts;i++) { if(ary[i] > max) max=ary[i]; } return max; } int Min(int ary[],int counts ) { int min = ary[0]; for(int i=1;i < counts;i++) { if(ary[i] < min) min=ary[i]; } return min; } int ArraySumEven( int num[], int counts ) { int sum = 0; for(int i=0; i < counts; i++) { if(num[i]%2 == 0) sum += num[i]; } return sum; } int ArraySumOdd( int num[], int counts ) { int sum = 0; for(int i=0; i < counts; i++) { if(num[i]%2 == 1) sum += num[i]; } return sum; } int ArraySum( int num[], int counts ) { int sum = 0; for(int i=0; i < counts; i++) { sum += num[i]; } return sum; } int ArrayAverage( int num[], int counts ) { int sum = ArraySum(num, counts); int average = sum / counts; return average; } bool IsPrime( int num ) { if( num < 2 ) return false; for(int i=2;i < num;i++) { if(num%i==0) return false; } return true; } void ShowArrayPrime( int num[], int counts ) { int cnt = 0; for(int i=0;i < counts;i++) { if(IsPrime(num[i])) { cout.width(3); cout << num[i] << " "; cnt++; if(cnt!=0 && cnt%10==0) cout << endl; } } cout << endl; } void main() { int randnum[100]; int counts=sizeof(randnum)/sizeof(randnum[0]); // 배열에 1~100사이의 수를 랜덤하게 삽입. // 화면에 배열의 값을 모두 출력. srand((unsigned)time(NULL)); for(int i=0;i < counts;i++) { if(i!=0 && i%10==0) cout << endl; randnum[i] = rand() % 100 + 1; cout.width(3); cout << randnum[i] << " "; } cout << endl << endl; cout << "배열의 최대값은 " << Max(randnum, counts) << endl; cout << "배열의 최소값은 " << Min(randnum, counts) << endl; cout << "배열의 짝수의 합은 " << ArraySumEven(randnum, counts) << endl; cout << "배열의 홀수의 합은 " << ArraySumOdd(randnum, counts) << endl; cout << "배열의 총합은 " << ArraySum(randnum, counts) << endl; cout << "배열의 평균은 " << ArrayAverage(randnum, counts) << endl; cout << endl << "[ 배열중 소수만 출력 ]" << endl; ShowArrayPrime(randnum, counts); cout << endl; }