Examen De Arrays de punteros, funciones…
Mi vida, Programación, Informática, clases, C\C++ 8 March, 2006Ayer me dieron la nota del último examen de programación y como no, para todos mis lectores interesados en la programación (Willy tu no vales, lo siento jeje) os dejo el ejercicio de dicho examen enterito y resuelto. Es exactamente el que entregue con algún comentario añadido, por cierto saque un 10, por si alguien duda si está bien jeje.
Para situarnos, el examen pedía que se utilizase funciones para cada una de las operaciones, asignación dinámica de memoria, arrays de punteros... La estructura de datos tal cual yo la interpreté quedaría de esta manera:
Una tabla de cadena de caracteres con el nombre de cada curso de la ESO, en total son 9, .
Una tabla de cadena de caracteres con el nombre de la evaluación, en total son tres.
Un vector que almacena el número de alumnos por curso.
Un vector que almacena el número total de faltas de los alumnos por curso.
Una tabla donde se almacenan el total de aprobado por curso y para cada una de las evaluaciones. Para las operaciones no necesitamos almacenar los suspendidos ya que se deducen del número del número total de alumnos del curso menos el número de aprobados.
Viéndolo así parece sencillo, pero no lo es tanto si no tienes los conceptos claros, por lo que nada mejor que un buen dibujito para ilustrar la estructura de datos:
(clickea encima de la imagen para verlo en grande)

Las flechitas indican la relación de los índices de los diferentes índices entre si, por ejemplo la tabla aprobados, las columnas corresponden con los índices del vector evaluaciones y las filas con los índices del vector curso. Los vectores Faltas y Alumnos corresponden también con los índices del vector curso.
Las operaciones que pedía el ejercicio son:
Total de faltas de asistencia en un nivel dado desde teclado.
Porcentaje de aprobado y suspendidos en el primer ciclo de la eso.
Total de faltas de asistencia en un nivel dado desde teclado.
Ya estamos listos para meternos en el código, pa’dentro chulín jeje.
Descargar | Código examen FUT
-
/*Yone Rocha Perez*/
-
#include <conio .h>
-
#include <stdio .h>
-
#include <stdlib .h>
-
#define N 9 //numero de cursos
-
void reservar(int **v);
-
int ** reservar();
-
void cargar_alumnos(int *alu, char **curso);
-
void cargar_faltas(int *faltas, char **curso);
-
void asistencia_nivel(int *faltas, char **curso);
-
void aprobado_suspendido(char **curso, char **eva, int *alu, int **apro);
-
void top_faltas(int *faltas, char **curso);
-
void liberar(int **matriz);
-
void liberar_vector(int *v);
-
void main()
-
{
-
char *curso[]={"1ºESOA","1ºESOB","2ºESOA", "2ºESOB", "2ºESOC","3ºESOA", "3ºESOB", "4ºESOA", "4ºESOB"};
-
char *evaluaciones[]={"Primera","Segunda","Tercera"};
-
int *alumnos, *faltas, **aprobados;
-
/*Reservar memoria*/
-
reservar(&alumnos);
-
reservar(&faltas);
-
aprobados=reservar();
-
-
/*Operaciones*/
-
cargar_alumnos(alumnos, curso);
-
cargar_faltas(faltas, curso);
-
asistencia_nivel(faltas, curso);
-
aprobado_suspendido(curso, evaluaciones, alumnos, aprobados);
-
top_faltas(faltas, curso);
-
-
/*liberar memoria*/
-
liberar(aprobados);
-
liberar_vector(alumnos);
-
liberar_vector(faltas);
-
}
-
/*Reservar memorias para los vectores*/
-
void reservar(int **v)
-
{
-
*v = (int *)malloc(N*sizeof(int));
-
}
-
void liberar_vector(int *v)
-
{
-
free (v);
-
}
-
-
/*Reservamos para el array aprobados*/
-
int ** reservar()
-
{
-
int **reservo, i;
-
reservo=(int **)malloc(sizeof(int*)*N);
-
for (i=0;i<n ;i++)
-
{
-
reservo[i]=(int *)malloc(sizeof(int)*3);
-
}
-
return(reservo);
-
}
-
void liberar(int **matriz)
-
{
-
int i;
-
for (i=0;i<N;i++)
-
{
-
free(matriz[i]);
-
}
-
free(matriz);
-
}
-
-
/*Cargar los datos*/
-
void cargar_alumnos(int *alu, char **curso)
-
{
-
int i;
-
for(i=0;i<N;i++)
-
{
-
scanf("%d",alu+i);fflush(stdin);
-
}
-
}
-
-
void cargar_faltas(int *faltas, char **curso)
-
{
-
int i;
-
for(i=0;i<N;i++)
-
{
-
scanf("%d",faltas+i);fflush(stdin);
-
}
-
}
-
/*Total de faltas de asistencia en un nivel dado desde teclado*/
-
void asistencia_nivel(int *faltas, char **curso)
-
{
-
int i, suma=0;
-
char nivel;
-
nivel=getche();
-
for(i=0;i<N;i++)
-
{
-
if(nivel==*(curso[i]+0))
-
{
-
suma+=*(faltas+i);
-
}
-
}
-
getche();
-
}
-
/*Porcentaje de aprobado y suspendidos en el primer ciclo de la eso*/
-
void aprobado_suspendido(char **curso, char **eva, int *alu, int **apro)
-
{
-
int i, j;
-
int aprob, susp;
-
clrscr();
-
for(i=0;i<5;i++)
-
{
-
for(j=0;j<3;j++)
-
{
-
do{
-
scanf("%d", &aprob);
-
scanf("%d", &susp);
-
}while((aprob+susp)!=alu[i]);
-
*(apro[i]+j)=aprob;
-
-
}
-
}
-
getche();
-
clrscr();
-
/*visualizamos tabla*/
-
/*Es hastas 5 pq es donde termina el primer ciclo de la eso*/
-
for(i=0;i<5;i++)
-
{
-
for(j=0;j<3;j++)
-
{
-
}
-
}
-
getche();
-
clrscr();
-
}
-
-
/*Total de faltas de asistencia en un nivel dado desde teclado*/
-
void top_faltas(int *faltas, char **curso)
-
{
-
int i, max=faltas[0], pos=0;
-
for(i=0;i<N;i++)
-
{
-
if(*(faltas+i)>max)
-
{
-
max=*(faltas+i);
-
pos=i;
-
}
-
}
-
-
}
9-March,2006 a las 5:08 pm
Asi de entrada me excluyes… la proxima vez que estes estancado con un problema lo pones aqui y que la gente te ayude
jajajajajaja
9-March,2006 a las 5:12 pm
jajaj qva willy tener hijos pa esto jejejje
10-March,2006 a las 12:58 am
y si sacaste un 10… porque no se ve en la hoja.. jejeje… oye… esta un poco tediolo lo del array… jajaja si lo sabre yo… todavia me confundo con los arrays en php y asp.net
… hahhah saludos!!
hay que tener comprension hacia mi… yo todo lo aprendo empirico (osease que solito)
10-March,2006 a las 1:48 pm
Jaja pues no est? la nota en la hoja pq es un esquema de la manera q estructur? los array.
10-March,2006 a las 2:02 pm
El 10 ese es medio sospechoso…a mi me da que te est?s tirando a la profesora. Es sospechoso como en la primera que era m?s f?cil la programacion no ten?as esas notas…muy sospechoso.Jeje.