행렬이 대칭인지 확인하는 부울 함수를 시도하고 있지만이 오류가 발생합니다.
| 54 | 오류 : '3'인수에 대해 'float ( ) [(((sizetype) (((ssizetype) n) + -1)) + 1)]'을 'float ( ) [100]'로 변환 할 수 없습니다. void Transpose (int, float ( ) [100], float ( ) [100]) '|
#include <iostream>
using namespace std;
void Transpose(int n, float a[][MAX], float T[][MAX]) {
int i,j;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
T[i][j] = a[j][i];
}
}
}
bool Symmetric(int n, float a[][MAX]) {
float t[n][n];
int i,j;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
t[i][j] = 0;
}
}
Transpose(n,a,t); // <--- Error here.
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
if(t[i][j] != a[i][j]){
return false;
}
}
}
return true;
}
Transpose(n,a,t);
라인 에서 오류가 발생 합니다.
컴파일러가 말하는 것은 컴파일 시간 변수가 컴파일 시간 상수가 아닌 [즉, 상수가 아닌] float t[n][n]
where 배열이 n
컴파일 시간 상수 float T[][MAX]
일 때 일치하지 않는다는 것 MAX
입니다.
float t[n][MAX]
임시 매트릭스 에 사용 하는 것이 아마도 잘 작동 할 것입니다 . 그러나 C 및 C ++는 "가변 크기 배열"(특히 한 함수에서 다른 함수로 전달할 때)을 잘 처리하지 않으며 C ++에서는 다른 방법을 사용하는 것이 좋습니다. 매트릭스를 설명하십시오. 예를 들면 :
std::vector<vector<float>> t;
그런 다음 벡터의 크기를 정의하기 위해 추가 작업을 수행해야합니다. 예를 들면 다음과 같습니다.
t.resize(n);
for(i = 0; i < n; i++){
t[i].resize(n);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다