Ejemplo de un arreglo de doble subíndice

	#include <stdio.h>
	#define ESTUDIANTES 3
	#define EXAMENES 4
 
	/* prototipos de las funciones */
	int minimo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes );
	int maximo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes );
	double promedio( const int estableceCalif[], int examenes );
	void despliegaArreglo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes );
 
	/* la función main comienza la ejecución del programa */
	int main()
	{
	   int estudiante; /* contador de estudiantes */
 
	   /* inicializa las calificaciones para tres estudiantes (filas) */
	   const int calificacionesEstudiantes[ ESTUDIANTES ][ EXAMENES ] =  
		  { { 77, 68, 86, 73 },
			{ 96, 87, 89, 78 },
			{ 70, 90, 86, 81 } };
 
	   /* muestra el arreglo calificacionesEstudiantes */
	   printf( "El arreglo es:n" );
	   despliegaArreglo( calificacionesEstudiantes, ESTUDIANTES, EXAMENES );
 
	   /* determina el valor más pequeño y el valor más grande de las calificaciones */
	   printf( "nnCalificacion mas baja: %dnCalificacion mas alta: %dn",
		  minimo( calificacionesEstudiantes, ESTUDIANTES, EXAMENES ),
		  maximo( calificacionesEstudiantes, ESTUDIANTES, EXAMENES ) );
 
	   /* calcula el promedio de calificaciones de cada estudiante */
	   for ( estudiante = 0; estudiante < ESTUDIANTES; estudiante++ ) {
		  printf( "El promedio de calificacion del estudiante %d es %.2fn", 
			 estudiante, promedio( calificacionesEstudiantes[ estudiante ], EXAMENES ) );
	   } /* fin de for */
 
	   return 0; /* indica terminación exitosa */
 
	} /* fin de main */
 
	/* Encuentra la calificación mínima */
	int minimo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes )
	{
	   int i; /* contador de estudiantes */
	   int j; /* contador de examenes */
	   int califBaja = 100; /* inicializa a la calificación más alta posible */
 
	   /* ciclo a través de las filas de calificaciones */
	   for ( i = 0; i < alumnos; i++ ) {
 
		  /* ciclo a través de las columnas de calificaciones */
		  for ( j = 0; j < examenes; j++ ) {
 
			 if ( calificaciones[ i ][ j ] < califBaja ) {
				califBaja = calificaciones[ i ][ j ];
			 } /* fin de if */
 
		  } /* fin del for interno */
 
	   } /* fin del for externo */
 
	   return califBaja; /* devuelve la calificación mínima */ 
 
	} /* fin de la función main */
 
	/* Encuentra la calificación más alta */
	int maximo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes )
	{
	   int i; /* contador de estudiantes */
	   int j; /* contador de examenes */
	   int califAlta = 0; /* inicializa a la calificación más baja posible */
 
	   /* ciclo a través de las filas de calificaciones */
	   for ( i = 0; i < alumnos; i++ ) {
 
		  /* ciclo a través de las columnas de calificaciones */
		  for ( j = 0; j < examenes; j++ ) {
 
			 if ( calificaciones[ i ][ j ] > califAlta ) {
				califAlta = calificaciones[ i ][ j ];
			 } /* fin de if */
 
		  } /* fin del for interno */
 
	   } /* fin del for externo */
 
	   return califAlta; /* devuelve la calificación máxima */
 
	} /* fin de la función maximo */
 
	/* Determina la calificación promedio para un estudiante en especial */
	double promedio( const int conjuntoDeCalificaciones[], int examenes )
	{
	   int i; /* contador de exáenes */
	   int total = 0; /* suma de las calificaciones del examen */
 
	   /* total de calificaciones de un estudiante */
	   for ( i = 0; i < examenes; i++ ) {
		  total += conjuntoDeCalificaciones[ i ];
	   } /* fin de for */
 
	   return ( double ) total / examenes; /* promedio */
 
	} /* fin de la función promedio */
 
	/* Imprime el arreglo */
	void despliegaArreglo( const int calificaciones[][ EXAMENES ], int alumnos, int examenes )
	{
	   int i; /* contador de estudiantes */
	   int j; /* contador de examenes */
 
	   /* muestra el encabezado de las columnas */
	   printf( "                 [0]  [1]  [2]  [3]" );
 
	   /* muestra las calificaciones en forma tabular */
	   for ( i = 0; i < alumnos; i++ ) {
 
		  /* muestra la etiqueta de la fila */
		  printf( "ncalificacionesEstudiantes[%d] ", i );
 
		  /* muestra las calificaciones de un estudiante */
		  for ( j = 0; j < examenes; j++ ) {
			 printf( "%-5d", calificaciones[ i ][ j ] );
		  } /* fin del for interno */
 
	   } /* fin del for externo */
 
	} /* fin de la función despliegaArreglo */

¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.

Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C [c]Código en C[/c]
  • Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].

De esta manera el código coloreas el código.

Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:

Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.

¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)