[C con Clase] ayuda con el siguiente ejercicio error al compilar
Steven Richard Davidson
stevenrichard.davidson en gmail.com
Mie Ene 25 13:06:06 CET 2012
Hola Jorge,
2012/1/25 Jorge Yonusg <jorgeyonusg en gmail.com>
Tienes varios errores, que podrías corregirlos tú mismo, siguiendo los
mensajes que te da el compilador. 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
> //monitor2 de 19 pulgadas 1500
> //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.
>
> #include <stdio.h>
> #include <conio.h>
>
> #define nRETIRPF 0.15
>
> int main(void)
>
> {
>
> int opc,venta,combo,monitor;
>
'opc' debería ser de tipo 'char', ya que la usas con 'scanf()' más abajo.
Además, no usas la variable 'combo', así que puedes eliminarla.
const a=1700, b=2100, c=2500, p=1000, l=1500, m=0, n=0, imp=550;
>
>
En C, ya no se acepta el 'int' como el tipo por defecto implícito y no se
permite definir entidades sin escribir explícitamente un tipo de dato. Esto
significa que debes indicar 'int', o mejor dicho 'const int'.
Sin embargo, modificas 'imp' en una sentencia de 'scanf()', por lo tanto
'imp' NO puede ser constante. Deberías definirla aparte:
int imp = 550;
venta=0
>
Esto es un error. Todas las sentencias terminan en un punto y coma, al
menos que sea un bloque de sentencias formado por una pareja de llaves {}.
Lo anterior sería así,
venta = 0;
printf("Los Siguientes combos a vender son: Combo1:1700, Combo2:2100,
> Combo3:2500 \n");
> printf("Por Favor elija su combo: Escriba a para combo1, b para
> combo2, c para combo3 \n");
> scanf("%c", &opc);
> if(opc=='a'){
> venta=venta+a}
> if(opc=='b'){
> venta=venta+b}
> if(opc=='c'){
> venta=venta+c}
>
>
Aquí tienes el mismo error: escribe el punto y coma al final de cada
asignación; esto es,
venta += a;
venta += b;
venta += c;
También date cuenta que es mejor acostumbrarse a usar el operador de suma y
asignación += que realizar dos operaciones: suma y luego asignación.
Sugiero que uses 'if/else' en este caso, ya que 'opc' no cambiará de valor
durante estas sentencias; así que es imposible que 'opc' contenga 'a' e
inmediatamente después contenga 'b'; por ejemplo. Por otra parte, podrías
usar un 'switch/case' para mayor legibilidad, ya que la lógica se basa en
el valor guardado en 'opc'. El esquema sería el siguiente:
switch( opc )
{
case 'a': ....
case 'b': ....
case 'c': ....
}
> printf("Los Monitores a la Venta que complementan el combo
> son: Monitor1 de quince pulgadas: 1000, Monitor2 de diecinueve pulgadas:
> 1500 \n");
> printf("Por Favor elija su Monitor: Escriba p para Monitor1,
> l para Monitor2,m para nigún monitor \n");
> scanf("%i", &monitor);
> if(monitor=='p'){
> venta=venta+p}
> if(monitor=='l'){
> venta=venta+l}
> if(monitor=='m'){
> venta=venta+m}
>
>
Aquí tenemos el mismo tipo de error y el mismo problema de diseño que antes.
> printf("Todos los Combos Incluyen teclado, mouse y cornetas,
> adicionalmente tenemos a la venta: Impresora precio 550.\n");
> printf("Quiere su combo con impresora: Escriba s si la desea,
> sino escriba n \n");
> scanf("%i", &imp);
>
Aquí está el problema que comenté anteriormente, si dejas que 'imp' sea
constante. Si la has definido como una variable, entonces ya no tenemos
problemas.
if(imp=='s'){
> venta=venta+imp}
> if(imp=='n'){
> venta=venta+n}
>
>
Aquí, lo mismo que antes: escribe el punto y coma al final.
if venta>=3500{
>
Esto es un error. La sentencia 'if' SIEMPRE requiere paréntesis que
engloben a la condición a comprobar. Por lo tanto, esto es,
if( venta >= 3500 )
printf("Su factura: %i\n", venta);
> printf("Ud tiene un Pendrive Kingston 8GB de Obsequio por su
> compra \n");
> }
> if venta<3500{
>
Aquí ocurre lo mismo que antes: escribe los paréntesis.
printf("Su factura: %i\n", venta);
> printf("Gracias por su compra \n");
> }
>
> getch();
> return 0;
> }
>
>
Viendo los tipos de errores en el código fuente, necesitas volver a los
temas básicos de la sintaxis de C.
Espero que esto te ayude.
Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120125/d2ecf15a/attachment.html>
Más información sobre la lista de distribución Cconclase