View Full Version : [C] Sono uguali?
salvodel
12-11-2007, 16:55
Scusate il titolo ma non sapevo in che altro modo intitolarlo se non direttamente con la domanda. Dunque le seguenti righe di codice sono uguali, fanno la stessa cosa?
for(int k=0;k<s; j++)
for(int j=0;j<N; j++)
x[k]+=w[k][j]*u[j]+w[k][10];
for(int k=0;k<s; j++)
for(int j=0;j<N; j++)
x[k]+=w[k][j]*u[j];
for(int k=0;k<s; j++)
x[k]+=w[k][10];
Nella prima forma ho come l'impressione :wtf: di sommare w[k][10] a x[k] anche nel ciclo for(j). La seconda mi sembra piu coerente con la formula matematica e dunque volevo sapere se la prima versione che ho scritto non è una semplificazione ma tutta un'altra cosa.:mc:
Grazie
non ho letto tutto il post, ma i due sorgenti sono semplicemente errati sintatticamente: il for esterno di entrambi utilizza il contatore j, non dichiarato.
leggendo i due sorgenti comunque, e assumendo che il primo for di entrambi esegua k++ anziché j++ alla fine di ogni iterazione, si, mi sembrano identici. spero di non sbagliare.
wingman87
12-11-2007, 20:25
A me non sembra uguale perchè nel primo caso praticamente esegui
x[k]+=w[k][10];
esattamente N*s volte, nel secondo caso invece lo esegui solo s volte.
PS: sempre assumendo ciò che ha detto 71104
salvodel
12-11-2007, 20:30
A me non sembra uguale perchè nel primo caso praticamente esegui
x[k]+=w[k][10];
esattamente N*s volte, nel secondo caso invece lo esegui solo s volte.
PS: sempre assumendo ciò che ha detto 71104
Perfetto è come immaginavo. Nel primo caso lo assegno N*s. Grazie e scusate se non ho precisato che il problema non era di natura sintattica. Avevo solo un dubbio sui cicli for annidati.
Di nuovo grazie ad entrambi.
PS forse 71104 voleva dire che il valore di k non è incrementato,poiche mi sembrano che sia j che k siano dichiarate....giusto per capire la tua considerazione anche se come dicevo il problema era dovuto al dubbio sul ciclo annidato.
Ciao
A me non sembra uguale perchè nel primo caso praticamente esegui
x[k]+=w[k][10];
esattamente N*s volte, nel secondo caso invece lo esegui solo s volte. mi sono fatto fregare come un pivello :D
PS forse 71104 voleva dire che il valore di k non è incrementato,poiche mi sembrano che sia j che k siano dichiarate.... no, volevo dire esattamente che j non è dichiarato... alla prima riga del primo esempio l'hai usato senza averlo precedentemente dichiarato da nessun'altra parte mi pare :mbe:
a meno che non mi state fregando di nuovo :asd:
salvodel
13-11-2007, 09:01
no, volevo dire esattamente che j non è dichiarato... alla prima riga del primo esempio l'hai usato senza averlo precedentemente dichiarato da nessun'altra parte mi pare :mbe:
a meno che non mi state fregando di nuovo :asd:
Ora ho capito cosa volevidire.
for(int k=0;k<s; j++)
for(int j=0;j<N; j++)
x[k]+=w[k][j]*u[j]+w[k][10];
Qui è cannato non perche non è dichiarato prima ma perche andrebbe messo k++. Il mio scopo era quello di aggiungere una colonna alla mia matrice w. Nel primo caso come abbiamo appurato è sbagliato mentre è corretto il secondo.
Grazie mille.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.