-1
2D 배열에서 최대 값과 최소값을 찾고 해당 위치를 교환하기로 한 경우, 서신이 2x2 배열의 1234 인 경우 4231이어야합니다 . 는 여기에 내가했던 일이야 : 내가 이전 및 새 배열을 인쇄하는 다른 기능을 사용2D 배열의 최대 및 최소 멤버 인덱스 교환 방법
void interchange (int a[][n],int m) {
int i,j;
int cmin,cmax,rmin,rmax,temp;
int max=a[0][0],min=a[0][0];
for(i = 0; i < m; i++) {
for(j = 0; j < n; j++) {
if (a[i][j]<min) {
rmin=i;
cmin=j;
min=a[i][j];
} else if (a[i][j]>max) {
rmax=i;
cmax=j;
max=a[i][j];
}
temp=a[cmin][rmin];
a[cmin][rmin]=a[cmax][rmax];
a[cmax][rmax]=temp;
}
}
}
하지만 항상 이전을 인쇄, 나는 그것을 무슨 일이 있었는지 확인하기 위해 교환 함수 내에서 인쇄하려고 할 때 0을 출력합니다.
if..if else 문 부분
는, 나는이 방법이 더 효과적 일 것이라고 생각 :if (a[i][j]<min) {
rmin = i;
cmin = j;
min = a[rmin][cmin];
}
...하지만 여전히 같은 문제가 있습니다. 전체 코드 :
#include<iostream.h>
const int n = 2;
const int m = 2;
void read(int a [][n], int m);
void write(int a [][n], int m);
void interchange(int a [][n], int m);
main(){
int a[n][m];
read(a, m);
write(a, m);
interchange(a, m);
write(a, m);
return 0;
}
void read(int a [][n], int m){
int i, j;
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
cin >> a[i][j];
}
void write(int a [][n], int m){
int i, j;
for (i = 0; i < m; i++){
for (j = 0; j < n; j++)
cout << a[i][j] << "\t";
cout << endl;
}
}
void interchange(int a [][n], int m){
int i, j;
int cmin, cmax, rmin, rmax, temp;
int max = a[0][0], min = a[0][0];
for (i = 0; i < m; i++){
for (j = 0; j < n; j++)
if (a[i][j] < min){
rmin = i;
cmin = j;
min = a[rmin][cmin];
}
else if (a[i][j] > max){
rmax = i;
cmax = j;
max = a[rmax][cmax];
}
temp = a[cmin][rmin];
a[cmin][rmin] = a[cmax][rmax];
a[cmax][rmax] = temp;
}
}
로 초기화합니다. – haccks
인쇄 기능도 함께 표시해야합니다. 함수의 끝에서 배열이 어떻게 보이는지 디버거를 사용 했습니까? –
내 질문에 자세한 코드를 추가했습니다. –