[C con Clase] ayuda con el siguiente ejercicio error al compilar
Steven Richard Davidson
stevenrichard.davidson en gmail.com
Mie Ene 25 17:18:07 CET 2012
Hola Jorge,
2012/1/25 Jorge Yonusg <jorgeyonusg en gmail.com>
> Muchísimas gracias amigo Steven tomare el mas importante de tus consejo y
> me devuelvo a sentencias básicas,
> hice los arreglos y correcciones en la parte de los monitores no deja
> seleccionar y suma todo ruego me expliques como solucionar esto.
>
>
Veamos el código fuente.
> //Una tienda de articulos de computación, requiere calcular su venta según
> los
> //combos que se puedan ensamblar, sabiendo que tenemos 2 tipos de
> Monitores
> //monitor1 de 15 pulgadas 1000 bsf
> //monitor2 de 19 pulgadas 1500 bsf
> //tres combos de CPU
> //teclado, mouse y cornetas respectivamente y los precios son de
> //combo1 1700
> //combo2 2100
> //combo3 2500
> //adicionalmente una
> //impresora 550 se le
> //obsequiara un pendrive si el combo vendido supera los 3500 bsf.
>
> #include <stdio.h>
> #include <conio.h>
>
> #define nRETIRPF 0.15
>
> int main(void)
>
> {
> char opc,monitor,imp;
> int venta;
> const int a=1700, b=2100, c=2500, p=1000, l=1500, m=0, n=0, s=550;
>
>
> venta=0;
>
> printf(" \n");
> printf("Los Siguientes combos a vender son: \n");
> printf("Combo1:1700Bsf, Combo2:2100Bsf, Combo3:2500Bsf \n");
> printf(" \n");
> printf(" \n");
> printf("Por Favor elija su combo: \n");
> printf("Escriba a para combo1, b para combo2, c para combo3 \n");
> printf(" \n");
> scanf("%c", &opc);
> switch(opc)
> {
> case 'a': venta=venta+=a;
> case 'b': venta=venta+=b;
> case 'c': venta=venta+=c;
>
En primer lugar, lo que te interesa es hacer esto:
venta += a;
y no reasignar a 'venta' con su propio valor. Aparte de que no es nada
lógico, puede provocar errores de programación en cuanto al valor correcto
de 'venta'.
En segundo lugar, 'switch/case' funciona en base a UN salto al caso
correcto, y NO un salto al caso adecuado y luego otro salto fuera del
'switch'. Por lo tanto, si queremos el segundo comportamiento, usando
'switch/case', indicamos 'break' entre cada caso, para que salte fuera de
esta sentencia de control. Esto es,
case 'a':
venta += a;
break;
case 'b':
venta += b;
break;
case 'c':
venta += c;
break;
}
>
> printf(" \n");
> printf("Los Monitores a la Venta que complementan el combo son: \n");
> printf("Monitor1 de 15 pulgadas: 1000Bsf, Monitor2 de 19 pulgadas: 1500Bsf
> \n");
> printf(" \n");
> printf(" \n");
> printf("Por Favor elija su Monitor: \n");
> printf("Escriba p para Monitor1, l para Monitor2,m para nigún monitor \n");
> printf(" \n");
> scanf("%c", &monitor);
> switch(monitor)
> {
> case 'p': venta=venta+=p;
> case 'l': venta=venta+=l;
> case 'm': venta=venta+=m;
>
Aquí tienes el mismo tipo de problema.
}
>
> printf(" \n");
>
> printf("Todos los Combos Incluyen teclado, mouse y cornetas,
> adicionalmente \n");
> printf("tenemos a la venta: Impresora precio 550Bsf.\n");
> printf(" \n");
> printf(" \n");
> printf("Quiere su combo con impresora: Escriba s si la desea, sino escriba
> n \n");
> scanf("%c", &imp);
> switch(imp)
> {
> case 's': venta=venta+=s;
> case 'n': venta=venta+=n;
>
Aquí, lo mismo.
}
>
> if (venta>=3500) //igual errores de sintaxis parentesis
> {
> printf("Su factura: %i\n", venta);
> printf("Ud tiene un Pendrive Kingston 8GB de Obsequio.Gracias
> por su compra \n");
> }
> if (venta<3500) //igual errores de sintaxis parentesis
>
Esto es sintácticamente correcto, pero no es muy práctico. Si comprobamos
una condición y resulta ser falsa, entonces no tiene sentido comprobar si
su condición negativa (opuesta) es verdadera; lógicamente, así es. Por esta
razón, existe el vocablo 'else'.
Recomiendo usar 'if/else'. Esto es,
if( venta >= 3500 )
{
...
}
else // lógicamente, venta < 3500
{
...
}
{
> printf("Su factura: %i\n", venta);
> printf("Gracias por su compra \n");
> }
>
> getch();
> return 0;
> }
>
>
Espero que esto te oriente.
Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120125/70be1326/attachment.html>
Más información sobre la lista de distribución Cconclase