Examen Lenguaje de Programación
Jorge López R.


1. (1 punto)
a) Suponga que hay una lista doblemente encadenada. Suponga tambien que hay un puntero "p" apuntando a un nodo y que este tiene un nodo anterior y uno siguiente. Se pide hacer las líneas de programa que dupliquen el nodo apuntado por "p" de la lista, dejando el nuevo como siguiente.
struct a{ 
int x;
struct a *anterior;
struct a *siguiente;
};
2. (1 punto)
Suponga que hay dos listas encadenadas como en la figura. Haga una función que las concatene de tal foma que la apuntada por k quede siguendo al nodo que apunta a NULL en la lista p. Debe definir correctamente los argumentos y las variables auxiliares.
        p
__\__     __ __   __ __
|__|__|--->|__|__|--->|__|__|-> NULL

k
__\__     __ __   __ __
|__|__|--->|__|__|--->|__|__|-> NULL


struct nodo{
int x;
struct a *siguiente;
};


3. (2 puntos) 
Escriba una función que tenga el prototipo: int numCeros( int m[][], int f, int c);
esta función debe retornar el número de elementos con valor cero de la matriz.
4. (2 puntos)
Hacer una función que calcule e imprima en pantalla el promedio de un curso, el numero de alumnos aprobados y el número de reprobados (del 1 al 7). Las notas parciales del curso se encuentran almacenados en un archivo llamado "curso" y los registros del archivo son binarios, con la siguiente estructura:
struct alumno {
float notaFinal;
char nombre[64];
};