본문 바로가기
알고리즘

C++ 뒤집기 ( 2차 배열 함수 파라미터 )

by Chars4785 2018. 12. 24.

0은 1로 뒤집기

1은 1로 뒤집기


입력 1이면 1행 전부, 1열 전부 

입력 3이면 

1행 전부 1열 전부 ( 0은 1로 1은 0으로 )

2행 전부 2열 전부 ( 0은 1로 1은 0으로 )

3행 전부 3행 전부 ( 0은 1로 1은 0으로 )


입력


1


출력


1 1 1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0


입력


3


출력


1 0 0 1 1 1 1 1 1 1

0 1 0 1 1 1 1 1 1 1

0 0 1 1 1 1 1 1 1 1

1 1 1 0 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0 0


#include <iostream>


using namespace std;

void Overturn (int (*array)[10],int col,int row);

int main() {
int array[10][10]={0,};

int count;
cin>>count;


for(int i=0;i<count;i++)
{
for(int j=0;j<10;j++)
Overturn(array,i,j);

for(int j=0;j<10;j++)
Overturn(array,j,i);
Overturn(array,i,i);
}




for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
cout<<array[i][j]<<" ";
cout<<endl;
}


return 0;
}

void Overturn(int (*array)[10],int col, int row) //2차 배열 넘기는 거 조심 하기
{
if(array[col][row]==0)
array[col][row]=1;
else
array[col][row]=0;
}



2차 배열 넘길때 


3가지 방법이 있다. 



1. 인자가 2차원 배열인 경우

int array[10][10];
void passFunc(int a[][10])
{
    // ...
}
passFunc(array);

2. 인자가 배열을 포함하는 포인터인 경우

int *array[10];
for(int i = 0; i < 10; i++)
    array[i] = new int[10];
void passFunc(int *a[10]) //Array containing pointers
{
    // ...
}
passFunc(array);

3. 인자가 포인터를 가리키는 포인터인 경우

int **array;
array = new int *[10];
for(int i = 0; i <10; i++)
    array[i] = new int[10];
void passFunc(int **a)
{
    // ...
}
passFunc(array);



참고:https://hashcode.co.kr/questions/764/2%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4%EC%9D%84-%ED%95%A8%EC%88%98%EB%A1%9C-%EC%A0%84%EB%8B%AC%ED%95%A0-%EC%88%98%EA%B0%80-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4

'알고리즘' 카테고리의 다른 글

C++ 선택 정렬  (0) 2018.12.27
C++ 재귀  (0) 2018.12.24
C++ 카드게임  (0) 2018.12.20
C++ 두번째로 작은 수 찾기  (0) 2018.12.20
C++ 소수 뽑기  (0) 2018.12.20

댓글