mmh...dici che la funzione (
) somma non va, ma non hai postato il codice...
supposto che somma() non faccia altro che sommare dei numeri,
e, in particolare, somma(n1, n2) = n1 + n2
:
codice:
/* Dovrebbe andare, ma puoi anche non fare caso ai vari
* cambiamenti nella funzione minimo() */
int minimo(int i, int *c, int *r)
{
int j;
int min;
char flag;
int testgt; /* Questa č un'aggiunta. */
int sum; /* Anche questa. */
min = -1;
for (j = 0; j < (nodi - 1); j++) {
flag = 0;
testgt = i < j ? 1 : 0;
/* La somma. */
sum = (testgt)
? (l[i + 1][j + 1].dato + Dvec[j].dato)
: (l[j +1 ][i + 1].dato + Dvec[j].dato);
min = minore(sum, min, &flag);
(testgt)
? printf("se i < j %d\n", min)
: printf("se i > j sono nell'else %d\n", min);
(testgt)
? (*c = j + 1, (flag) ? (*r = i + 1) : 0)
: (*c = i + 1, (flag) ? (*r = j + 1) : 0);
}
return min;
}
/* Dovrebbe essere corretta. */
int minore(int a, int b, char *flag)
{
if ((b != -1) && (a == 0 || !(a < b)))
return b;
*flag = 1;
return a;
}
spero di essere stato utile 
___