Examen1_resuelto (2013)

Apunte Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería de Sistemas Audiovisuales - 1º curso
Asignatura FO
Año del apunte 2013
Páginas 3
Fecha de subida 18/05/2014
Descargas 2
Subido por

Vista previa del texto

Fonaments d'Ordinadors. 1Er Control grup T50 Octubre 2013 Enunciado Dada una lista de productos para un supermercado, donde cada uno se identifica por un nombre, un precio, y un porcentaje de descuento (un entero de 0% a 100%) según las siguientes estructuras: #define MAX 100 typedef struct { char nombre[MAX]; float precio; float descuento; } Tproducto; typedef struct { int nElems; /* número de productos a la venta */ TProducto lista[MAX]; } TListaProd; Queremos hacer un programa que permita insertar nuevos productos en la lista, así como mostrar todos los productos a la venta, con sus respectivos precios y precios con descuento. También, al final mostrará el precio medio y el descuento medio de todos los productos.
A partir del código que se te da al final de este examen, escribe el código que realice las siguientes funcionalidades. Hazlo en un folio aparte tal y como iría el código dentro de la parte indicada mediante comentarios. No es necesario que reescribas la definición de tipos, el main, etc...
Si necesitas usar variables que no están declaradas al inicio del main, puedes declararlas tú mismo al inicio de cada uno de los ejercicios.
Ejercicio 1 (3 puntos). Escribe el trozo de código que inserte el producto contenido en la variable nuevo al final de la lista contenida en la variable p. La lista ya está inicializada con un tamaño y unos elementos pro defecto, pero el código que hagas debería servir igualmente en cualquier lista, cualquiera que sea tu tamaño.
Ejercicio 2 (4 puntos). Escribe el trozo de código que muestre por pantalla todos los productos contenidos en p: su nombre, su precio sin descuento, y el precio que tendría si se le aplicara el descuento. Para los valores de la variable p que se da en el main() al final de este examen, se mostraría algo similar a esto: Inventario de productos: Patatas fritas. Precio: 1.50. Con descuento: 1.35 Huevos. Precio: 1.50. Con descuento: 1.28 Agua mineral. Precio: 0.55. Con descuento: 0.41 Caldo pollo. Precio: 1.90. Con descuento: 0.95 Aceite de oliva. Precio: 2.50. Con descuento: 2.38 Castanyas. Precio: 5.50. Con descuento: 4.68 Zumo de naranja. Precio: 1.50. Con descuento: 1.05 Cebolla. Precio: 0.75. Con descuento: 0.67 Vino tinto. Precio: 6.50. Con descuento: 4.88 Pan de molde. Precio: 1.00. Con descuento: 0.75 Leche. Precio: 1.15. Con descuento: 1.15 Ejercicio 3 (3 puntos). Escribe el trozo de código que calcule el precio medio y el descuento medio de todos los productos de la lista p. Para los valores de la variable p que se da en el main() al final de este examen, se mostraría algo similar a esto: Precio medio: 2.21. Descuento medio:19.09 IMPORTANTE: en el siguiente main() se da una lista de clase inicializada con algunos valores por defecto, pero vuestro código debe servir para cualquier lista, tenga el número de productos que tenga, y sean cuales sean sus nombres, precios y descuentos.
#include <stdio.h> #define MAX 100 typedef struct { char nombre[MAX]; float precio; int descuento; } Tproducto; typedef struct { int nElems; /* número de productos a la venta */ TProducto lista [MAX]; } TlistaProd; main() { TListaProd p = {10, { {"Patatas fritas", 1.5, 10}, {"Huevos", 1.5, 15}, {"Agua mineral", 0.55, 25}, {"Caldo pollo", 1.9, 50}, {"Aceite de oliva", 2.5, 5}, {"Castanyas", 5.5, 15}, {"Zumo de naranja", 1.5, 30}, {"Cebolla", 0.75, 10}, {"Vino tinto", 6.5, 25}, {"Pan de molde", 1, 25} }}; TProducto nuevo = { "Leche", 1.15, 0 }; // Define las nuevas variables que quieras // Ejercicios 1, 2 y 3 aquí. Hazlos en un folio a parte // No hace falta que copies todo este código } Solución #include <stdio.h> #define MAX 100 typedef struct { char nombre[MAX]; float precio; int descuento; } Tproducto; typedef struct { int nElems; /* número de productos a la venta */ TProducto lista [MAX]; } TlistaProd; main() { TListaProd p = {10, {{"Patatas fritas", 1.5, 10}, {"Huevos", 1.5, 15}, {"Agua mineral", 0.55, 25}, {"Caldo pollo", 1.9, 50}, {"Aceite de oliva", 2.5, 5}, {"Castanyas", 5.5, 15}, {"Zumo de naranja", 1.5, 30}, {"Cebolla", 0.75, 10}, {"Vino tinto", 6.5, 25}, {"Pan de molde", 1, 25}}}; TProducto nuevo = { "Leche", 1.15, 0 }; int i,j; char leido; float precioMedio, descuentoMedio; // Ejercicio 1 p.lista[p.nElems] = nuevo; p.nElems++; // Ejercicio 2 printf("Inventario de productos:\n"); for(i = 0 ; i < p.nElems ; i++) { j = 0; while(p.lista[i].nombre[j] != '\0') { printf("%c",p.lista[i].nombre[j]); j++; } printf(". Precio: %.2f. Con descuento: %.2f\n", p.lista[i].precio, p.lista[i].precio * (1-(float)p.lista[i].descuento/100)); } // Ejercicio 3 precioMedio = descuentoMedio = 0; for(i = 0 ; i < p.nElems ; i++) { precioMedio += p.lista[i].precio; descuentoMedio += p.lista[i].descuento; } printf("\nPrecio medio: %.2f. Descuento medio:%.2f\n", precioMedio/p.nElems, descuentoMedio/p.nElems); } ...