paulo1205
(usa Ubuntu)
Enviado em 16/09/2014 - 00:38h
Acabei de notar que seu código usa “
<= valor_final”, ao passo que eu sigo a forma mais comum no jargão do C, que é “
< valor_apos_final” . Além de mais usual entre programadores experientes, a forma que eu emprego é especialmente útil quando se está trabalhando com
arrays e seus índices, pois o tal “
valor_apos_final ” coincide exatamente com o tamanho usado na declaração do
array ou em valores que possam ser obtidos com o uso do operador
sizeof (por exemplo: a forma básica de saber a quantidade de elementos de um
array , que é fazer “
sizeof array/sizeof array[0] ” -- tamanho total dividido pelo tamanho do primeiro elemento).
Se você realmente quiser prosseguir com o uso de
<= , deve somar 1 nos fatores das multiplicações do meu segundo e terceiro exemplos, complicando um pouco mais as contas.
Na verdade, se você não quiser ou não puder, por algum motivo, usar o primeiro exemplo, que conta por simples incremento (máxima eficiência), a forma mais geral seria a seguinte.
for(i=I_INICIAL; i<LIMITE_I; i++){
for(j=J_INICIAL; j<LIMITE_J; j++){
for(k=K_INICIAL; k<LIMITE_K; k++){
/* 6 somas/subtrações + 2 multiplicações */
contador = (k-K_INICIAL) + (LIMITE_K-K_INICIAL)*((j-J_INICIAL) + (LIMITE_J-J_INICIAL)*(i-I_INICIAL));
}
}
}
Se você preferir trabalhar com
<= , a fórmula fica a seguinte (com um total de oito somas/subtrações e as mesmas duas multiplicações).
contador = (k-K_INICIAL) + (K_FINAL+1-K_INICIAL)*((j-J_INICIAL) + (J_FINAL+1-J_INICIAL)*(i-I_INICIAL));