Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Obtener promedio desde un DataGridView C#

Estas en el tema de Obtener promedio desde un DataGridView C# en el foro de .NET en Foros del Web. Hola!!, soy nuevo en el foro y quisiera saber si me pueden ayudar. tengo en un datagridview una tabla con la siguiente estructura: matri nom ...
  #1 (permalink)  
Antiguo 14/08/2013, 12:51
 
Fecha de Ingreso: agosto-2013
Ubicación: Ensenada
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Obtener promedio desde un DataGridView C#

Hola!!, soy nuevo en el foro y quisiera saber si me pueden ayudar. tengo en un datagridview una tabla con la siguiente estructura:

matri nom mat1 mat2 mat3 mat4
0032 juan 09 10 null 05
0022 mari 10 null 10 08

como le puedo hacer para agregar una columna al final y en esa columna me saque el promedio de cada estudiante?, Ojo: en las columnas en algunos casos no tendrán ningún dato, es decir estarán nulos y no quiero que para el promedio me tome esas que no tienen valor, quiero un tipo contador que me cuente cuantas columnas tienen valor para dividirlo entre la suma de las calificaciones y obtener el promedio.

por ejemplo: para Juan el calculo del promedio sería; 9+10+5/3 y NO; 9+10+5/4

no se si me explico. Ojala y alguien me de una pista, Trabajo con Visual Studio 2010 C# y SQL Server 2005

Gracías!
  #2 (permalink)  
Antiguo 14/08/2013, 15:16
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Obtener promedio desde un DataGridView C#

double suma = 0;
double promedio;
int contador = 0;
int indice = 2;
int filas = 0;
foreach (DataGridViewRow row in dgvTabla.Rows)
{
if (filas < dgvTabla.Rows.Count-1)
{
foreach (DataGridViewColumn col in dgvTabla.Columns)
{
if (row.Cells[indice].Value != DBNull.Value)
{
if (row.Cells[indice].Value != String.Empty)
{
contador++;
suma = suma + Convert.ToDouble(row.Cells[indice].Value);
}
}
if (indice < dgvTabla.Columns.Count - 1)
indice++;
}
promedio = suma/contador;
row.Cells[6].Value = promedio;
indice = 2;
promedio = 0;
suma = 0;
contador = 0;
filas++;
}
}


el valor de las celdas nulas debe de ser DbNull.Value

saludos!!!!
  #3 (permalink)  
Antiguo 14/08/2013, 17:40
 
Fecha de Ingreso: agosto-2013
Ubicación: Ensenada
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Obtener promedio desde un DataGridView C#



Gracias alan_69niupi
Muy buena respuesta.

Obtiene el promedio sin problemas, todo funciona muy bien, solo que en algunos casos por ejemplo en el primer alumno calcula el promedio de 10 materias
por ejemplo las calificaciones son:
8,8,9,9,8,5,10,10,10,9 sacándolo manualmente sería un promedio de 8.6 , pero el programa me arroja el siguiente resultado: 8.4615384615384617

no se si tenga que ver en que las calificaciones tienen la siguiente estructura: 008,008,009,009,008,005,010,010,010,009.

O si existe alguna forma de redondear los resultados?

Saludos!!
  #4 (permalink)  
Antiguo 14/08/2013, 18:04
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Obtener promedio desde un DataGridView C#

Estoy usando variables de tupo double, es muy diferente al flotante
intenta cambiando el tipo a float.


saludos!!!
  #5 (permalink)  
Antiguo 14/08/2013, 18:28
 
Fecha de Ingreso: agosto-2013
Ubicación: Ensenada
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Obtener promedio desde un DataGridView C#

las modifique a Float y el resultado es: 8.545455

float suma = 0;
float promedio;
int contador = 0;
int indice = 2;
int filas = 0;

suma = suma + Convert.ToInt32 (row.Cells[indice].Value);

pero el resultado es correcto.

Te agradezco mucho alan_69niupi !!

Saludos!!

Etiquetas: c#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:38.