Torna indietro   Hardware Upgrade Forum > Software > Programmazione

BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile
BOOX Palma 2 Pro è l'ultima evoluzione della gamma Palma. Ma di cosa si tratta? In breve è un dispositivo e-ink da 6,13 pollici che sfida le convenzioni con un display Kaleido 3 a colori, supporto per stilo InkSense Plus, connettività 5G solo dati e alimentato dal sistema operativo Android 15. Con queste caratteristica si configura come qualcosa in più di un semplice e-reader
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7
FRITZ!Repeater 1700 porta il Wi-Fi 7 dual-band nelle case connesse. Mette a disposizione fino a 2.880 Mbit/s su 5 GHz e 688 Mbit/s su 2,4 GHz, integrazione Mesh immediata via WPS con FRITZ!Box e funzioni smart come MLO per bassa latenza. Compatto, plug-and-play e pronto per il futuro, è la soluzione ideale per chi vuole coprire ogni angolo senza cavi o complicazioni
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica
La Fondazione Chips-IT ha presentato a Pavia il piano strategico 2026-2028 per rafforzare l'ecosistema italiano dei semiconduttori. Con un focus su ricerca, design, talenti e infrastrutture, la Fondazione punta a consolidare il ruolo dell'Italia nel Chips Act europeo, sostenendo innovazione, collaborazione industriale e sovranità tecnologica.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-04-2008, 13:23   #1
|_Mayhem_|
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;
}
e l'output:

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 . . .
perche 54 la somma quando dovrebbe essere 55??

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?
|_Mayhem_| è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2008, 13:44   #2
il_toby
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.
il_toby è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2008, 13:49   #3
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Prima un consiglio:
Codice:
somma_diagonale=somma_diagonale+bidimensionale[i][j];
Se lo scrivi così è più leggibile:
Codice:
somma_diagonale += bidimensionale[i][j];
Poi il problema è questo:
Codice:
if(i=j)
Questa è un'assegnazione, in pratica trasferisci il valore di j in i, il confronto lo si fa col doppio uguale:
Codice:
if (i == j)
Come hai scritto tu prima assegna j ad i e poi controlla se il valore è vero (non-zero), che nel caso del primo elemento (0) è falso. Comunque potevi fare più semplicemente con un solo indice:
Codice:
int x;

for (x = 0; x < 10; x++) {
  somma += matrice[x][x];
}
ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2008, 13:56   #4
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 27-04-2008, 14:09   #5
|_Mayhem_|
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.
|_Mayhem_| è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica Fondazione Chips-IT, l'Italia alla riscossa nei ...
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud Nutanix: innovazione, semplicità e IA al ...
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
NVIDIA potrebbe tagliare la produzione d...
YouTube sperimenta l'introduzione dei ca...
Google chiude nel 2026 il Dark Web Repor...
Divinity 3 sfrutterà un nuovo mot...
Addio allo storico fondatore: Sucker Pun...
Non è quello di Cloudflare il dis...
GlobalBuildingAtlas: la prima mappa 3D d...
I 10 peggiori videogiochi del 2025: il p...
Dead Island 3 in sviluppo: tutto lo stud...
Windows 11, la nuova funzione di sicurez...
Mercato smartphone in caduta libera nel ...
Larian usa l'IA, ma Divinity sarà...
Rete Vodafone fuori uso: migliaia di ute...
Amazon, in arrivo tagli di personale rec...
Gli Stati Uniti vanno a caccia di talent...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:27.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v