|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 47
|
[c]somma diagonale di un array bidimensionale di 10x10
salve a tutti!
mi è stato assegnato un esercizio a scuola che chiede di: "riempire un array bidimensionale di 10x10 con numeri da 1 a 10 e calcolare la somma della diagonale" vi posto il mio codice: Codice:
#include <stdio.h>
int main(){
int bidimensionale[10][10];
int i,j,somma_diagonale=0;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
bidimensionale[i][j]=j+1;
printf("%d ",bidimensionale[i][j]);
}
printf("\n");
}
printf("\nvalori della diagonale:\n\n");
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(i=j)
somma_diagonale=somma_diagonale+bidimensionale[i][j];
printf("%d ",bidimensionale[i][j]);
}
}
printf("\n\nsomma della diagionale: %d\n\n",somma_diagonale);
system("PAUSE");
return 0;
}
Codice:
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 valori della diagonale: 1 2 3 4 5 6 7 8 9 10 somma della diagionale: 54 Press any key to continue . . . ho verificato tramite i printf che i valori siano inseriti correttamente nell'array e che nella diagonale siano effettivamente presenti quei valori... dunque c'è qualcosa che va storto nella somma e viene lasciato via -presumibilmente- il primo valore della diagonale, ovvero 1. che c'è che non va nel codice? |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: May 2007
Messaggi: 17
|
l'errore sta qui:
if(i=j) per fare un confronto devi usare il doppio uguale, così: if(i==j) e per rendere più veloce il codice visto che conosci a priori le dimensioni della matrice, per la somma potresti fare così: for(i=0;i<10;i++) { somma_diagonale=somma_diagonale+bidimensionale[i][i]; printf("%d",bidimensionale[i][i]); } invece di for(i=0;i<10;i++){ for(j=0;j<10;j++){ if(i=j) somma_diagonale=somma_diagonale+bidimensionale[i][j]; printf("%d ",bidimensionale[i][j]); } } Ultima modifica di il_toby : 27-04-2008 alle 13:48. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Prima un consiglio:
Codice:
somma_diagonale=somma_diagonale+bidimensionale[i][j]; Codice:
somma_diagonale += bidimensionale[i][j]; Codice:
if(i=j) Codice:
if (i == j) Codice:
int x;
for (x = 0; x < 10; x++) {
somma += matrice[x][x];
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
D'oh! Sono stato troppo lento!
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 47
|
grazie, sapevo che era una stupidaggine
mi chiedo però perche faceva comunque la somma degli altri valori... mah, misteri del processore beh è vero per prendere i numeri dalla diagonale posso usare anche una sola variabile, tanto la diagonale si ha quando il valore delle due variabili si equivale quindi vale la pena usarne una sola! Ultima modifica di |_Mayhem_| : 27-04-2008 alle 14:12. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:27.



















