• Miércoles 6 de Noviembre de 2024, 00:18

Autor Tema:  Matriz De Tres Dimensiones En C  (Leído 3699 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Matriz De Tres Dimensiones En C
« en: Miércoles 22 de Junio de 2005, 19:13 »
0
Hola a todos tengo que hacer un ejercicio super interesante, pero necesito ayuda, porque estoy un poco perdida, resulta que se trata de una matriz dinamica que almacena una serie de notas obtenidas en unas asignaturas por un conjunto de alumnos. Me dice que las filas de la matriz, son 6 que s el numero de cursos por año, las columnas son las asignaturas que son 5 por año y otra dimension,es la de calificaciones correspondientes a cda curso.

tambien me dice que hay un fichero binario que contiene el nombre del alumno y un identificador.

Ej:
Pepa 1
Luis 2
etc.

Me pide q calcule el numero de estudiantes q hay en el fichero, q cree la matriz e inserta las calificaciones de cada estudiante. en la fila de la matriz correspondiente al identificador del alumno en el fichero,
Si alguien se le da bien esto y me puede dar una orientacion, la idea la tengo pero no s como exponerla. Gracias.

pitukilloloco

  • Miembro MUY activo
  • ***
  • Mensajes: 104
    • Ver Perfil
Re: Matriz De Tres Dimensiones En C
« Respuesta #1 en: Miércoles 22 de Junio de 2005, 23:09 »
0
Para calcular el número de estudiantes es muy fácil. Dices que es un archivo binario, entonces me imagino que debes de tener el tamaño en caracteres del nombre y el otro campo ha de ser un entero ¿no? entonces sólo divides el tamaño de este archivo entre el número de bytes que tiene cada registro (tamaño en bytes del campo nombre más el tamaño en bytes que ocupa el entero del identificador) y el resultado es el número de estudiantes. Lo que no está claro en lo que expusiste es de donde se va a sacar la información de las calificaciones de cada alumno. Tampoco me queda claro lo que entiendes por "cursos" y "asignaturas". Cuando llevé la carrera de computación esta se componía de ciertas materias (por ejemplo Cálculo I, Álgebra I, Programación I, Hardware I) que tenías que cursar cada semestre, y cada semestre iban cambiando estas materias ¿qué podría entender por cursos y asignaturas con este esquema?

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Matriz De Tres Dimensiones En C
« Respuesta #2 en: Jueves 23 de Junio de 2005, 01:16 »
0
Cita de: "pitukilloloco"
Para calcular el número de estudiantes es muy fácil. Dices que es un archivo binario, entonces me imagino que debes de tener el tamaño en caracteres del nombre y el otro campo ha de ser un entero ¿no? entonces sólo divides el tamaño de este archivo entre el número de bytes que tiene cada registro (tamaño en bytes del campo nombre más el tamaño en bytes que ocupa el entero del identificador) y el resultado es el número de estudiantes. Lo que no está claro en lo que expusiste es de donde se va a sacar la información de las calificaciones de cada alumno. Tampoco me queda claro lo que entiendes por "cursos" y "asignaturas". Cuando llevé la carrera de computación esta se componía de ciertas materias (por ejemplo Cálculo I, Álgebra I, Programación I, Hardware I) que tenías que cursar cada semestre, y cada semestre iban cambiando estas materias ¿qué podría entender por cursos y asignaturas con este esquema?
Veras son 6 cursos, y 5 asignatura por curso, se trata de una matriz tridimensional que dice en cada fila aparecen las 5 calificaciones de cada
alumno, en cada columna la calificacion correspondiente a cada asignatura, y una tercera dimensión las calificaciones correspondientes a cada curso.

Ejemplo curso 1, asignatura calculo, fisica, programacion, algebra, ingles
entiendes ahora lo que quise decir.

Respecto a lo que me dices, entonces lo de calcular el numero de estudiantes en C, es facil, no?

Gracias por responder.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Matriz De Tres Dimensiones En C
« Respuesta #3 en: Sábado 25 de Junio de 2005, 22:42 »
0
a esto te refieres por ejemplo
Curso 1 = calculo I, fisica, programacion I, algebra, ingles I

Curso 2 = calculo II, fisica II, programacion II, algebra II, ingles II

que cada curso tiene un grupo de materias ?
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Matriz De Tres Dimensiones En C
« Respuesta #4 en: Sábado 25 de Junio de 2005, 22:59 »
0
Cita de: "juez"
a esto te refieres por ejemplo
Curso 1 = calculo I, fisica, programacion I, algebra, ingles I

Curso 2 = calculo II, fisica II, programacion II, algebra II, ingles II

que cada curso tiene un grupo de materias ?
Son 6 cursos y cada curso tiene 5 asignaturas.

Pris

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Matriz De Tres Dimensiones En C
« Respuesta #5 en: Viernes 15 de Julio de 2005, 05:27 »
0
Bueno tienes una matriz básica de dos dimensiones, cursos y asignaturas por curso, y la tercera dimensión la marca cada uno de los alumnos. Podrías declarar la matriz de la siguiente manera la forma mas clara es usando una estructura (el tipo de los valores será según tu formato de nota float si las notas son del tipo 7.5 o int si no vas a usar decimales).

typedef struct {
        float matriz_notas[6][5];
}notas;

y una vez en el main declaras
notas *estudiantes;

luego tendrás que leer el número de estudiantes que hay en el fichero, para con un malloc crear memoria suficiente para n estudiantes es decir poder definir la tercera dimensión de la matriz. Los datos para rellenar la matriz de cada estudiante no sé si te vendrán en el fichero o te lo vas a inventar, pero vaya es sencillo ir accediendo a cada matriz de estudiantes. Si tienes n estudiantes (y ya has creado espacio con el malloc) puedes ir poniendo para cada estudiante dentro de un for hasta n:
estudiantes.matriz_notas[0][0] = 7.5;
estudiantes.matriz_notas[0][1] = 5.5;
bueno i es el índice del for que recorre los estudiantes, y los índices de matriz_notas los puedes recorrer con dos índices mas en dos for anidados, recogiendo las notas del fichero o no sé de dónde ya que no lo especificas en el post.

Otra opción, sin usar estructuras, aunque queda menos clara también te puede servir:
float *matriz_estudiantes[6][5]; (luego lo mismo malloc para crear los n estudiantes)
Espero que te sirva.