Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - programma con matrice in cui si calcola la somma dei valori di tutte le diagonali destre
Forum - C/C++ - programma con matrice in cui si calcola la somma dei valori di tutte le diagonali destre

Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Segnala al moderatore
Postato alle 19:24
Giovedì, 21/10/2010
dovevo svolgere questo compito in un programma, mi hanno suggerito di scrivere in questo modo , ma non ho avuto tempo di farmi spiegare il perchè
Codice sorgente - presumibilmente C++

  1. void somma_diagonale(int r, int M[][10], int v[]) // r è la dimensione della matrice che puo' essere max10
  2. {
  3. int somma = 0
  4. for(int i=0; i<r; i++)
  5. { for (int j=0; j<r; j++)
  6.  somma += m[j][(i+j) % (r)];
  7. v[i] = somma;
  8. somma = 0;
  9. }}



ciò che non capisco è la scritta :
Codice sorgente - presumibilmente Plain Text

  1. somma += m[j][(i+j) % (r)];


so il significato di % ma non capisco come lo usino in questo contesto

PM
Avatar
breath (Normal User)
Newbie


Messaggi: 9
Iscritto: 06/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 20:25
Giovedì, 21/10/2010
devi ricordare che la somma è diagonale , non di ogni posizione di M .
comunque manca un ";" in somma=0 e hai messo la matrice M minuscola

PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:35
Giovedì, 21/10/2010
sì ma il programma parte, è tutto a posto, l'unica cosa che non capisco è perchè ha fatto in quel modo cioè utilizzando %, non ci sarei mai arrivata a fare così, conoscete per caso un metodo alternativo?

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 4:18
Venerdì, 22/10/2010
Testo quotato

Postato originariamente da ciao888:

sì ma il programma parte, è tutto a posto, l'unica cosa che non capisco è perchè ha fatto in quel modo cioè utilizzando %, non ci sarei mai arrivata a fare così, conoscete per caso un metodo alternativo?



l'operatore % calcola il resto di una divisione, se ti manca quello la vedo veramente dura programmare alcunchè

PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 12:29
Venerdì, 22/10/2010
no non mi manca quello, infatti io ho chiesto se ci poteva essere un metodo alternativo visto che a me non sarebbe venuto in mente di calcolarla in quel modo.Inoltre ho visto che scritta in quel modo vi è il calcolo solo della somma di una diagonale, quindi volevo chiedervi se per caso conoscete un metodo migliore per il calcolo della somma dei valori di tutte le diagonali destre

PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 17:27
Venerdì, 22/10/2010
controlla le parti in grassetto, forse non hai notato che [(i+j) % r] prenderà la colonna dell'estrema destra!

somma += m[j][(i+j) % (r)];

Ultima modifica effettuata da Pitagora il 22/10/2010 alle 17:28
PM