Errori, bug, domande - pagina 2494

 
Сергей Таболин:
Roman, prima di dare lezioni, impara da solo.

Dato che vi rivolgete alla comunità per un aiuto, nessuno vi insegnerà.
Volevo aiutarvi, ma è davvero difficile vedere dove avete dichiarato e dove vi siete appropriati.
Avresti potuto almeno separare gli array per blocchi, per leggibilità )) ma non importa, ho capito.
Prova a passare attraverso i cicli nel debugger, vedrai dove è il problema.

 

@Sergey Tabolin

Quali valori può assumerebalance_arr_size?

Come è definitobalance_arr?

 
Francuz:

@Sergey Tabolin

Quali valori può assumerebalance_arr_size?

Come è definitobalance_arr?

Non c'è nessun problema. Sono usati prima di questa sezione del codice e non causano alcuna domanda.

Ho trovato l'errore nel riempire l'array.

   // коррекция
   int      correcton_index[3];
   ArrayInitialize(correcton_index,NULL);
            correcton_index[0]   = 1;
            correcton_index[1]   = (int)MathRound(balance_arr_size / 2);
            correcton_index[2]   = balance_arr_size;
   int      correcton_index3[5];
   ArrayInitialize(correcton_index3,NULL);
            correcton_index3[0]  =  1;
            correcton_index3[1]  = (int)MathRound(correcton_index[1] / 2);
            correcton_index3[2]  = correcton_index[1];
            correcton_index3[3]  = (int)MathRound((correcton_index[2] - correcton_index[1]) / 2) + correcton_index[1];
            correcton_index3[4]  = balance_arr_size;
   int      correcton_index7[9];
   ArrayInitialize(correcton_index7,NULL);
            correcton_index7[0]  = 1;
            correcton_index7[1]  = (int)MathRound(correcton_index3[1] / 2);
            correcton_index7[2]  = correcton_index3[1];
            correcton_index7[3]  = (int)MathRound((correcton_index3[2] - correcton_index3[1]) / 2) + correcton_index3[1];
            correcton_index7[4]  = correcton_index3[2];
            correcton_index7[5]  = (int)MathRound((correcton_index3[3] - correcton_index3[2]) / 2) + correcton_index3[2];
            correcton_index7[6]  = correcton_index3[3];
            correcton_index7[7]  = (int)MathRound((balance_arr_size - correcton_index3[3]) / 2) + correcton_index3[3];
            correcton_index7[8]  = balance_arr_size;

Senza di esso, i valori sono risultati errati, ma la cosa più interessante è che alcuni valori erano negativi. Corrispondentemente, quando si cerca di indirizzare un elemento dell'array con indice [-6], il programmatore ottiene un overrun dell'array.

Avrei dovuto staccare tutto dall'inizio (volevo farlo) e controllare i valori )))

 
Сергей Таболин:

Non c'è nessun problema con questo. Sono usati prima di questa parte del codice e non causano alcun problema.

Ho trovato l'errore nel riempire l'array.

Senza di esso i valori sono risultati errati, ma la cosa più interessante è che alcuni valori sono risultati negativi. Corrispondentemente, quando si cerca di indirizzare un elemento dell'array con indice [-6], il programmatore ottiene un'uscita fuori dall'array.

Avrei dovuto staccare tutto all'inizio (volevo farlo) e controllare i valori )))

Stavo parlando della fonte. E la fonte del problema è proprio in queste due variabili(balance_arr_size ebalance_arr) il resto del codice dipende da loro.

 
Francuz:

Parlavo della fonte. E la fonte del problema sono solo queste due variabili(balance_arr_size ebalance_arr) il resto del codice dipende da loro.

Non c'entrano assolutamente nulla. L'errore era nel calcolo dell'indice.

 
Сергей Таболин:

Non c'entrano assolutamente nulla. L'errore era nel calcolo dell'indice.

Allora ci sono due possibilità, o hai dato un codice corretto nel primo post, o non vedi che tutti gli indici sono definiti dalla variabilebalance_arr_size?

 
Francuz:

Allora ci sono due possibilità, o hai dato un codice corretto nel primo post, o non vedi che tutti gli indici sono definiti tramite la variabile balance_arr_size?

Il codice corretto è tre post sopra. Guardate attentamente e spero che capirete che balance_arr_size non può influenzare l'errore in alcun modo. Ancora una volta, diciamolo chiaramente - l'errore eranella parsha dell'I n d e c s o!!!

O stai dicendo che ho trovato l'errore sbagliato? Assegnate un valore qualsiasi alla variabile (e in questo contesto, la variabile statica) balance_arr_size e calcolate su una calcolatrice cosa ottenete nella prima versione e cosa nella seconda.

A proposito, lei è già il secondo che si ostina a sfregare il suo punto. E poi ci saranno dichiarazioni: "Oh, non ho visto, oh, non ho guardato attraverso...".

 
Сергей Таболин:

Il codice corretto è tre post sopra. Date un'occhiata più da vicino, e spero che capirete che balance_arr_size non può influenzare l'errore in alcun modo. Ancora una volta, scandisci - l'errore era nella parsha dell'I n d e c o n s!!!

O stai dicendo che ho trovato l'errore sbagliato? Assegnate un valore qualsiasi alla variabile (e in questo contesto, la variabile statica) balance_arr_size e calcolate su una calcolatrice cosa ottenete nella prima versione e cosa nella seconda.

A proposito, lei è già il secondo che si ostina a sfregare il suo punto. E poi ci saranno dichiarazioni: "Oh, non ho visto, oh, non ho guardato attraverso...".

Con un tale modo di parlare, la prossima volta avrà ragione e dovrà trovarla da solo.
Nel tuo codice, non hai mostrato quanti elementibalance_arr contienequando lodichiari.
Ti è stato detto correttamente di controllare quanti elementi è dichiarato l'arraybalance_arr.
Non siamo telepati per indovinare quale matrice sia e come sia dichiarata. Ecco perché suggeriscono i possibili punti problematici.
Se tutto è a posto lì, il problema è davvero solo nel calcolo dell'indicizzazione.
E per favore cambia il tuo tono di voce.
Onestamente, la prossima volta nessuno guarderà nemmeno il tuo codice con un simile modo di parlare.
Buona fortuna.

 
Roman:

Con un tale modo di comunicare, la prossima volta avrai ragione e lo troverai da solo.
Nel tuo codice, non hai mostrato quanti elementi balance_arr contiene nella dichiarazione.
Ti è stato detto correttamente di controllare quanti elementi è dichiarato l'array balance_arr.
Non siamo telepati per indovinare quale matrice sia e come sia dichiarata. Ecco perché suggeriscono i possibili punti problematici.
Se tutto è a posto lì, il problema è davvero solo nel calcolo dell'indicizzazione.
E per favore cambia il tuo tono di voce.
Onestamente, la prossima volta che usi quel tono di voce, dubito che qualcuno guarderà il tuo codice.
Buona fortuna.

Divertente ))))

Vuol dire che è colpa mia se alcuni individui hanno bisogno di ripetere la stessa cosa più volte? E lo scandirebbe? Soprattutto dopo aver detto che ho trovato l'errore da solo? Porca puttana! Se non capite il russo, è meglio che non cerchiate nemmeno di "aiutare".

 
Сергей Таболин:

Divertente ))))

Vuol dire che è colpa mia se alcuni individui hanno bisogno di ripetere la stessa cosa più volte? E lo scandirebbe? Soprattutto dopo aver detto che ho trovato l'errore da solo? Porca puttana! Se non capisci il russo, è meglio che non cerchi di "aiutare".

Ancora non sai di cosa sto parlando. Non stavo parlando di un errore nel tuo codice. Parlavo dell'errore di postare un pezzo di codice in cui due termini chiave sono indefiniti. La fonte del problema è che non hai definito i due membri chiave e stai chiedendo aiuto.