Hola comunos, vengo a pedir su ayuda en la solución de un problema de una tarea de C, el cual pide el calculo de un descuento en la compra de granos básicos (frijol o arroz), he de decir que comenzamos a ver C hace unas semanas, por lo cual no hemos abarcado mucho contenido, y el catedratico hizo enfasis en solo usar los recursos vistos en clase hasta la fecha.. llamese toda la estructura básica del codigo, switch, libreria math.h, y funciones solo medio tuvimos una clase la semana pasada, pero no entendi mucho la idea, y creo que es lo que me está causando conflictos en este momento, les dejare el ejercicio, que es algo extensa la descripción de lo que pide, y más abajo el codigo que he trabajado, sientanse libres de hacer las criticas y correcciones que sean necesarias.
Aclaraciones: el ultimo printf que hice en el codigo, solo lo hice para hacer la prueba si me devolvia el valor con descuento, pero no lo hizo, al principio que solo declare las variables me tiraba valores como -0.000015
Despues inicialize algunas variables en 0 y me comenzo a dar -0.000
Problema 1.
La niña Conchita tiene una tienda de granos básicos en el centro. Ella vende al mayoreo; dependiendo de las libras que compren sus clientes ella realiza un descuento.
● Si sus clientes le compran 50 o más libras de frijol ella realiza un 10% de descuento.
● Si sus clientes le compran 65 o más libras de arroz ella realiza un 11% de descuento. La niña Conchita tiene un máximo de venta de libras al día. Ella compra 500 libras de frijol y 500 libras de arroz para vender diarias; tomar en cuenta que la niña Conchita siempre vende todas sus libras de frijol y de arroz. Para tener un mejor control de sus ingresos la niña Conchita le solicita a usted que le realice un programa en lenguaje C (sí, ella lo solicita en lenguaje C).
Especificaciones.
● El programa debe mostrar un menú parecido al siguiente:
○ ***Programa para control de ingresos de granos básicos***
■ 1. Venta de frijol.
■ 2. Venta de arroz.
■ 3. Salir.
● Si el usuario ingresa la opción de Venta de frijol, el programa solicitará la
cantidad de libras de frijoles a vender.
● Lo mismo aplica cuando se seleccione la opción de Venta de arroz.
● Una vez se ingresen las libras de frijol o de arroz el programa entregará el total
de la venta con el descuento incluido (si aplica descuento).
● El programa mostrará el menú una y otra vez dejando que el usuario puede
ingresar la opción que desee.
● Hay dos casos donde el menú puede dejar de mostrarse: cuando se agoten las
libras de frijol y las libras de arroz (las dos) o cuando el usuario seleccione la
opción de salir.
● Si se agotan las libras de frijol, el sistema dejará de mostrar la opción de menú
Venta de frijol, lo mismo aplica para la opción de Venta de arroz.
● Cuando el programa finalice, el programa deberá mostrar el total de ingresos por
la venta de frijoles, total de ingresos por la venta de arroz y el total de ganancia
para la niña Conchita (ingresos - costos).
Notas.
● Asumir que el precio al público de la libra de frijol es $0.75 y el de la libra de
arroz es $0.65. El costo para la niña conchita de la libra de frijol es $0.40 y el
costo de la libra de arroz es $0.35.
● El programa siempre iniciará con 500 libras de frijol y 500 libras de arroz.
● Si el usuario ingresa una cantidad mayor de libras de frijol o arroz que las que
tiene el sistema, el programa deberá mostrar un mensaje de error informando
que las libras sobrepasan a las libras existentes, ejemplo: Las libras de
<grano_básico> actuales son <cantidad_actual> usted desea vender
<cantidad_deseada>. Donde <grano_básico> es el nombre del grano básico
agotado, <cantidad_actual> es la cantidad actual de dicho grano básico y
<cantidad_deseada> es la cantidad que se desea vender.
● Realizar una función llamada menu, que muestre el menú del programa y que
devuelva la opción seleccionada por el usuario.
● Realizar una función llamada calculoDescuento que reciba como parámetro
la cantidad de grano básico a vender y un letra a si es arroz o f si es frijol, la
función devolverá el precio con descuento incluido si es que aplica sino devolver
sólo el precio por las libras de grano básico.
● Realizar un procedimiento llamado disminuirLibras que reciba como parámetro
la cantidad vendidas de grano básico y una letra a si es arroz o f si es frijol, el
procedimiento restará correspondientemente la cantidad vendida a una variable
global que contiene la cantidad máxima de libras de frijol o de arroz. Si es frijol
el procedimiento restará la cantidad vendida a la variable global que contiene
la cantidad máxima de libras de frijol; si es arroz el procedimiento restará la
cantidad vendida a la variable global que contiene la cantidad máxima de libras
de arroz.
● El programa debe validar todos los datos.
● El programa debe imprimir los datos de tipo real con 2 decimales.
#include "stdio.h"
#define LIMPIAR while(getchar() != '\n');
float calculoDescuento(f,a){
float libraCompradaF=0.0, libraCompradaA=0.0, precioFinalF=0.0, precioFinalA=0.0;
libraCompradaF=0.75*f;
libraCompradaA=0.65*a;
if(f > 50)
precioFinalF= libraCompradaF-(libraCompradaF*0.10);
else
precioFinalF = libraCompradaF;
if(a > 65)
precioFinalA= libraCompradaA-(libraCompradaA*0.11);
else
precioFinalA = libraCompradaA;
}
int main (void){
int decision, f, a, total_frijol=500, total_arroz=500;
float precioFinalF, precioFinalA;
do{
printf("Programa para control de ingresos de granos básicos:\n");
printf("\t1. Venta de frijoles\n");
printf("\t2. Venta de arroz\n");
printf("\t3. Salir\n");
scanf("%d", &decision);
switch(decision){
case 1:
printf("Ingrese cantidad de libras de frijol que se desea comprar\n");
scanf("%d", &f);
calculoDescuento(f);
break;
case 2:
printf("Ingrese cantidad de libras de arroz que se desea comprar\n");
scanf("%d", &a);
calculoDescuento(a);
break;
case 3:
printf("Gracias por usar el programa.\n");
break;
default:
printf("Ingrese una opcion valida (1,2 o 3)\n");
break;
}
}while (decision != 3);
printf("El precio con descuento es %.2f \n",precioFinalF);
return 0;
}