PDA

Visualizza la versione completa : [C] Valore mediano delle diagonali di una matrice quadrata


robe92
20-02-2012, 15:05
Buongiorno a tutti gli utenti del forum. Mi stavo esercitando con qualche esercizio per il mio corso universitario di fondamenti di informatica quando ho trovato questo:

1) Definire mediante flow-chart l'algoritmo che valuti il valore mediano dell'insieme degli elementi interi appartenenti alle due diagonali (principale e secondaria) di una matrice quadrata d'ordine N (per l'algoritmo ipotizzare gi assegnati sia il valore di N sia gli elementi interi della matrice).
2) Scrivere in linguaggio C il programma che implementa l'algoritmo definito al punto precedente, in modo strutturato e modulare.

Suggerimenti per la risoluzione? Come potrei procedere? Magari possiamo confrontare le idee e trovare quella pi adatta.. Vi ringrazio in anticipo!

oregon
20-02-2012, 15:08
Proponi la tua idea e il tuo codice e vediamo i problemi.

robe92
20-02-2012, 16:42
diciamo che ho solo l'idea che quella di considerare una matrice 3x3 ad esempio, e di creare un vettore V che contenga solo gli elementi della diagonale principale e della diagonale secondaria.. i primi basta considerarli con il ciclo for(i=0;i<3;i++) di "matrice[i][i]", i secondi invece non so con quale criterio prenderli.. per il mediano di un vettore basta fare mediano=vettore[dimensione/2]

torn24
20-02-2012, 16:59
Ho provato a risolvere il tuo problema e ho , praticamente addottato il tuo stesso
approccio .
io ho dichiarato una matrice 10 x 10

e suddiviso il programma in due funzioni "moduli"

#define N 10
void Trova_diagonali(int X[][N],int out[]);
float Media(int dati[]);


ti posto il codice della funzione trova diagonali cosi puoi avere un idea






void Trova_diagonali(int x[][N],int out[])
{
int i,j,k;


for(i=0;i<N;i++)
{
// prima diagonale
out[i]=x[i][i];

}
for(j=N-1,k=0;j>=0;j--,i++,k++)
{

//seconda diagolane

out[i]=x[j][k];

}


}

robe92
20-02-2012, 17:41
non potevi utilizzare lo stesso indice i e creare il vettore della seconda diagonale con matrice[i][N-1-i]?

torn24
20-02-2012, 18:14
Si forse un metodo pi elegante , ma io uso un solo vettore per i dati delle due diagonali,
quindi il mio approccio il primo che mi sia venuto in mente.
di contro , e qui ti do ragione ,che uso due cicli , quando , usando due vettori ne basta uno.

P.S.
io avevo capito che non riuscivi a trovare la seconda diagonale ,
quindi ti ho mostrato una possibile soluzione , evidentemente non gradita :stordita:

robe92
20-02-2012, 18:20
nono, anzi molto gradita la tua soluzione, proprio questo che cercavo infatti: un confronto di idee, e non pu che farmi piacere il tuo aver partecipato :)

Loading