Autor Tema: Problemas con un ejercicio en C (duda acerca del uso de funciones)  (Leído 2887 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Mana

  • Trade Count: (0)
  • Sv Full Member
  • *
  • Thank You
  • -Given: 29
  • -Receive: 35
  • Mensajes: 559
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

Citar
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.

Código: [Seleccionar]
#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;
}
« Última Modificación: noviembre 07, 2012, 08:59:27 pm por Mana »

Desconectado loke

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 5
  • -Receive: 31
  • Mensajes: 245
Re:Problemas con un ejercicio en C (duda acerca del uso de funciones)
« Respuesta #1 : noviembre 07, 2012, 09:42:55 pm »
Si te sirve hice medio la parte de el proceso, solo tendrias que agregar un variable que comienze con las 500 libras y hacer que las descuente de cada venta ademas de poner una condicion para cuando llegue a 0.
Código: [Seleccionar]
if(op==1)
{
printf("cantidad de frijol comprada: ");
scanf("%d",&cf);
vf=cf*p1;

if(cf>=50)
{
v1=vf-(vf*d);
printf("%.2f",v1);
}
else
printf("%.2f",vf);
}

if(op==2)
{
printf("cantidad de arroz comprada: ");
scanf("%d",&ca);
va=ca*p2;

if(ca>=65)
{
v2=va-(va*d2);
printf("%.2f",v2);
}
else
printf("%.2f",va);
}

Desconectado chrly

  • Trade Count: (0)
  • Sv Full Member
  • *
  • Thank You
  • -Given: 191
  • -Receive: 14
  • Mensajes: 831
Re:Problemas con un ejercicio en C (duda acerca del uso de funciones)
« Respuesta #2 : marzo 28, 2014, 03:30:43 pm »
buenas señores eh llegado a este pequeño bache de la U creo que no comprendo bien este lenguaje. pues les dire este ejercicio pide 12 valores enteros positivos
y luego determinar las siguientes estadisticas.

calcular el promedio de todo el listado. (esta Ya lo hice )

mediana General del listado (creo que vienen siendo lo mismo que el promedio)  :yao_ming:

determinar cuantos de estos datos son menores que el promedio.?

aqui les dejo el codigo. solo necesito que me ayuden como agregar esa otra funcion. que seria tomar el promedio y compararlo con los 12 datos y ver cuales de los 12 datos son menores que el promedio.  :huh:

OLVIDE PONER EL CODIGO
Código: [Seleccionar]
#include <iostream>
#include <stdlib.h>
#include <stdio.h>

/*Introdusca 12 valores enteros positivos (no ceros)*/
using namespace std;
int main() {
int numero;int total=0;
for(int i=0;i<12;i++){
cout<<"Introduzca 12 valores "<<i+1<<" numero: ";
cin>>numero;
total+=numero;
}
 
cout<<" su Promedio es: "<<total/12.<<endl;

system("pause");

return EXIT_SUCCESS;
}
       
« Última Modificación: marzo 28, 2014, 03:39:12 pm por chrly »
Todo lo que hay que aprender...
que cosas...
asusss ordenes jefeeee. XD mi capitan ::yaoming::

Desconectado Jaru

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 782
  • -Receive: 1555
  • Mensajes: 13248
  • -text
Re:Problemas con un ejercicio en C (duda acerca del uso de funciones)
« Respuesta #3 : marzo 28, 2014, 03:41:40 pm »
saca el promedio

mete los datos en un arreglo

recorre el arreglo

haces la comparacion:

No recuerdo la sintaxis de C asi que te la dejo en javascript:

Código: (javascript) [Seleccionar]
// numeros -> es un arreglo que contiene los numeros introducidos

numeros_menores = new Array();
var j = 0;
var i = 0;

for(i=0; i<numeros.length; i++){

if(numeros[i] < promedio){
   numeros_menores[j] = numeros[i];
   j++;
}

}
N/A

Desconectado chrly

  • Trade Count: (0)
  • Sv Full Member
  • *
  • Thank You
  • -Given: 191
  • -Receive: 14
  • Mensajes: 831
Re:Problemas con un ejercicio en C (duda acerca del uso de funciones)
« Respuesta #4 : marzo 28, 2014, 04:53:59 pm »
Gracias naruto probare haver si asi anda bien-...-
:shock:
no le  veo el codigo de programacion a eso.  :dumb:



Todo lo que hay que aprender...
que cosas...
asusss ordenes jefeeee. XD mi capitan ::yaoming::

Desconectado Ideas

  • Trade Count: (3)
  • Sv Member
  • ***
  • Thank You
  • -Given: 16
  • -Receive: 20
  • Mensajes: 313
  • Jujuy huyo con mis riguas!!
Re:Problemas con un ejercicio en C (duda acerca del uso de funciones)
« Respuesta #5 : marzo 28, 2014, 06:22:24 pm »
Código: [Seleccionar]
#include <iostream>

void checkValues(float prom, float (&values)[5]);

int main() {
float elements[] = {1,2,3,4,5};
checkValues(4, elements);
return 0;
}


void checkValues(float prom, float (&values)[5])
{
size_t total_elements = sizeof(values) / sizeof(values[0]);
for(size_t i=0; i<total_elements; ++i)
{
if(values[i] < prom)
std::cout<<values[i]<<", is less than prom."<<std::endl;
}
}

Código: [Seleccionar]
http://ideone.com/Um6ESn
Juass