Ciao a tutti, stavo facendo questo esercizio ma non riesco a capire come funziona esattamente
metto anche il codice che ho scritto e che non funziona:
Scrivere un sottoprogramma che ricevuta in ingresso una matrice di valori interi di dimensione NxN
(con N pari a 5) calcola e restituisce l’indice della colonna in cui la massima differenza (in valore
assoluto) ottenuta tra due suoi elementi, sia massima. Nel caso ci sia più di una colonna con uguale
differenza massima, restituire l'indice della prima colonna trovata. Ad esempio, se il sottoprogramma
riceve la matrice:
2 5 10 15 18
11 7 7 20 15
5 5 7 11 22
6 1 3 16 19
7 1 2 10 18
Il sottoprogramma restituirà l’indice 3: tale colonna ha come massima differenza 10 (diff. tra 20 e 10),
ed è maggiore della differenza massima delle altre quattro colonne, rispettivamente 9, 6, 8 e 7.
#include <stdio.h>
#define N 3
int main(){
int matrice[N][N];
int i;
int j;
int differenza=0;
int n[N];
for(i=0;i<N;i++){
for(j=0;j<N;j++){
scanf("%d", &matrice[i][j]);
}
}
for(i=0;i<N;i++){
differenza=0;
for(j=1;j<N;j++){
differenza=matrice[i][i]-matrice[j][i];
if(differenza<0){
differenza=differenza*(-1);
printf("%d ", differenza);
}else{
printf("%d ", differenza);
}
}
}
return 0;
}
ho provato a fare un printf dopo la stringa:" differenza=matrice
-matrice[j];"
per vedere che risultati mi dava, ed ovviamente ho sbagliato ed ho capito anche il problema...in pratica fa la differenza del primo termine con il secondo e poi di nuovo il primo con il terzo( fin qui giusto) poi però invece di fare la differenza del secondo con il terzo il programma passa alla colonna successiva e da li fa la differenza del secondo termine con il terzo e così via...
il problema è che non riesco a capire come fare a fare la differenza tra ogni termine della matrice, come dovrei ragionare?
ps. ho ridotto la grandezza della matrice a un 3x3 appositamente per vedere se funzionasse, so che dovrebbe essere una 5x5.