PDA

View Full Version : [C++]Puntatori Array


mirko90
05-06-2007, 15:19
Ciao a tutti :D

Qualcuno è così gentile da sapermeli spiegare. Devo riuscire a trovare la determinante di una matrice a 9 numeri, non capisco come diavolo usare i puntatori :confused:

Vi prego aiutatemi :help:

Furla
05-06-2007, 16:57
è stato specificato il metodo di calcolo del determinante (laplace, gauss...)? devi poter generalizzare a matrici n*n o ti bastano le 3*3? si tratta di valori interi o double? devi usare l'aritmetica dei puntatori o puoi usare la selezione con indice?

insomma, definisci meglio il problema :D

mirko90
05-06-2007, 17:47
La matrice è 3*3 il metodo dicalcolo e di gauss si usano valori reali e si possono usare gli indici :)

PGI-Bis
05-06-2007, 20:05
Premesso che io sto qui e C++ là (molto là), se crei una classe Matrice che rappresenta... la matrice e le dai un metodo get(riga, colonna) il calcolo del determinante di una matrice 3x3 con Gauss diventa semplicemente:

int det =
m.get(0, 0) * m.get(1, 1) * m.get(2, 2) -
m.get(0, 0) * m.get(1, 2) * m.get(2, 1) +
m.get(0, 1) * m.get(1, 2) * m.get(2, 0) -
m.get(0, 1) * m.get(1, 0) * m.get(2, 2) +
m.get(0, 2) * m.get(1, 0) * m.get(2, 1) -
m.get(0, 2) * m.get(1, 1) * m.get(2, 0);

Forse :fagiano:

mirko90
05-06-2007, 20:44
Pensavo anchio così ma ho sentito che deve essere utilizato un ciclo for ma non so a che scopo :(

PGI-Bis
05-06-2007, 21:03
Prova a scrivere come prima riga:

for(int i = 0; i < 1; i++) {
cout << "Ma va da via 'l Gauss" << endl;
}
int det =
m.get(0, 0) * ...

e vedi cosa ti dice il prof... :D.

mirko90
05-06-2007, 21:40
Devo riuscire a prendere 6 non 3 :D

Furla
06-06-2007, 00:13
il metodo è quello, forse potresti fare il for per evitare di scrivere tutto... tipo


double m[3][3];
//assegnamento dei valori alla matrice
int det=0;
for (int i=0; i<3; i++)
{
int prodpos=1;
int prodneg=1;
for (int j=0; j<3; j++)
{
prodpos*=m[j][(i+j)%3];
prodneg*=m[2-j][(i+j)%3];
}
det+=prodpos-prodneg;
}
//stampa det


ma secondo me ti complichi la vita...

marco.r
06-06-2007, 00:15
Devo riuscire a prendere 6 non 3 :D
Prendi il codice di PGI-Bis e moltiplica tutto per 2 :D