Práctica 2: Tipos de datos en C

Anuncio
Fundamentos de Informática
Hoja de Problemas 7 – Repaso de todo hasta
estructuras
Programa 1
En la empresa WIT.S.A.almacenan de cada uno de sus empleados anualmente la siguiente información:
-
Nombre del empleado
-
DNI
-
Sueldo de todos los meses del año: va a ser un vector de datos de tipo real de 12 posiciones
(correspondientes a los 12 meses).
Realizar un programa que permita, a través de un menú (utilizando las correspondientes funciones para cada
opción).
-
Rellenar los datos de todos los empleados de la empresa.
-
Calcular la media del sueldo de cada empleado en el año, rellenando un vector (con tantas
posiciones como empleados existan) con la media del sueldo de cada empleado y devolviendo
el índice del empleado con menor media. Se debe mostrar desde el programa principal el
nombre y la media del sueldo del empleado con menor media.
Evidentemente, no será posible ejecutar esta opción sin antes haber rellenado el vector con los
datos de los empleados.
-
Ordenar el vector de empleados por orden alfabético (suponiendo las mayúsculas menores que
las mayúsculas, tal y como se encuentran en la tabla ASCII).
-
Mostrar Empleados
-
Salir
Antes de arrancar el menú, crear dinámicamente el vector con el número de empleados que indique el usuario.
Programa 2 (Examen Abril 08)
Completar el siguiente programa para analizar el número de elementos pares e impares del vector vec y
guardarlos respectivamente en los vectores v_par y v_impar, una vez se les ha asignado memoria
dinámica. Crear las siguientes funciones en el programa:
-
Función Leer(): recibe el vector vec y solicita al usuario los datos necesario para
rellenarlo, devolviendo al programa principal el número de datos introducidos (no pueden
existir más de 100 datos). Se finalizará la introducción de datos cuando el usuario introduzca
el valor -99999.
-
Funcion ContarParesImpares() que recibe el vector vec con los datos introducidos y
devuelve el número de valores pares e impartes encontrados.
-
Función RellenarVectorPares() que recibe el vector con todos los datos y rellena el
vector vec_par con los valores pares.
-
Función RellenarVectorImpares() que recibe el vector con todos los datos y rellena
el vector vec_par con los valores pares.
La asignación dinámica de memoria se hará en el programa principal.
#define N 100
int main(void)
{
int vec[N];
int n_vec;
//número de elementos guardados en vec
int *v_par;
int n_par;
//número de elementos pares
int *v_impar;
int n_impar; //número de elementos impares
1
Fundamentos de Informática
/* Lectura de datos */
n_vec = Leer(vec);
/* Contar elementos pares e impares */
ContarParesImpares(
...);
/*Asignar memoria dinámicamente y
RellenarVectorPares(......);
RellenarVectorImpares(......);
Construir vectores par e impar */
}
Programa 3 (Examen Abril 08)
Escribir una función (MostrarTodo) para mostrar todos los datos de un vector de estructuras de tipo
T_DATOS. Esta función debe realizar llamadas a la función Mostrar() que muestra los datos de una
estructura (NO se pide realizar la función Mostrar()).
Suponiendo la siguiente declaración de variables en el main, indicar además cómo sería la llamada a la
función MostrarTodo().
T_DATOS vec[N];
int n_vec;
//vector de estructuras
//longitud del vector
-
Llamada a la función MostrarTodo():
-
Descripción y código de la función MostrarTodo():
Programa 4 (Examen Abril 08)
Diseñar una función BuscarValores() que reciba como argumento de entrada un vector de 10 números
reales y devuelva como resultado el valor máximo, el valor mínimo y el valor medio del vector.
-
Declaración de variables en el main() y llamada a la función BuscarValores():
-
Descripción y código de la función BuscarValores()
Programa 5 (Examen Abril 08)
Dada la siguiente definición de estructura T_PERSONA, escribir el código de las dos posibles funciones de
lectura Leer1 y Leer2, así como las llamadas correspondientes desde el programa principal.
typedef struct persona {
char nombre[N];
long int dni;
} T_PERSONA;
void Leer1(T_PERSONA *p);
T_PERSONA Leer2(void);
------------------Programa principal:
Declaración de variables:
Llamada a la función Leer1():
Llamada a la función Leer2():
Función Leer1():
Función Leer2():
2
Fundamentos de Informática
Programa 6 (Examen Abril 09)
Un instituto de meteorología quiere obtener las temperaturas máxima, mínima y media anual de todas
las ciudades del mundo. Para ello, cuenta con un vector de estructuras de tipo T_TEMP con los registros
de temperaturas de todas las ciudades. Nos piden escribir una función para crear un vector de
estructuras de tipo T_TEMP_MMM.
La dificultad viene por el hecho de que algunas ciudades registran la temperatura diariamente (365
datos), otras lo hacen semanalmente (53 datos), y otras mensualmente (12 datos), por lo tanto es
necesario basarse en el campo n_datos para saber realmente cuántos datos de temperatura hay.
Además hay que tener en cuenta que en algunas ciudades todas las temperaturas pueden ser positivas,
en otras todas negativas, y en otras puede haber positivas y negativas.
typedef struct {
char ciudad[N];
double datos[365];
int n_datos;
} T_TEMP;
typedef struct {
char ciudad[N];
double max;
double min;
double med;
} T_TEMP_MMM;
void GeneraMMM(T_TEMP vec[],int n, T_TEMP_MMM mmm[]);
La función anterior debe llamar a la función Calcula_mmm() que recibe un vector de temperaturas,
calcula y calcula la temperatura máxima, la mínima y la media:
void Calcula_mmm(double t[], int n, double *pmax, double *pmin, double *pmed);
Escribir el código de las funciones GeneraMMM() y Calcula_mmm()
Programa 7 (Examen Abril 09)
Un vector de estructuras almacena los datos de los libros de una biblioteca. La información
que se almacena de cada libro es (se utilizará una estructura de datos llamada T_LIBRO):
- Título del libro ( una cadena de caracteres )
- Autor ( una cadena de caracteres )
- ISBN (suponer que es un número entero)
Escribir una función (BuscarLibros()) para buscar cuántos libros existen en la biblioteca que
pertenezcan a un autor (el nombre del autor es un dato a enviar a la función)
Escribir el prototipo y el código de la función BuscarLibros
3
Fundamentos de Informática
Programa 8 (Examen Abril 09)
Una tienda utiliza estructuras tipo T_TODO para gestionar sus productos y almacenes y quieren separar
la información en estructuras de tipo T_PROD para definir sus productos y estructuras tipo
T_ALMACEN para gestionar su almacén (de esta manera pueden tener dos partidas del mismo
producto en dos localizaciones distintas del almacén). Nos piden una función que reciba una variable
de tipo T_TODO y construya una de tipo T_PROD y otra tipo T_ALMACEN.
typedef struct {
int id;
char nombre[N];
double precio;
int unidades;
char localizacion[M];
} T_TODO;
typedef struct {
int id;
char nombre[N];
double precio;
} T_PROD;
typedef struct {
int id;
int unidades;
char localizacion[M];
} T_ALMACEN;
Escribir el prototipo y el código de la función de transformación.
Programa 9 (Examen Abril 09)
Realizar un programa completo que utilizando un vector estático de número reales vec_real (no mayor
de 100 posiciones) construya los vectores dinámicos menores y mayores con los valores que son
inferiores a la media y superiores a la media respectivamente.
El programa debe seguir los siguientes pasos:

Solicitar la dimensión del vector, comprobando que sea válida.

Rellenar el vector vec_real utilizando la función RellenarVectorReal(). Esta función,
además de rellenar el vector, debe devolver la media de los valores introducidos.

Calcular cuántos elementos del vector son mayores que la media, y cuántos son menores.

Reservar memoria dinámica para los vectores menores y mayores

Rellenar los vectores adecuadamente utilizando las funciones RellenarMayores() y
RellenarMenores() (sólo es necesario programar la función RellenarMayores()).

Mostrar el contenido de todos los vectores utilizando la función:
void Mostrar(double v[], int n)
(que no es necesario programar).
Escribir el programa principal completo (includes, prototipos…) pero no únicamente escribir las
funciones: RellenarVectorReal() y RellenarMayores().
4
Descargar