Problema con Matrice 3D

di il
5 risposte

Problema con Matrice 3D

Salve a tutti, sto avendo un problema con questo metodo:
int Metodo (int k, int n, double W){
	int A [k][n][n];
	int Min, Max;
	int j,i;
	bool b;
	
	for (i=0, j=0; i<n && j<n ; i++, j++){ //Media valore Min e Max della "diagonale principale"
		if (Min < A[][i][j]) Min = A[][i][j]; //if (Min < A[i][j]) Min = A[i][j];
		if (Max > A[][i][j]) Max = A[][i][j]; //if (Max > A[i][j]) Max = A[i][j];
	}
	int Media = (Max+Min)/2;
	cout<<"La media della Matrice 3D e': " << Media << endl;
	if (W == Media || W < Media) {
	b = true; cout<<b;
	} else b = false; cout<<b;
}
mi da l'errore [Error] expected primary-expression before ']' token, e se tolgo le parentesi [] mi da l'errore [Error] ISO C++ forbids comparison between pointer and integer [-fpermissive] e [Error] invalid conversion from 'int*' to 'int' [-fpermissive].

Ho provato anche a fare:
int Metodo (int k, int n, double W){
	int A [k][n][n];
	int Min, Max;
	int j,i;
	bool b;
	
	for (i=0, j=0; i<n && j<n ; i++, j++){ //Media valore Min e Max della "diagonale principale"
		if (Min < A[k][i][j]) Min = A[k][i][j];
		if (Max > A[k][i][j]) Max = A[k][i][j];
	}
	int Media = (Max+Min)/2;
	cout<<"La media della Matrice 3D e': " << Media << endl;
	if (W == Media || W < Media) {
	b = true; cout<<b;
	} else b = false; cout<<b;
}
Ma poi la media non risulta corretta (stampa sempre il valore: 16381) e non mi stampa nè il valore True nè il valore False.
Perfavore aiutatemi..

5 Risposte

  • Re: Problema con Matrice 3D

    In
    A[][i][j]
    non puoi omettere il primo indice.
  • Re: Problema con Matrice 3D

    oregon ha scritto:


    In
    A[][i][j]
    non puoi omettere il primo indice.
    si ma quindi che dovrei fare secondo te? ti ho elencato le strade che ho preso ma ognuna di loro ha un problema o di compilazione o logico.
  • Re: Problema con Matrice 3D

    In
    A[k][i][j]
    il primo indice non può essere k

    La diagonale ha elementi
    A[i][i][i]
    e basta un ciclo. Ovviamente la matrice deve avere dimensioni n n n
  • Re: Problema con Matrice 3D

    oregon ha scritto:


    In
    A[k][i][j]
    il primo indice non può essere k

    La diagonale ha elementi
    A[i][i][i]
    e basta un ciclo. Ovviamente la matrice deve avere dimensioni n n n
    Il problema sta proprio qui.. la matrice da dichiarare è per forza K x N x N. Guarda ti mando la consegna dell'esercizio:
    [Esercizio 1] Scrivere un metodo che prenda in input un parametro formale array A di interi di dimensionek×n×n ed
    un double W, e restituisca il valore di verita' true se esiste un valore dell’indice relativo alla prima dimensione (k) tale che,
    nella corrispondente matrice quadrata di dimensioni n×n, la media tra il valore minimo
    ed il valore massimo della diagonale principale sia minore o uguale a w.
  • Re: Problema con Matrice 3D

    Infatti parla di "corrispondente matrice quadrata di dimensioni n×n"

    Quindi devi individuare la prima dimensione (secondo le regole dell'esercizio) e inserire tale dimensione in una variabile (ad esempio d) e poi fare il calcolo con un solo ciclo con i fino a n utilizzando gli elementi
    A[d][i][i]
    In pratica un ciclo
    for(d=0; d<k; d++)
    al cui interno usi l'altro ciclo con i per il calcolo e il controllo ... a te il resto ...
Devi accedere o registrarti per scrivere nel forum
5 risposte