ejercicio en c++

Iniciado por cesar ramirez, 8 Diciembre 2016, 01:25 AM

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

cesar ramirez

hola programadores

tengo un ejercicio en c++ y la verdad soy nuevo con c++ ya que solo manejo c#, se que en este foro ay buenos programadores habilidosos que me pueden dar una mano se los agradecería de antemano este es el ejercicio.


El señor Pipe Peláez tiene un granero en la plaza de las Nieves, distribuye Arroz,
Frijol, Garbanzo, Arveja, Cebada y Maíz, a razón de $2500.oo libra. Si un cliente
compra más de 25 libras le descuenta el 5% y si compra más de 35 le descuenta
el 10%.
Este señor quiere contratar a Elías, Álvaro y Rosa como vendedores a los cuales
les da el 2% de comisión sobre las ventas.
Se encuentra preocupado porque no sabe cómo controlar los movimientos que
realiza en su granero y en algunas ocasiones le ha pagado más dinero del que se
debe a sus empleados. El cree que sus problemas se acaban, con el desarrollo de
un programa en C++.

jvm1994

Asumo que ya debes estar manejando:
1. Estructura de datos.

2. Switch.

3. Estructuras repetitivas.

4. Condicionales.

5. Algo de aritmetica básica como calcular un porcentaje.

6. Mínimamente una idea de como buscar una referencia en función de una coincidencia.

Vas a tener que compartir algo de tu código, en el foro fomentamos al desarrollo de nuevos programadores, por lo que no hacemos tareas.

Ahora si tu pregunta es que hacer?

En un principio comenzaría planteando las entidades necesarias como estructuras de datos:


typedef struct{
float gananciaGranja;
int librasTotalesVendidas;
}eGranja;

typedef struct{
char nombre[50];
float gananciaVendedor;
}eVendedor;

// Esto es un ejemplo, yo lo haría completamente distinto
// Pero cuando me quiera dar cuenta te voy a terminar codeando todo el proyecto
// Y no es la idea.


Una vez que tengas las entidades planteadas deberías pensar en el funcionamiento de tu programa... todo esto en función de las necesidades que plantea el granjero.

Das de alta tus tres vendedores.

eVendedor elias;
eVendedor albaro;
eVendedor rosa;


Ahora vas a tener que hacer un menú que muestre las opciones posibles.


char seguir = 's'
int opcion;

while(seguir != 's')
{
   //imprimir opcion uno - Vender producto.
   // imprimir opcion dos - Ver montos facturados. (Imprimir granja.ganancia)
   // salir (Cambiar la variable seguir a 'n';

   // Aca deberías pedir con CIN la opcion.

  switch(opcion)
  {
   case 1: // En caso de que la opcion sea uno.
   break;
   case 2: // En caso de que la opcion sea dos.
   break;
   case 3: // Salir.. la opcion seria tres.
   seguir = 'n';
   exit(1);
  }


Ahora en funcion de la opcion deberían pasar ciertas cosas.. por ejemplo en la opcion 1 deberías poner el algoritmo de VENTA.

Ejemplo de algoritmo de venta:

1. Pedir el nombre del vendedor...
Comparar con un if si el nombre es el de alguno de nuestros 3 vendedores, si no lo es tira error y sale del flujo.
- En caso de que sea, hay que dejarlo almacenado por que lo vamos a usar.

2. Preguntar la cantidad de libras que se desean vender.
Luego con esto vamos a evaluar si es menor a 25, si es mayor a 25 o si es mayor a 35.

3. Calcular el monto total y a ese monto aplicarle los descuentos necesarios (Para esto utilizamos un if que evalue la cantidad de libras compradas, de esta manera sabremos que descuento aplicarle)

Además se deberá calcular:

- Sobre el monto que se obtiene luego del descuento, el monto que de dinero que obtendrá la granja y el monto que obtendrá el vendedor.

Entonces acceder a el campo de la entidad granja y Sumarle el monto obtenido (Debe tener descontada la comision del vendedor)

Y además utilizando uno que otro IF anidado encontrar con el nombre cual de las tres estructuras es la que corresponde al vendedor, una vez encontrada acceder al campo correspondiente y SUMARLE el monto que ganó el vendedor con esa venta.

Además algo que olvidé al principio, vas a tener que inicializar los campos de ganancias en 0 (Siendo que la memoria contiene valores basura.. y te va a devolver cualquier número).

Intenté explicarte como hacerlo sin recurrir a otros recursos, hoy existen prácticas mucho más simples, con decirte que eso se puede hacer en unos pocos pasos.. pero bueno, todos tenemos que pasar por eso, a usar la cabeza.
"La posibilidad de crear tu mundo."

int main()
{
eMundo * Own = world_new();
if(Own != NULL)
{
    world_create(Own);
}

return 0;
}

cesar ramirez

#2
hola amigo en verdad gracias por esta ayuda que me acabas de ofrecer , te lo agradezco , lo que busco es otra forma de desarrollar el ejercicio, a continuación comparto el código que desarrolle .


#include <stdio.h>

#include <conio.h>

#include <iostream>

int seleccion, producto,cantidad, cod_vendedor,cantidad_1, cantidad_2,cantidad_3;

double precio=2500;

double val_compra1, val_compra2,val_compra3, cm_elias, cm_alvaro, cm_rosa, total;

double cmt_elias;

int main()

{

while (seleccion!=3){

printf("\t\t================================\n\n");

printf("\t\t  INGRESE EL PRODUCTO DESEADO\n\n");

printf("\t\tArroz..........................1\n\n");

printf("\t\tGarbanzo.......................2\n\n");

printf("\t\tFrijol.........................3\n\n");

printf("\t\tArveja.........................4\n\n");

printf("\t\tCebada.........................5\n\n");

printf("\t\tMaiz...........................6\n\n");

printf("\t\t================================\n\n");

printf("\t\t Digite el tipo de producto: ");

scanf("%d",&producto);

while(producto>6||producto <1){

printf("\t\t Dato errado\n");

printf("\t\t Digite el tipo de producto: ");

   scanf("%d",&producto);

}

printf("\t\t Digite la cantidad a comprar: ");

scanf("%d",&cantidad);

printf("\t\t     \n");

printf("\t\t      VENDEDORES DEL GRANERO\n");

printf("\t\t_______________________________________\n");

printf("\t\tELIAS............................1\n\n");

printf("\t\tALVARO...........................2\n\n");

printf("\t\tROSA.............................3\n\n");

printf("\t\t Digite codigo del vendedor: ");

scanf("%d",&cod_vendedor);



if (cod_vendedor==1&&cantidad>25){

cantidad_1=cantidad;

val_compra1=(cantidad_1*precio*0.95);

cm_elias=(val_compra1*0.02);

}

if (cod_vendedor==2&&cantidad>25){

cantidad_2=cantidad;

val_compra2=(cantidad_2*precio*0.95);

cm_alvaro=(val_compra2*0.02);

}

if (cod_vendedor==3&&cantidad>25){

cantidad_3=cantidad;

val_compra3=(cantidad_3*precio*0.95);

cm_rosa=(val_compra3*0.02);

}

if (cod_vendedor==1&&cantidad>=35){

cantidad_1=cantidad;

val_compra1=(cantidad_1*precio*0.90);

cm_elias=(val_compra1*0.02);

}

if (cod_vendedor==2&&cantidad>=35){

cantidad_2=cantidad;

val_compra2=(cantidad_2*precio*0.9);

cm_alvaro=(val_compra2*0.02);

}

if (cod_vendedor==3&&cantidad>=35){

cantidad_3=cantidad;

val_compra3=(cantidad_3*precio*0.9);

cm_rosa=(val_compra3*0.02);

}



if (cod_vendedor==1&&cantidad<=25){

cantidad_1=cantidad;

val_compra1=(cantidad_1*precio);

cm_elias=(val_compra1*0.02);

}

if (cod_vendedor==2&&cantidad<=25){

cantidad_2=cantidad;

val_compra2=(cantidad_2*precio);

cm_alvaro=(val_compra2*0.02);

}

if (cod_vendedor==3&&cantidad<=25){

cantidad_3=cantidad;

val_compra3=(cantidad_3*precio);

cm_rosa=(val_compra3*0.02);

}



printf("\t\t          SUB MENU\n");

printf("\t\t----------------------------------\n");

printf("\t\tContinuar......................1\n\n");

printf("\t\tTOTALES........................2\n\n");

printf("\t\tSALIR..........................3\n\n");

printf("\t\tEscriba la opcion deseada: ");

scanf("%d",&seleccion);



if (seleccion==2){

total=(val_compra1+val_compra2+val_compra3);

printf("\t\t         TOTALES\n");

printf("\t\t---------------------------------\n");

printf("\t\tLa comision de Elias es: $%lf \n\n",cm_elias);

printf("\t\tLa comision de ALvaro es:$%lf \n\n",cm_alvaro);

printf("\t\tLa comision de Rosa es: $%lf \n\n",cm_rosa);

printf("\t\tEl total de compras es: $%lf\n\n", total);

{

cm_elias=0;

cm_alvaro=0;

cm_rosa=0;

cmt_elias=0;

total=0;

}

}

if (seleccion==1){

cmt_elias=(cmt_elias+cm_elias);



}

}

}



Mod: Los códigos deben ir en etiquetas GeSHi, el titulo del tema debe ser descriptivo, modificalo

jvm1994

A ver, la manera en la que utilizas los IFs, podrías buscar una manera más optima.. así no se consumen tantos recursos. (Se lo considera una buena práctica).

Además podrías separar el código en "Funciones", también llamadas módulos de programa, de esta manera podrías modificar el código sólo modificando un sector, reutilizar código e incluso transformar un problema en pequeñas tareas.

Utilizar estructuras de datos y almacenar datos relevantes para los informes del programa... con diversos campos, llamar a tus entidades y aplicarles propiedades.

Es decir por ejemplo el vendedor Alvaro dispone de los campos.
1. Nombre
2. Monto de dinero obtenido.
3. Porcentaje de comision.

Sería más organizado.

Ahora tal como te mencioné, esto podrías hacerse utilizando un ArrayList... sería mucho más optimo, práctico, sobretodo cuando los programas toman dimensiones mayores.

De esa forma podrías hacerlo "de otra manera", pero mi duda es, te surge algún problema? O simplemente querías saber si hay "otra manera de hacerlo" ??
"La posibilidad de crear tu mundo."

int main()
{
eMundo * Own = world_new();
if(Own != NULL)
{
    world_create(Own);
}

return 0;
}

cesar ramirez

si compañero, lo que busco es otra forma de desarrollarlo ,para que el ejercicio sea mas practico o mas fácil de entender  ya que este no cumple las espectativas

jvm1994

Las funciones son principalmente utilizadas para reducir la cantidad de líneas de código, transformar problemas en tareas, re-utilizar el código escrito, tornar la construcción del programa a una forma modular y acotar su corrección a unas pocas líneas.

Una de las principales herramientas de un programador.

Ahora si te interesa ser mucho más organizado, optimo y eficiente tu código deberías introducirte a el paradigma orientado a objetos.

Objetos = Propiedades + Métodos.

De esta forma, aplicando el método de abstracción correspondiente podrías escribir código re-utilizable y óptimo.

No sé que más decirle.
"La posibilidad de crear tu mundo."

int main()
{
eMundo * Own = world_new();
if(Own != NULL)
{
    world_create(Own);
}

return 0;
}