오류 : '3'인수에 대해 'float (*) [(((sizetype) (((ssizetype) n) + -1)) + 1)]'을 'float (*) [100]'로 변환 할 수 없습니다.

user3369563

행렬이 대칭인지 확인하는 부울 함수를 시도하고 있지만이 오류가 발생합니다.

| 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);라인 에서 오류가 발생 합니다.

Mats Petersson

컴파일러가 말하는 것은 컴파일 시간 변수가 컴파일 시간 상수가 아닌 [즉, 상수가 아닌] 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관