Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Shett en 15 Noviembre 2016, 03:30 am



Título: Ayuda con problema básico lenguaje C.
Publicado por: Shett en 15 Noviembre 2016, 03:30 am
Bueno la verdad trate de hacerlo hasta donde pude, me cuesta entender el while (se que tengo que volver a leer la variable pero nose en donde)  todavía.Me gustaría que me ayuden a completarlo(para entenderlo),  y también quería saber¿esta bien la parte del vector para mostrar el total?. Muchas gracias. Si no entienden algo de lo que hice me avisan.

Código
  1. /*En una casa de ropa se ofrece tres prendas en promocion. Las tres prendas posibles con sus repectivos precios son:
  2. 1- Camisa, la cual cuesta $400.
  3. 2-Pantalon, el cual cuesta $1000.
  4. 3-Campera, la cual cuesta $1500.
  5.  
  6. De acuerdo a la opcion elegida tenemos la posibilidad de elegir la promocion para dicha opcion o simplemente tomar solo la opcion elegida.
  7.  
  8.   -Camisa.
  9.    a) Camisa+remera ($200 mas).
  10.    b) Camisa sola.
  11.    
  12.     -Pantalon.
  13.     a)Pantalon+medias ($100 mas).
  14.   b) Pantalon solo.
  15.  
  16.   -Campera.
  17.    a)Campera+camisa ($200 mas):
  18.     b) Campera sola.
  19.    
  20.     Informar el precio final de acuerdo a las opciones elegidas, sumando los adicionales correspondientes segun la promocion seleccionada. Esto se debera almacenar en un vector de 3 posiciones que contendra los saldos totales de las
  21.     opciones. Asi mismo se informara por separado a cuanto asciende el saldo total de la compra.*/
  22.  
  23.  
  24.  
  25.  
  26.     #include<stdio.h>
  27.     #include<conio.h>
  28.  
  29.     int main (){
  30.  
  31.     int cat=0,opc=0,vec[3];
  32.     char c;
  33.  
  34.     printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
  35.     scanf ("%c",&c);
  36.  
  37.         while (c=='s')
  38.         {
  39.  
  40.  
  41.  
  42. printf ("\t\tTienda de ropa.");
  43.     printf ("\nCatalogo de productos.");
  44.     printf ("\n Seleccione la opcion que desee a continuacion: \n 1.Camisa. \n2.Pantalon. \n3.Campera.");
  45.  
  46.     switch (cat)
  47.     {
  48.     case 1: printf ("\n La opcion elegida posee la siguiente promocion: Camisa+remera ($200 mas), para seleccionar la promocion presione la tecla 1, y cualquier otra tecla para el producto solo.");
  49.             scanf ("%i",&opc);
  50.             if(opc==1)
  51.             {
  52.             vec[1]=600;
  53.  }
  54.  else
  55.  {
  56.   vec[1]=400;
  57.  }
  58.     break;
  59.  
  60.     case 2: printf ("\n La opcion elegida posee la siguiente promocion: Pantalon+medias ($100 mas), para seleccionar la promocion presione la tecla 1, y cualquier otra tecla para el producto solo.");
  61.             scanf ("%i",&opc);
  62.             if(opc==1)
  63.             {
  64.             vec[2]=1100;
  65.  }
  66.  else
  67.  {
  68.   vec[2]=1000;
  69.  }
  70.     break;
  71.     case 3: printf ("\n La opcion elegida posee la siguiente promocion: Campera+camisa ($200 mas), para seleccionar la promocion presione la tecla 1, y cualquier otra tecla para el producto solo.");
  72.             scanf ("%i",&opc);
  73.             if(opc==1)
  74.             {
  75.             vec[3]=1700;
  76.  }
  77.  else
  78.  {
  79.   vec[3]=1500;
  80.  }
  81.     break;
  82.  
  83.        default: printf ("\nOpcion ingresada invalida");
  84.  
  85.  
  86. }
  87.  
  88. }
  89.  
  90.      int tot=0;
  91.  
  92.     tot=vec[1]+vec[2]+vec[3];
  93.     printf ("El total a pagar es de:$%i",tot);
  94.  
  95.  
  96.     getch ();
  97.     return 0;
  98. }

MOD: Etiqueta GeSHi.


Título: Re: Ayuda con problema básico lenguaje C.
Publicado por: Beto Ventura en 15 Noviembre 2016, 07:08 am
Un consejo, que uses nombres de variables más claro. Si tu código es autocomentado resulta más rápida la tarea de depuración.
Te dejo este video que espero te sirva para despejar tus dudas sobre el bucle while

jObYgEhC4vs

¿esta bien la parte del vector para mostrar el total?

Un vector, arreglo o array es una variable que contiene elementos del mismo tipo uno consecutivo al otro, comenzando con su primer elemento en la posición 0. Acá en tu programa vos estás declarando un arreglo del tipo entero de 3 elementos, al final de tu programa sumas todos los elementos y guardas ese valor en la variable "tot". El error en esa parte de tu programa es que estás sumando un elemento de más que no corresponde a tu arreglo.
La correción seria la siguiente:

Código
  1. tot= vec[0]+vec[1]+vec[2];

También tenes el mismo error dentro de los case del switch. Básicamente, tene en cuenta que la primer posición siempre es 0  y no 1, y que la ultima posición del arreglo, en este caso, seria 2 y no 3.

Por último hay un par de errores para mi gusto que tienen que ver con la manera en la que escribís tu código, pero es porque yo personalmente soy medio hincha bolas con unas cosas jeje, si querés hablame por mensaje privado y te las comento. Es mejor que las corrijas desde temprano así no te mal acostumbras.[/pre]


Título: Re: Ayuda con problema básico lenguaje C.
Publicado por: Shett en 15 Noviembre 2016, 12:11 pm
Bueno muchas gracias por contestar cuando llegue a mi casa arreglo eso y voy a ver si logro hacer funcionar la parte del while osea el concepto lo tengo pero me confundo al aplicarlo.


Título: Re: Ayuda con problema básico lenguaje C.
Publicado por: engel lex en 15 Noviembre 2016, 16:09 pm
Código
  1. int cat=0,opc=0,vec[3];
  2.     char c;
  3.  
  4.     printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
  5.     scanf ("%c",&c);
  6.  
  7.         while (c=='s')

dentro del while alguna vez le cambias el valor a la variable "c"?
-qué pasa si nunca se lo cambias?
-cómo se lo cambiaste originalmente y como tienes que cambiarlo ahora?


Título: Re: Ayuda con problema básico lenguaje C.
Publicado por: Shett en 15 Noviembre 2016, 18:43 pm
Código
  1. int cat=0,opc=0,vec[3];
  2.     char c;
  3.  
  4.     printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
  5.     scanf ("%c",&c);
  6.  
  7.         while (c=='s')

dentro del while alguna vez le cambias el valor a la variable "c"?
-qué pasa si nunca se lo cambias?
-cómo se lo cambiaste originalmente y como tienes que cambiarlo ahora?


No nunca le cambio el valor a c.
   -Yo suponía que si no se lo cambiaba por ejemplo ingresaba una n, salia del bucle y del programa pero creo que no es así.
Y la otra pregunta no la entendí. Perdón por mi ignorancia.


Título: Re: Ayuda con problema básico lenguaje C.
Publicado por: engel lex en 15 Noviembre 2016, 18:52 pm
Citar
No nunca le cambio el valor a c.
   -Yo suponía que si no se lo cambiaba por ejemplo ingresaba una n, salia del bucle y del programa pero creo que no es así.
Y la otra pregunta no la entendí. Perdón por mi ignorancia.

el bucle valora "c", si "c" no deja de ser 's' jamas saldrá

si cambias c


Código
  1. char c; //<-declaras "c"
  2.  
  3.     printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
  4.     scanf ("%c",&c); //<-cambias "c" por un valor ingresado por el usuario
  5.  
  6.         while (c=='s') //<- se repite hasta que "c" deje de ser 's'


Título: Re: Ayuda con problema básico lenguaje C.
Publicado por: Shett en 15 Noviembre 2016, 19:39 pm
el bucle valora "c", si "c" no deja de ser 's' jamas saldrá

si cambias c


Código
  1. char c; //<-declaras "c"
  2.  
  3.     printf ("\n¿Desea realizar una nueva compra o adquirir otro producto? Presione la tecla s para continuar.");
  4.     scanf ("%c",&c); //<-cambias "c" por un valor ingresado por el usuario
  5.  
  6.         while (c=='s') //<- se repite hasta que "c" deje de ser 's'
Perdon por mi ignorancia pero ¿te referis al nombre de la variable?


Título: Re: Ayuda con problema básico lenguaje C.
Publicado por: engel lex en 15 Noviembre 2016, 19:46 pm
lee el comentario en ese ultimo codigo...

no, no puedes cambiarle el nombre a una variable... al decir cambiar, es cambiar el contenido