Hola,
Dada una matriz de notas, donde las filas son el nº de alumnos y las columnas el nº de asignaturas , para calcular la nota media por alumno se haría:
vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<n; i++){
double suma=0;
for (int j=0; j<m; j++){
suma=suma+notas[i][j];
}
}
Ahora bien, para calcular la nota media por asignaturas, he pensado de hacerlo de dos maneras, me gustaría que me dijerais si está bien de las dos maneras...
vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<m; i++){
double suma=0;
for (int j=0; j<n; j++){
suma=suma+notas[i][j];
}
}
o
con solo cambiar los subíndices ya basta.
vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<n; i++){
double suma=0;
for (int j=0; j<m; j++){
suma=suma+notas[j][i];
}
}
Gracias de antemano :)
Comenzar por columnas y que cada una de ellas analice sus alumnos, que comenzar por alumnos comparando asignaturas, es lo mismo.
Ej.Alumno | Mates | Castellano | Inglés |
Marcos | 9 | 6 | 7 |
Alex | 6 | 8 | 5 |
Daniel | 4 | 7 | 3 |
Si queremos hacer la media de cada uno, será lo mismo comenzar así:
for (int i = 0; i < alumnos; i++) {
for (int z = 0; i < asignaturas; z++) {
media += asignatura[z];
}
}
Que hacer-lo por asignaturas;
for (int i = 0; i < asignaturas; i++) {
for (int z = 0; z < alumnos ; z++) {
media += alumno[z]
}
}
O con el método que le quieras aplicar...
Saludos!!
Cita de: indict en 15 Abril 2013, 18:03 PM
Ahora bien, para calcular la nota media por asignaturas, he pensado de hacerlo de dos maneras
Un detalle con los tres fragmentos de código es que estos no calculan la media, solo obtienen los totales de la fila o columna.
Cita de: indict en 15 Abril 2013, 18:03 PMme gustaría que me dijerais si está bien de las dos maneras
La primera funcionara correctamente.
La segunda solo si se trata de una matriz cuadrada, esto es, si el numero de filas es igual al numero de columnas.
Si no es es el caso (por ejemplo una matriz de 100 alumnos con 5 asignaturas) utilizar el bucle con los indices cambiados no es valido (debido a un indice fuera de rango).
Un saludo
Cita de: rir3760 en 16 Abril 2013, 02:18 AM
Un detalle con los tres fragmentos de código es que estos no calculan la media, solo obtienen los totales de la fila o columna.
La primera funcionara correctamente.
La segunda solo si se trata de una matriz cuadrada, esto es, si el numero de filas es igual al numero de columnas.
Si no es es el caso (por ejemplo una matriz de 100 alumnos con 5 asignaturas) utilizar el bucle con los indices cambiados no es valido (debido a un indice fuera de rango).
Un saludo
Exacto;
for (int i = 0; i < asignatura; i++) {
for (int z = 0; i < alumnos_total; z++) {
alumno[z]; = su_nota[i];
}
}
Más o menos así, yo no lo apliqué, en los ejemplos anteriores, pero se debe matricar todo lo que tenga más de una información.
¡¡gracias!!