Ver Mensaje Individual
  #2  
Antiguo 12-03-2024
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.757
Reputación: 21
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
No es necesario calcular el promedio cada vez que modificas una celda.
Creo que lo mejor es dividirlo en varios pasos.
Además no creo que debas utilizar el valor -9999 como indicador de nulo. Yo simplemente dejaría la celda con un 0.

Te dejo un pseudocódigo Delphi:
Código Delphi [-]
lista_val = array[344160];
lista_Can = array[100, 100];
lista_Sum = array[100, 100];


// Inicializamos listas ----------
RellenarListaValores(lista_val);
RellenarConCeros(lista_Can);
RellenarConCeros(lista_Sum);


// Acumulamos valores ------------
for i = 0 to lista_val.Count do
begin
  // Dividimos la linea leida en 3 valores
  ObtenerDatos(lista_val[i], x, y, z);
  
  // Averiguamos en qué posición debe guardar el valor
  CalcularPosicion(x, y, columna, fila);
  
  // incrementamos la cantidad de 
  lista_Can[columna, fila] := lista_Can[columna, fila] + 1;
  
  // Sumamos el valor leido
  lista_Sum[columna, fila] := lista_Sum[columna, fila] + z;
end;

  
// Calculamos promedios ----------
for Columna = 1 to 100 do
begin
  for Fila = 1 to 100 do
    if lista_Can[columna, fila] <> 0 then
       // Calculo Promedio
       lista_Sum[columna, fila] := lista_Sum[columna, fila] / lista_Can[columna, fila]
    else     
       // No hay datos y se considera nulo
       lista_Sum[columna, fila] := -9999;
end;
Responder Con Cita