|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 10
|
[C] Calcolo det matrice
Raga ho provato a sviluppare un programma per il calcolo del determinante di una matrice max 1000 per 1000 ma mi da errore: ARITHMETIC ON POINTER AN INCOMPLETE TYPE... cioè??
Help!!! xD Eccovi il codice se può servire... L'errore me lo da sulle righe 119 e 139. Credo scambi la moltiplicazione per un puntatore ma nn so come risolvere. Codice:
#include<stdio.h>
void load(int *h, int x, int y);
long determinante (long X[][], int x);
long totdet(long X[][], long mx, int h);
void
main ()
{
long M[1000][1000];
int i=1, j=1, x, y;
printf("\t\tCALCOLO DETERMINANTE MATRICI QUADRATE.\n
\t\tIL CALCOLO VIENE ESEGUITO SU ELEMENTI\n
\t\tCOMPRESI TRA -3000 e 3000.\n\n
\t\tDIMENSIONE MASSIMA MATRICE: 1000x1000\n\n");
//CARICAMENTO GRANDEZZA MATRICE
do
{
if(i<1||i>1000) printf("\n\nIl valore inserito e' errato, inserire un valore compreso tra 1 e 1000.");
printf("\n\n\n*Inserire il numero di righe (e colonne) della matrice: ");
scanf("%d",&i);
}
while(i<1||i>1000);
j=i;
printf("\n\n\n\n\n");
do
{
for(x=0; x<i; x++)
{
load(&M[y][x], y, x);
}
y++;
}
while(y<j);
printf("\n\n\n\t\tIl determinante della matrice è: %ld", determinante(M ,x ));
system("PAUSE");
}
_______________FINE MAIN_______________
void
load(int *h, int y, int x)
{
do
{
if(*h<-3000||*h>3000) printf("\n\nINSERISCI UN VALORE CORRETTO\n\n");
printf("***Inserire l'elemento di indici %d,%d della matrice: ", y+1, x+1);
scanf("%d",&*h);
}
while(*h<-3000||*h>3000);
}
long
determinante(long X[][], int x)
{
int h, DET=1, TOTDET;
for(h=0;h<x-1;h++)
{
DET=X[h][h]*(DET); /*vedi teorema di laplace*/
}
h++;
TOTDET=totdet(X , DET, h);
return TOTDET;
}
long
totdet(long X[][], long mx, int h)
{
return mx*(((X[h][h])*(X[h+1][h+1]))-((X[h+1][h])*(X[h][h+1])));
}
Ultima modifica di Stallwars : 24-01-2010 alle 15:08. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Illeggibile
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 10
|
Scusate... Aggiusto e riposto. =)
Aggiungo: fino al caricamento tutto ok. Le righe sono nella funzione "totdet" e nella funzione "determinante" Il resto dovrebbe fungere dato k l'ho testato.
Ultima modifica di Stallwars : 23-01-2010 alle 18:00. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Il calcolo del determinante secondo Laplace e' ricorsivo, ma nel codice non vedo la ricorsione.
E non penso sia opportuno supportare una matrice 1000x1000 e poi inserire i dati uno ad uno con una scanf...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 10
|
Quote:
No la ricorsione c'è... Praticamente l'indice h punta in maniera incrementale agli elementi con indici eguali... E' come se applicassi tante volte laplace finchè non ottieni un minore 2x2... A quel punto calcola il minore. Per quanto riguarda la scanf... Forse c'è qlke altro metodo + pratico! xD Cmq credo mi riconosca le moltiplicazioni come puntatori
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Guarda che stai praticamente moltiplicando solo i termini della diagonale maggiore, e poi il determinante delll'ultima sotto-matrice 2X2 in basso a destra.
Mancano tutti gli altri contributi, ed e' li' che ci si diverte. Inutile correggere la versione corrente quando comunque non funzionerebbe.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#7 | |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 10
|
Quote:
|
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jan 2009
Messaggi: 123
|
io mi son tenuto un pò più stretto.Qui potete trovare un file eseguibile java per calcolare determinante e rango di matrici 3x3
http://uosew.weebly.com/software.html |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Se vuoi restare su questo thread devi postare il codice, che e' quello che ci interessa.
Se invece si tratta solo di eseguibile, devi spostarti su "Programmi e Utility" Poi vabbe', il thread originale era di 3 anni fa
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:01.



















