알고리즘
C++ 뒤집기 ( 2차 배열 함수 파라미터 )
Chars4785
2018. 12. 24. 17:04
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